IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在命令行快速切换目录

    kimi发表于 2013-08-23 21:35:08
    love 0

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

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

    文章路径找不到,等找到之后添加



沪ICP备19023445号-2号
友情链接