পুশড, পপড বনাম সিডি, সিডি- ইন ব্যাশ এবং জেডএসে


16

বাশ বনাম zsh এ পুশ / পপড এর আচরণের মধ্যে কি পার্থক্য রয়েছে? এটি zsh সিডিতে মনে হয়, সিডি- পুশ / পপডের মতোই আচরণ করে (যা সিডি করার সময় স্বয়ংক্রিয়ভাবে / পপস ডিরেক্টরি যুক্ত করে) যখন ব্যাশ সিডিতে ডিয়ার স্ট্যাককে প্রভাবিত করে না।

যদি কেউ আমাকে একটি পয়েন্টার দিতে পারে তবে দুর্দান্ত হবে।


আমি শুধু ব্যাশ কথা বলতে পারেন: ব্যবহার cdসেট শেল পরিবর্তনশীল OLDPWDপূর্ববর্তী ডিরেক্টরি, এবং cd -অনুবাদ পরার cd "$OLDPWD"
গ্লেন জ্যাকম্যান

@ এলেনজ্যাকম্যান, ধন্যবাদ এর অর্থ কি বাশ সিডিতে ডাব্লু / পুশড / পপডি করার কিছুই নেই?
ড্রাগনএক্স্লাওয়্যাং

আমি কেবল চেক করেছি, এবং pushdসেটও করেছিOLDPWD
গ্লেন জ্যাকম্যান

এবং ডার্সট্যাক, ফিরে dirsসর্বদা পিডব্লুডিকে প্রথম উপাদান হিসাবে ধরে রাখে
গ্লেন জ্যাকম্যান

হ্যাঁ, তবে সিডি যদি দির স্ট্যাকগুলি স্পর্শ না করে যা ব্যাশ-এ পুশ / পপড দ্বারা পরিচালিত হয় তবে এটিও অনেক অর্থবোধ করে।
ড্রাগনএক্স্লাবাং

উত্তর:


17

এটা নির্ভর করে. ইন zshআপনি নির্ধারণ করতে পারেন cdস্ট্যাকের স্বয়ংক্রিয়ভাবে ডিরেক্টরির পুরানো ডিরেক্টরির ধাক্কা, কিন্তু এটা ডিফল্ট সেটিং নয়।

আমি যতক্ষণ না zshডিফল্ট সেটিংসের সাথে বলতে পারি তার সাথে খুব একই রকম আচরণ করে bash:

  • cd somedir
    • ডিরেক্টরিতে পরিবর্তন করুন somedir
    • মূল ডিরেক্টরিটি সংরক্ষণ করুন OLDPWD
    • সেট PWD="somedir"
    • ডিরেক্টরি স্ট্যাকের শীর্ষ উপাদান (দ্বারা প্রদর্শিত হিসাবে dirs) প্রতিস্থাপন (স্ট্যাকের somedirউপাদানগুলির সংখ্যা পরিবর্তন হয় না) not
  • cd -:
    • ডিরেক্টরিতে পরিবর্তন করুন $OLDPWD
    • এর swap 'র মান PWDএবংOLDPWD
    • প্রতিফলিত করতে ডিরেক্টরি স্ট্যাকের শীর্ষ উপাদানটি পরিবর্তন করুন (নতুন) PWD
  • pushd somedir:
    • ডিরেক্টরিতে পরিবর্তন করুন somedir
    • মূল ডিরেক্টরি সংরক্ষণ করুন OLDPWD
    • সেট PWD="somedir"
    • somedirডিরেক্টরি স্ট্যাকের দিকে ধাক্কা (এক উপাদান দ্বারা এটি প্রসারিত)
  • popd:
    • মূল ডিরেক্টরি সংরক্ষণ করুন OLDPWD
    • ডিরেক্টরি স্ট্যাকের প্রথম উপাদানটি সরান
    • ডিরেক্টরি স্ট্যাকের নতুন শীর্ষ উপাদান ডিরেক্টরি পরিবর্তন করুন
    • PWDডিরেক্টরি স্ট্যাকের নতুন শীর্ষ উপাদান সেট করুন

দ্রষ্টব্য: বর্তমান কর্মরত ডিরেক্টরিটি ডিরেক্টরি স্ট্যাকের একটি উপাদান হিসাবে বিবেচনা করা হয় zshএবং এর মধ্যে পৃথক হয় bash। আমি bashউপরের তালিকাগুলির রেফারেন্স হিসাবে ব্যবহার করেছি ।

  • ইন bashবর্তমান কাজ ডিরেক্টরির ডিরেক্টরির স্ট্যাকের উপরে উপাদান বলে মনে করা হয়। man 1 bashবলেছেন:

    pushd [-n] [dir]

    […] dirডিরেক্টরিতে শীর্ষে স্ট্যাক যুক্ত করে এটি এটিকে নতুন বর্তমান ওয়ার্কিং ডিরেক্টরি হিসাবে তৈরি করে যেন এটি cdবিল্টিনের পক্ষে যুক্তি হিসাবে সরবরাহ করা হয়েছিল । [...]

    মুদ্রণ DIRSTACK( echo ${dirstack[@]}) নিশ্চিত করে যে প্রথম উপাদানটি অভিন্ন $PWD

  • ইন zshবর্তমান কাজ ডিরেক্টরির ডিরেক্টরির স্ট্যাকের অংশ (কিন্তু এখনও দেখানো নয় dirs)। man 1 zshbuiltinsবলেছেন:

    pushd [ -qsLP ] [ arg ]

    […] বর্তমান ডিরেক্টরিটি পরিবর্তন করুন এবং পুরাতন বর্তমান ডিরেক্টরিটিকে ডিরেক্টরি স্ট্যাকের উপরে চাপ দিন। প্রথম আকারে, বর্তমান ডিরেক্টরিটি আর্গে পরিবর্তন করুন। [...]

    মুদ্রণ dirstack( echo ${dirstack[@]}) এবং এর আউটপুটটির সাথে তুলনা করলে dirsদেখানো উচিত যে এটি PWD`ডাইরস্ট্যাকের অংশ নয়।

উভয় শেলের dirsমধ্যে বর্তমান উপাদানটিকে প্রথম উপাদান হিসাবে মুদ্রণ করে। উভয় শেলগুলিতে, সূচকের সাথে ডিরেক্টরি স্ট্যাক উপাদানটি সেই ডিরেক্টরিকে 1বোঝায় যা শেষের আগে বর্তমান ছিল pushd। এর কারণ এটিতে অ্যারেগুলি zshসাধারণত সংখ্যায়ন করা হয় 1, যখন তারা ভিতরে থেকে সংখ্যাযুক্ত 0হয় bash। সুতরাং ব্যবহারিক পার্থক্য সামান্য


উপরে যেমন বলা হয়েছে, এই আচরণটি পরিবর্তন করা যেতে পারে zsh

আপনি যদি AUTO_PUSHDবিকল্পটি zsh( setopt autopushd) এর cd somedirমতো আচরণ করে সেট করে থাকেন pushd somedirতবে পূর্ববর্তী ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে ডিরেক্টরি স্ট্যাকের দিকে ঠেলা যায়। এটি সম্ভবত আপনার মেশিনের ক্ষেত্রে। আপনি setoptডিফল্ট উপায়ে সেট না করা বিকল্পগুলির একটি তালিকা পেতে দৌড়াতে পারেন । দেখুন, autopushdতালিকায় প্রদর্শিত হয়েছে কিনা ।

তবে এটির cd -মতো আচরণে কোনও পরিবর্তন হয় না popd। পরিবর্তে এটি কেবল $PWDডিরেক্টরি স্ট্যাকের দিকে ঠেলা দেয় এবং ডিরেক্টরিটি এতে পরিবর্তন করে $OLDPWD। তার মানে বারবার কল cd -করা আসলে ডিরেক্টরি স্ট্যাক ( ($PWD $OLDPWD $PWD $OLDPWD $PWD …)) বাড়বে । যদি এটি আসলে popdআপনার সিস্টেমে হুবহু আচরণ করে তবে আমি প্রস্তাব দেব যদি cdআসলে বিল্টিন ( whence -v cd) হয়; এটি সম্ভবত একটি উপাধি বা ফাংশন দ্বারা প্রতিস্থাপিত হয়।

ডিরেক্টরি স্ট্যাক AUTO_PUSHDসক্ষম হওয়ার পরিবর্তে দ্রুত বৃদ্ধি পাবে , আপনি DIRSTACKSIZEপছন্দসই সর্বোচ্চ আকারে প্যারামিটার সেট করে এর আকারটিকে সীমাবদ্ধ করতে পারেন । বিকল্পটি
সেট করে আপনি নকলগুলিও প্রতিরোধ করতে পারেন PUSHD_IGNORE_DUPS
আরও বিকল্পের জন্য ম্যানুয়ালটি দেখুন


ডিরেক্টরিটি স্ট্যাকের মাধ্যমে দেখার চেয়ে অন্য উদ্দেশ্য কী dirs?
জেরাস

@ জেরুস এটি পাথটি popdটাইপ করার (বা এমনকি জানার) প্রয়োজন ছাড়াই পূর্বের পরিদর্শন করা ডিরেক্টরিগুলিতে ফিরে যেতে অনুমতি দেয় ।
অ্যাডেফন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.