IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

在命令行快速切换目录

平凡的世界 2013-08-28 22:22:29 累计浏览 6,790 次
本机暂存

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

   每天在命令行下,一大部分的工作都是一遍又一遍的输入 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. 科技爱好者周刊(第 401 期):如何赚到10亿美元 (2026-06-26 08:05:38)
  2. 如何做决策 - 从 Go 的一个 issue 说起 (2026-06-26 08:00:00)
  3. Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)

查看更多 开发者 文章 →

建议继续学习

  1. Git常用命令备忘 (累计阅读 54,699)
  2. Bash的模式和配置文件加载 (累计阅读 24,409)
  3. 简明Vim练级攻略 (累计阅读 22,273)
  4. 28个Unix/Linux的命令行神器 (累计阅读 16,791)
  5. 我常用的主机监控shell脚本 (累计阅读 13,430)
  6. find命令的一点注意事项 (累计阅读 11,864)
  7. 100个常用的linux命令 (累计阅读 11,607)
  8. Linux命令行里的“瑞士军刀” (累计阅读 11,584)
  9. 每个程序员都应该知道的8个Linux命令 (累计阅读 10,745)
  10. colortail,让 tail 命令绚丽起来 (累计阅读 10,259)