বর্তমান ডিরেক্টরিটি পুশ / পপ করুন?


66

বাশ দিয়ে কি বর্তমান ওয়ার্কিং ডিরেক্টরিটি ধাক্কা দেওয়ার এবং পপ করার কোনও উপায় আছে? আমি লেখার চেষ্টা করেছি bash;cd dir; ./dostuff;exit;কিন্তু বর্তমান ডিরেক্টরি এখন dir

linux  bash 

উত্তর:


91

আছে pushdএবংpopd

বাশ আপনি যে ডিরেক্টরিগুলি পরিদর্শন করেছেন তার ইতিহাস রাখবে, আপনাকে কেবল জিজ্ঞাসা করতে হবে। বাশ ইতিহাসকে স্ট্যাকের মধ্যে সঞ্চয় করে এবং স্ট্যাকটি পরিচালনা করতে পুশড এবং পপড কমান্ডগুলি ব্যবহার করে।

আরও পড়তে হবে

উদাহরণ:

$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me

1
লিঙ্কটি থেকে উদ্ধৃত অংশpushd Saves the current directory on the top of the directory stack and then cd to dir. With no arguments, pushd exchanges the top two directories.
মাস্টার চিফ

31

কলিং bashএকটি নতুন সাবসেল শুরু করে, যার নিজস্ব ইনপুট রয়েছে; এটি বের না হওয়া অবধি অন্য কোনও কমান্ড চলবে না। প্যারেনস দিয়ে চালানো কমান্ডগুলির চারপাশে নতুন একটি সাবশেল শুরু হবে, তবে এটি এর মধ্যে থাকা কমান্ডগুলি চালিত করবে।

( cd dir ; ./dostuff )

1
উজ্জ্বল! উদ্দেশ্য যখন কেবল কোনও ভিন্ন ডিরেক্টরিতে কমান্ড চালানো হয় (যেমন একটি নির্ভরতা আপডেট করুন) তখন বর্তমানটিতে ফিরে আসুন push
ড্যান ড্যাসকলেসকু

12

আপনার যদি একাধিক স্তরের ডিরেক্টরি ইতিহাসের প্রয়োজন না হয় তবে আপনি এটি করতেও পারেন:

cd foo
# do your stuff in foo
cd -

pushd/ এর সাথে তুলনা করলে popdএর অসুবিধা রয়েছে যে যদি cd fooব্যর্থ হয় তবে আপনি ভুল ডিরেক্টরিতে এসে শেষ করেছেন cd -

(সম্ভবত cd -স্ক্রিপ্টগুলির বাইরের দিক থেকে আরও কার্যকর "" আমি যেখানে ছিলাম সেখানে ফিরে যাই "")


4

আমি আমার ডিরেক্টরি পরিবর্তনের উপর নজর রাখার জন্য উপনাম ব্যবহার করি যাতে 'সিডি' হয়ে যায় কোথাও যেখানে আমি 'সিডি' ব্যবহার করছিলাম সেখানে ফিরে যেতে পারি, বা 'সিডি ..' ইত্যাদি ব্যবহার করে দু'টি ফিরে যেতে পারি;

alias pushdd="pushd \$PWD > /dev/null"
alias cd='pushdd;cd'
alias ssh='ssh -A'
alias soc='source ~/.bashrc'
#below to go back to a previous directory (or more)
alias popdd='popd >/dev/null'
alias cd.='popdd'
alias cd..='popdd;popdd'
alias cd...='popdd;popdd;popdd'
alias cd....='popdd;popdd;popdd;popdd'
#below to remove directories from the stack only (do not 'cd' anywhere)
alias .cd='popd -n +0'
alias ..cd='popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0'

1
এই কোডটি কী করে আপনি আরও বিশদে ব্যাখ্যা করতে পারেন?
bwDraco

যে চালাক। আমার পছন্দ মতো কিছু করার জন্য আমার পুশড এবং পপডের চারপাশে এলিয়াস রয়েছে। আমি ডিরেক্টরি স্ট্যাক সব সময় ব্যবহার করি। আমি লোকদের কোথাও সিডি দেখার ঘৃণা করি এবং তারপরে কেটে পেস্ট করার জন্য পূর্ববর্তী ডিরেক্টরিটি সন্ধান করে ফিরে স্ক্রোল করব। আমি কোটার কারণে আমার হোম ডিরেক্টরিতে আমার বেশিরভাগ কাজ করতে পারি না, তাই আমাকে নেটওয়ার্কে পুল স্টোরেজটি ব্যবহার করতে হবে।
মাইকেল ম্যাথিউজ

1
ওরফ কি ..cdযথেষ্ট শক্ত? দেখে মনে হচ্ছে এটি স্ট্যাক থেকে কেবল শেষ 10 টি আইটেম সরিয়ে ফেলবে।
রেনল্ডসনল্প
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.