আমি এটি করার জন্য একটি স্ক্রিপ্ট লিখেছিলাম xyzzy
:
#!/bin/bash
i="$1"
i=$((${i//[^0-9]/}))
i="$(($i-1+0))"
b="$2"
b=$((${b//[^0-9]/}))
b="$(($b-1+0))"
if [ -z "$XYZZY_INDEX" ]; then
XYZZY_INDEX="$((-1))"
fi
if [ ! -f "/tmp/xyzzy.list" ]; then
touch /tmp/xyzzy.list
chmod a+rw /tmp/xyzzy.list
fi
readarray -t MYLIST < /tmp/xyzzy.list
showHelp(){
read -r -d '' MYHELP <<'EOB'
xyzzy 1.0
A command for manipulating escape routes from grues. Otherwise known as a useful system admin
tool for storing current directories and cycling through them rapidly. You'll wonder why this
wasn't created many moons ago.
Usage: xyzzy [options]
help/-h/--help Show the help.
this/-t/--this Store the current directory in /tmp/xyzzy.list
begone/-b/--begone Clear the /tmp/xyzzy.list file. However, succeed with a number and
it clears just that item from the stored list.
show/-s/--show Show the list of stored directories from /tmp/xyzzy.list
. # Use a number to 'cd' to that directory item in the stored list. This syntax is odd:
. xyzzy 2
...would change to the second directory in the list
. [no options] Use the command alone and it cd cycles through the next item in the stored
list, repeating to the top when it gets to the bottom. The dot and space before xyzzy
is required in order for the command to run in the current shell and not a subshell:
. xyzzy
Note that you can avoid the odd dot syntax by adding this to your ~/.bashrc file:
alias xyzzy=". xyzzy"
and then you can do "xyzzy" to cycle through directories, or "xyzzy {number}" to go to a
specific one.
May you never encounter another grue.
Copyright (c) 2016, Mike McKee <https://github.com/volomike>
EOB
echo -e "$MYHELP\n"
}
storeThis(){
echo -e "With a stroke of your wand, you magically created the new escape route: $PWD"
echo "$PWD" >> /tmp/xyzzy.list
chmod a+rw /tmp/xyzzy.list
}
begoneList(){
if [[ "$b" == "-1" ]]; then
echo "POOF! Your escape routes are gone. We bless your soul from the ever-present grues!"
>/tmp/xyzzy.list
chmod a+rw /tmp/xyzzy.list
else
echo -n "Waving your wand in the dark, you successfully manage to remove one of your escape routes: "
echo "${MYLIST[${b}]}"
>/tmp/xyzzy.list
chmod a+rw /tmp/xyzzy.list
for x in "${MYLIST[@]}"; do
if [[ ! "$x" == "${MYLIST[${b}]}" ]]; then
echo "$x" >> /tmp/xyzzy.list
fi
done
fi
}
showList(){
echo -e "These are your escape routes:\n"
cat /tmp/xyzzy.list
}
cycleNext(){
MAXLINES=${#MYLIST[@]}
XYZZY_INDEX=$((XYZZY_INDEX+1))
if [[ $XYZZY_INDEX > $(($MAXLINES - 1)) ]]; then
XYZZY_INDEX=0
fi
MYLINE="${MYLIST[${XYZZY_INDEX}]}"
cd "$MYLINE";
}
switchDir(){
MYLINE="${MYLIST[${i}]}"
cd "$MYLINE";
}
if [[ "$@" == "" ]];
then
cycleNext
fi;
while [[ "$@" > 0 ]]; do case $1 in
help) showHelp;;
--help) showHelp;;
-h) showHelp;;
show) showList;;
-s) showList;;
--show) showList;;
list) showList;;
this) storeThis;;
--this) storeThis;;
-t) storeThis;;
begone) begoneList;;
--begone) begoneList;;
*) switchDir;;
esac; shift
done
export XYZZY_INDEX
আমি এটি যেভাবে ব্যবহার করি তা হ'ল /usr/bin
ফোল্ডারে এবং তারপরে অনুলিপি করা chmod a+x
। তারপরে, আমি ~/.bashrc
নীচে এই লাইনগুলি অন্তর্ভুক্ত করতে আমার রুট এবং ব্যবহারকারী অ্যাকাউন্ট ফাইলটি সম্পাদনা করছি :
alias xyzzy='. xyzzy'
alias xy='. xyzzy'
'Xy' দ্রুত টাইপ করার জন্য কমান্ডের একটি সংক্ষিপ্ত রূপ।
তারপরে, আমি বর্তমান ডিরেক্টরিটি তালিকায় রেখে দিতে পারি ...
xyzzy this
... এবং প্রয়োজনীয় হিসাবে পুনরাবৃত্তি। আমার এই ডিরেক্টরিগুলি আমার প্রয়োজনীয় ডিরেক্টরিগুলি পূরণ করার পরে, আমি কম্পিউটারটি পুনরায় বুট না করা পর্যন্ত তারা সেখানে থাকবে কারণ যখন / tmp আবার সাফ হয়ে যায়। আমি তখন টাইপ করতে পারি ...
xyzzy show
... বর্তমানে সংরক্ষিত ডিরেক্টরি তালিকা করতে। ডিরেক্টরিতে স্যুইচ করার জন্য আমার দুটি পছন্দ আছে। একটি বিকল্প হ'ল সূচি দ্বারা পথটি নির্দিষ্ট করা (এবং এটি 1-ভিত্তিক সূচক) এর মতো:
xyzzy 2
... যা তালিকার দ্বিতীয় আইটেম ডিরেক্টরিতে স্যুইচ করবে। অথবা, আমি সূচক নম্বরটি ছেড়ে দিতে এবং ঠিক করতে পারি:
xyzzy
... এটি আমার প্রয়োজন অনুসারে প্রতিটি ডিরেক্টরিতে লুপ করা যায়। আরও কমান্ডের জন্য আপনি টাইপ করুন:
xyzzy help
অবশ্যই, আমি যুক্ত করা মূর্খ প্রতিধ্বনি বিবরণ দিয়ে কাজ আরও মজাদার।
নোট করুন যে জাইজি কোলোসাল ক্যাভ টেক্সট অ্যাডভেঞ্চারের একটি রেফারেন্স , যেখানে গ্রাইস এড়ানোর জন্য xyzzy টাইপ করা আপনাকে গেমের দুটি কক্ষের মধ্যে স্যুইচ করতে দেয়।
$CDPATH
সম্ভবত?