本文最后更新于 4096 天前,其中的信息可能已经有所发展或是发生改变。
今天在微博上看到一个用命令行快速切换目录的文章,比之前自己的解决方案好了非常多,必须记录下来分享下。
每天在命令行下,一大部分的工作都是一遍又一遍的输入 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
文章路径找不到,等找到之后添加
哥用alias
alias更方便
用zsh的autojump插件
+1
oh-my-zsh + autojump 最省事,也最强大
可以用z:https://github.com/rupa/z/blob/master/z.sh 自动记录目录使用频度
mark这命令确实很好用
貌似和不错哦
mark这命令确实很好用,谢谢分享。
挺好
不错的技术博客,多多交流
看起来很不错哦
这命令确实不错,谢谢楼主的分享、
测试下
支持一下同用Typecho博客的人。
😡 😈 神云网络2015版最新免费建站方案 http://www.uzsz.cn
非常实用,另外学习了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
}