আমি একবার অনুরূপ উদ্দেশ্যে একটি দরকারী স্ক্রিপ্ট তৈরি করেছি, ফাইন্ড -এন-সিডির জন্য একটি ফাংশন এফসিডি দিয়ে ।
আপনি টাইপ করুন fcd foo
এবং 3 টি জিনিস ঘটতে পারে:
- এরকম কোনও ডিরেক্টরি foo পাওয়া যায় নি, তারপরে এটি ফিরে আসে
"no such directory " $1
- একটি ফাইল পাওয়া যায়: এটি ডিরেক্টরি (বা কেবল একটি ফাইল) কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে এটি সেখানে সিডি করে।
- একাধিক ফাইল পাওয়া যায় - তারপরে একটি নির্বাচন উপস্থাপন করা হয়, যেখানে আপনি কেবল নির্বাচনের সংখ্যা টাইপ করেন (বা প্রত্যাবর্তনের জন্য একটি বিশেষ সংখ্যা)।
এটি একই রকম যে এটি আপনাকে পুরো পাথটি টাইপ করার দরকার নেই, তবে আপনি স্পষ্টভাবে ফাংশনটি কল করেছেন।
#!/bin/bash
#
# find cd. For input foo, find all directories .../.../foo
# GPLv3 Stefan Wagner (2010, 2012)
#
# doesn't handle blanks in directory names gracefully.
#
fcd ()
{
list=$(locate $1 | egrep "/$1$")
count=$(echo $list | wc -w )
case $count in
0)
echo "unknown directory: "$1 && return
# could search for partial matches Doc => Documentation
;;
1)
if [[ -d "$list" ]]; then
echo "$list";
cd "$list";
else
echo "not a directory: $1"
fi
;;
*)
select directory in $list "/exit/"
do
if [[ "$directory" = "/exit/" ]]; then break; fi
if [[ -d "$directory" ]]; then
echo "$directory";
cd "$directory";
break
else
echo "not a directory: "$1
fi
done
;;
esac
}
আপনাকে source
ফাংশনটি ( source fcd.sh
| . fcd.sh
) করতে হবে এবং এটিকে স্ক্রিপ্ট হিসাবে কল করতে পারবেন না, কারণ cd
অন্যথায় কেবল স্ক্রিপ্টের প্রসঙ্গেই ঘটবে এবং সমাপ্তির পরে আপনি তত্ক্ষণাত আপনার প্রারম্ভিক মন্দিরে ফিরে আসবেন।
যেহেতু এটির সাথে কাজ করে locate
, ডিরেক্টরিগুলি অনুসন্ধানে এটি বেশ দ্রুত (তবে সর্বদা আপ টু ডেট নয়)।
এটি ডিরেক্টরিতে ফাঁকাভাবে নাম হিসাবে পরিচালনা করে না। সমস্যার সমাধানের যদি আপনার কাছে সমাধান থাকে তবে আমি খুশি হব।
shopt -s autocd
এটি কমান্ড লাইনে টাইপ করেছি। এখন আমি কেবল ডিরেক্টরি নাম লিখতে শুরু করতে এবং স্বয়ংক্রিয়রূপে ব্যবহার করতে পারি এবং তারপরে ফিরে এবং শেলটিকে ডিরেক্টরিতে টিপতে পারিcd
। খুবই ভাল !