今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下。
每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/often-used/directory这样来切换目录,现在利用一个简单的配置可以实现如下效果:
首先进入我的日常工作目录,标记一个书签mark sanguo
cd /Users/kimi/work/123guo/sanguo |
mark sanguo |
以后我再进入这个目录只需要g sanguo即可
g sanguo |
通过输入gs指令来浏览所有的标签
gs |
#app -> /Applications |
#sanguo -> /Users/kimi/work/123guo/sanguo |
#web -> /Library/WebServer/Documents |
实现原理如下
sudo vim /etc/profile |
编辑/etc/profile文件并在尾部添加以下内容后强制保存 wq!
1 # mark 2 export MARKPATH=$HOME/.marks 3 export MARKDEFAULT=sanguo#设置你的默认书签,可以直接输入g跳转 4 5 function g { 6 local m=$1 7 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi 8 cd -P "$MARKPATH/$m" 2>/dev/null || echo "No such mark: $m" 9 } 10 function mark { 11 mkdir -p "$MARKPATH" 12 local m=$1 13 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi 14 rm -f "$MARKPATH/$m" 15 ln -s "$(pwd)" "$MARKPATH/$m" 16 } 17 function unmark { 18 local m=$1 19 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi 20 rm -i "$MARKPATH/$m" 21 } 22 function gs { 23 ls -l "$MARKPATH" | grep ^l | cut -d ‘ ‘ -f 13- 24 } 25 26 _completemarks() { 27 local curw=${COMP_WORDS[COMP_CWORD]} 28 local wordlist=$(ls -l "$MARKPATH" | grep ^l | cut -d ‘ ‘ -f 13) 29 COMPREPLY=($(compgen -W ‘${wordlist[@]}‘ -- "$curw")) 30 return 0 31 } 32 33 complete -F _completemarks g unmark
文章路径找不到,等找到之后添加
时间: 2024-11-08 18:32:25