为bsah添加书签-实现目录快速跳转
2. 在shell中快速跳转到常用目录
在 Quickly navigate your filesystem from the command-line 中发现了一种将目录加为书签实现快速跳转的好方法.
其实原理很简单,就是将指向目标目录的软链接作为书签,统一存放在一个指定的位置 然后借助 cd -P 命令来跳转到软链接指向的实际目录.
1: 2: export MARKPATH=$HOME/.marks 3: 4: #使用 jump 书签名 跳转到书签指向的目录; 5: function jump { 6: cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1" 7: } 8: 9: #使用 mark 书签名 将当前目录加为书签; 10: function mark { 11: mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1" 12: } 13: 14: #使用 unmark 书签名 删除掉指定的书签. 15: function unmark { 16: rm -i "$MARKPATH/$1" 17: } 18: 19: #使用 marks 会列出所有的书签及其所指向的目录; 20: function marks { 21: ls -l "$MARKPATH" | sed 's/ / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo 22: } 23: 24: #自动补全 25: _completemarks() { 26: local curw=${COMP_WORDS[COMP_CWORD]} 27: local wordlist=$(find $MARKPATH -type l -printf "%f\n") 28: COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw")) 29: return 0 30: } 31: 32: complete -F _completemarks jump unmark
添加到~/.bashrc就行了.