অন্য উত্তর থেকে কমান্ডলাইনফু সমাধানটি ব্যবহার করবেন না : এটি অনিরাপদ এবং অদক্ষ ²² পরিবর্তে, আপনি যদি ব্যবহার করছেন তবে bash
কেবল নীচের ফাংশনগুলি ব্যবহার করুন। এগুলিকে অবিরাম করার জন্য এগুলি আপনার নিজের মধ্যে .োকান .bashrc
। নোট করুন যে আমি গ্লোব অর্ডারটি ব্যবহার করি কারণ এটি অন্তর্নির্মিত এবং সহজ। সাধারণত উল্লিখিত glob অর্ডার হয় যদিও অধিকাংশ অঞ্চলের ক্ষেত্রে এটি বর্ণানুক্রমিক। আপনি যদি পরবর্তী বা পূর্ববর্তী ডিরেক্টরিতে যেতে না চান তবে আপনি একটি ত্রুটি বার্তা পাবেন। বিশেষত, আপনি যদি ত্রুটিটি দেখতে পাবেন তবে আপনি রুট ডিরেক্টরিতে থাকার সময় next
বা ।prev
/
## bash and zsh only!
# functions to cd to the next or previous sibling directory, in glob order
prev () {
# default to current directory if no previous
local prevdir="./"
local cwd=${PWD##*/}
if [[ -z $cwd ]]; then
# $PWD must be /
echo 'No previous directory.' >&2
return 1
fi
for x in ../*/; do
if [[ ${x#../} == ${cwd}/ ]]; then
# found cwd
if [[ $prevdir == ./ ]]; then
echo 'No previous directory.' >&2
return 1
fi
cd "$prevdir"
return
fi
if [[ -d $x ]]; then
prevdir=$x
fi
done
# Should never get here.
echo 'Directory not changed.' >&2
return 1
}
next () {
local foundcwd=
local cwd=${PWD##*/}
if [[ -z $cwd ]]; then
# $PWD must be /
echo 'No next directory.' >&2
return 1
fi
for x in ../*/; do
if [[ -n $foundcwd ]]; then
if [[ -d $x ]]; then
cd "$x"
return
fi
elif [[ ${x#../} == ${cwd}/ ]]; then
foundcwd=1
fi
done
echo 'No next directory.' >&2
return 1
}
¹ এটি সমস্ত সম্ভাব্য ডিরেক্টরি নাম হ্যান্ডেল করে না। পার্সিং ls
আউটপুট কখনই নিরাপদ হয় না ।
² cd
সম্ভবত ভয়ঙ্করভাবে দক্ষ হওয়ার দরকার নেই, তবে 6 টি প্রক্রিয়াটি কিছুটা অতিরিক্ত।
[[ -n $foundcwd ]]
তবে আপনার উত্তরটি ব্যাশ এবং zsh এর অধীনে কাজ করবে সমানভাবে। খুব সুন্দর, এবং এটি লেখার জন্য আপনাকে ধন্যবাদ।