在命令行快速切换目录
本文最后更新于 4138 天前,其中的信息可能已经有所发展或是发生改变。

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

每天在命令行下,一大部分的工作都是一遍又一遍的输入 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. nopsky
    11 年前
    2013-9-09 22:11:05

    哥用alias

  2. rocky
    11 年前
    2013-11-10 17:31:10

    alias更方便

  3. 11 年前
    2013-11-17 10:33:35

    用zsh的autojump插件

    • 小子
      10 年前
      2014-8-26 16:33:07

      +1
      oh-my-zsh + autojump 最省事,也最强大

  4. 11 年前
    2013-11-20 12:07:20

    可以用z:https://github.com/rupa/z/blob/master/z.sh 自动记录目录使用频度

  5. 11 年前
    2013-12-03 21:52:24

    mark这命令确实很好用

  6. 11 年前
    2013-12-14 15:47:31

    貌似和不错哦

    • 按摩椅哪个牌子好
      11 年前
      2014-6-04 11:19:54

      mark这命令确实很好用,谢谢分享。

  7. aaaa
    11 年前
    2013-12-18 14:19:24

    挺好

  8. 11 年前
    2014-1-21 9:57:05

    不错的技术博客,多多交流

  9. 11 年前
    2014-4-03 15:45:46

    看起来很不错哦

  10. 11 年前
    2014-4-25 10:15:06

    这命令确实不错,谢谢楼主的分享、

  11. 博主
    10 年前
    2014-7-15 17:08:03

    测试下

  12. 10 年前
    2014-8-20 0:40:52

    支持一下同用Typecho博客的人。

  13. 10 年前
    2014-9-04 22:15:48

    😡 😈 神云网络2015版最新免费建站方案 http://www.uzsz.cn

  14. kevincszhang
    10 年前
    2014-12-03 12:19:03

    非常实用,另外学习了complete的功能。根据我实际的需要又增加了export到环境变量的函数,总之谢谢博主分享。

    function expm {
    local m=$1
    if [ “$m” = “” ]; then m=$MARKDEFAULT; fi
    ls “$MARKPATH/$m” >/dev/null 2>&1
    if [[ “$?” == “0” ]];then
    local var=`ls -l –time-style=long-iso “$MARKPATH” | grep ^l | cut -d ‘ ‘ -f 9- | grep -w $m | awk -F ‘->’ ‘{print “export “$1″=”$2″;”}’ | sed ‘s/ = /=/g’`
    for i in “$var”;do
    echo “$i”
    eval $i
    done
    else
    echo “No such mark: $m”
    fi
    }

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇