Variabel Bash dapat digunakan untuk membuat sistem bookmark. Variabel akan bekerja dengan perintah apa pun dan bash akan tab melengkapi nama variabel. Dalam versi bash yang lebih baru, jika a / ditambahkan ke nama variabel, path yang berisi variabel dapat juga dilengkapi tab.
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).
Untuk kegigihan, deklarasi variabel dapat disimpan dalam file yang bersumber dari .bashrc. Karena file ini adalah skrip bash, ini bisa berisi deklarasi yang merujuk variabel lain, seperti aur="${HOME}/AUR"
, atau yang hanya berjalan di host tertentu if [[ $HOSTNAME == foo ]]; then bar=baz; fi
, yang berguna jika Anda menggunakan kembali file konfigurasi di beberapa host dan pengguna.
Fungsi bash berikut (untuk ditambahkan ke .bashrc, atau bersumber dari itu) memungkinkan bookmark untuk ditambahkan dan dihapus dari file bookmark. Ini cukup baru dan tidak dijamin bebas dari bug.
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
}