বুক ভেরিয়েবলগুলি বুকমার্কিং সিস্টেম তৈরি করতে ব্যবহার করা যেতে পারে। ভেরিয়েবলগুলি যে কোনও কমান্ডের সাথে কাজ করবে এবং ব্যাশটি চলক নামটি সম্পূর্ণ করবে। ব্যাশের নতুন সংস্করণগুলিতে, যদি / চলক নামের সাথে যুক্ত করা হয় তবে চলকটির যে পথটি রয়েছে তা ট্যাবটিও সম্পন্ন হতে পারে।
mydir=/home/chris/dir
ls $my # Tab completion works on variable name.
ls $mydir/ # Tab completion is equivalent to that with ls /home/chris/dir/
# (doesn't work in older versions of bash).
অধ্যবসায়ের জন্য, পরিবর্তনশীল ঘোষণাগুলি একটি ফাইলের মধ্যে রাখা যেতে পারে যা .bashrc থেকে উত্পন্ন হয়। যেহেতু এই ফাইলটি ব্যাশ স্ক্রিপ্ট, তাই এটিতে এমন ঘোষণাগুলি থাকতে পারে যা অন্যান্য ভেরিয়েবলগুলি উল্লেখ করে aur="${HOME}/AUR"
, বা কেবলমাত্র কয়েকটি হোস্টে চালিত হয় if [[ $HOSTNAME == foo ]]; then bar=baz; fi
, এটি দরকারী যদি আপনি একাধিক হোস্ট এবং ব্যবহারকারীদের মধ্যে কনফিগারেশন ফাইলগুলি পুনরায় ব্যবহার করেন।
নিম্নলিখিত বাশ ফাংশন (.bashrc এ যোগ করা বা এটি থেকে উত্সাহিত) বুকমার্কগুলিকে বুকমার্ক ফাইল থেকে যুক্ত এবং সরানোর অনুমতি দেয়। এটি মোটামুটি নতুন এবং ত্রুটিমুক্ত থাকার নিশ্চয়তা নেই।
bookmark_file=~/.bookmarks
source "$bookmark_file"
bm() {
usage='Usage:
bm add <name> <path> Create a bookmark for path.
bm add <name> Create a bookmark for the current directory.
bm update Source the bookmark file.
bm remove <name> Remove a bookmark'
case $1 in
add)
local path
if [[ $# -eq 2 ]]; then
path=.
elif [[ $# -eq 3 ]]; then
if [[ -e $3 ]]; then
path="$3"
else
echo "bm: ${3}: No such file or directory."
return 1
fi
else
echo "$usage"
return 1
fi
if declare | grep "^${2}=" > /dev/null; then
echo "bm: The name $2 is in use."
return 1
fi
path=$(readlink -f "$path")
echo ${2}=\""$path"\" >> "$bookmark_file"
eval ${2}=\""$path"\"
return 0
;;
update)
if [[ $# -eq 1 ]]; then
source "$bookmark_file"
return 0
fi
;;
remove)
if [[ $# -eq 2 ]]; then
unset $2
local contents=$(grep -v "^${2}=" "$bookmark_file")
echo "$contents" > "${bookmark_file}.tmp"
rm -f "$bookmark_file"
mv "${bookmark_file}.tmp" "$bookmark_file"
return 0
fi
;;
esac
echo "$usage"
return 1
}