loading...

在命令行快速切换目录

发布时间:August 23, 2013 分类:Mac

iOS系统安装gcc

iptables: Setting chains to policy ACCEPT: security raw nat[FAILED]filter

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

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

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

Tags: shell


已有 16 条评论 »

  1. nopsky nopsky

    哥用alias

  2. rocky rocky

    alias更方便

  3. 小子 小子

    用zsh的autojump插件

    1. hilojack hilojack

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

  4. the5fire the5fire

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

  5. 蛋蛋の忧伤 蛋蛋の忧伤

    mark这命令确实很好用

  6. 按摩椅哪个牌子好 按摩椅哪个牌子好

    貌似和不错哦

    1. 雨天 雨天

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

  7. aaaa aaaa

    挺好

  8. DH DH

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

  9. 心理软件 心理软件

    看起来很不错哦

  10. 百家乐 百家乐

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

  11. kimi kimi

    测试下

  12. 小偏方 小偏方

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

  13. 神云免费网址 神云免费网址

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

  14. kevincszhang kevincszhang

    非常实用,另外学习了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
    }

添加新评论 »

captcha
请输入验证码