বাশ দিয়ে কি বর্তমান ওয়ার্কিং ডিরেক্টরিটি ধাক্কা দেওয়ার এবং পপ করার কোনও উপায় আছে? আমি লেখার চেষ্টা করেছি bash;cd dir; ./dostuff;exit;
কিন্তু বর্তমান ডিরেক্টরি এখন dir
।
বাশ দিয়ে কি বর্তমান ওয়ার্কিং ডিরেক্টরিটি ধাক্কা দেওয়ার এবং পপ করার কোনও উপায় আছে? আমি লেখার চেষ্টা করেছি bash;cd dir; ./dostuff;exit;
কিন্তু বর্তমান ডিরেক্টরি এখন dir
।
উত্তর:
আছে pushd
এবংpopd
বাশ আপনি যে ডিরেক্টরিগুলি পরিদর্শন করেছেন তার ইতিহাস রাখবে, আপনাকে কেবল জিজ্ঞাসা করতে হবে। বাশ ইতিহাসকে স্ট্যাকের মধ্যে সঞ্চয় করে এবং স্ট্যাকটি পরিচালনা করতে পুশড এবং পপড কমান্ডগুলি ব্যবহার করে।
উদাহরণ:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
কলিং bash
একটি নতুন সাবসেল শুরু করে, যার নিজস্ব ইনপুট রয়েছে; এটি বের না হওয়া অবধি অন্য কোনও কমান্ড চলবে না। প্যারেনস দিয়ে চালানো কমান্ডগুলির চারপাশে নতুন একটি সাবশেল শুরু হবে, তবে এটি এর মধ্যে থাকা কমান্ডগুলি চালিত করবে।
( cd dir ; ./dostuff )
আপনার যদি একাধিক স্তরের ডিরেক্টরি ইতিহাসের প্রয়োজন না হয় তবে আপনি এটি করতেও পারেন:
cd foo
# do your stuff in foo
cd -
pushd
/ এর সাথে তুলনা করলে popd
এর অসুবিধা রয়েছে যে যদি cd foo
ব্যর্থ হয় তবে আপনি ভুল ডিরেক্টরিতে এসে শেষ করেছেন cd -
।
(সম্ভবত cd -
স্ক্রিপ্টগুলির বাইরের দিক থেকে আরও কার্যকর "" আমি যেখানে ছিলাম সেখানে ফিরে যাই "")
আমি আমার ডিরেক্টরি পরিবর্তনের উপর নজর রাখার জন্য উপনাম ব্যবহার করি যাতে 'সিডি' হয়ে যায় কোথাও যেখানে আমি 'সিডি' ব্যবহার করছিলাম সেখানে ফিরে যেতে পারি, বা 'সিডি ..' ইত্যাদি ব্যবহার করে দু'টি ফিরে যেতে পারি;
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'
..cd
যথেষ্ট শক্ত? দেখে মনে হচ্ছে এটি স্ট্যাক থেকে কেবল শেষ 10 টি আইটেম সরিয়ে ফেলবে।
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.