IT技术博客大学习 共学习 共进步

在命令行快速切换目录

平凡的世界 2013-08-28 22:22:29 浏览 6,663 次

   今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下。

   每天在命令行下,一大部分的工作都是一遍又一遍的输入 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!

# mark
export MARKPATH=$HOME/.marks
export MARKDEFAULT=sanguo#设置你的默认书签,可以直接输入g跳转

function g {
   local m=$1
   if [ "$m" = "" ]; then m=$MARKDEFAULT; fi
   cd -P "$MARKPATH/$m" 2>/dev/null || echo "No such mark: $m"
}
function mark {
   mkdir -p "$MARKPATH"
   local m=$1
   if [ "$m" = "" ]; then m=$MARKDEFAULT; fi
   rm -f "$MARKPATH/$m"
   ln -s "$(pwd)" "$MARKPATH/$m"
}
function unmark {
   local m=$1
   if [ "$m" = "" ]; then m=$MARKDEFAULT; fi
   rm -i "$MARKPATH/$m"
}
function gs {
   ls -l "$MARKPATH" | grep ^l | cut -d ' ' -f 13-
}

_completemarks() {
   local curw=${COMP_WORDS[COMP_CWORD]}
   local wordlist=$(ls -l "$MARKPATH" | grep ^l | cut -d ' ' -f 13)
   COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw"))
   return 0
}

complete -F _completemarks g unmark

建议继续学习

  1. 28个Unix/Linux的命令行神器 (阅读 16,581)
  2. 高效Linux用户需要了解的命令行技能 (阅读 12,701)
  3. 命令行画图工具gnuplot用法入门 (阅读 11,560)
  4. Linux命令行里的“瑞士军刀” (阅读 11,440)
  5. 完全用命令行工作 -- 一年后的思考 (阅读 7,342)
  6. perl模块Getopt::Std用法及实例-从命令行读取参数模块 (阅读 6,922)
  7. Perl命令行常见用法及技巧 (阅读 5,821)
  8. 开启命令行下的社交 (阅读 4,980)
  9. Perl 命令行参数 (阅读 4,120)
  10. Firebug Console API 与命令行 (阅读 4,020)