Biến Bash có thể được sử dụng để tạo một hệ thống đánh dấu. Các biến sẽ hoạt động với bất kỳ lệnh nào và bash sẽ hoàn thành tên biến. Trong các phiên bản mới hơn của bash, nếu a / được gắn vào tên biến, đường dẫn của biến chứa cũng có thể được hoàn thành.
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).
Để duy trì, các khai báo biến có thể được giữ trong một tệp có nguồn gốc từ .bashrc. Vì tệp này là tập lệnh bash, nên nó có thể chứa các khai báo tham chiếu các biến khác, chẳng hạn như aur="${HOME}/AUR"
, hoặc chỉ chạy trên một số máy chủ nhất định if [[ $HOSTNAME == foo ]]; then bar=baz; fi
, rất hữu ích nếu bạn sử dụng lại tệp cấu hình trên nhiều máy chủ và người dùng.
Hàm bash sau (sẽ được thêm vào .bashrc hoặc có nguồn gốc từ nó) cho phép thêm dấu trang vào và xóa khỏi tệp dấu trang. Nó là khá mới và không được bảo đảm là không có lỗi.
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
}