转帖请注明出处 林夕木大大
在命令行里进行一些操作时,经常会遇到在多个目录之间来回切换的情况.这个时候就会很是苦恼.所以在网上搜索一番后总结如下:
Ubuntu/CentOS:
编辑 .bash_profile(或.profile)
添加如下内容:
1 export MARKPATH=$HOME/.marks 2 3 #mark 在你想马克的目录 : mark 别名 4 function mark { 5 mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1" 6 } 7 8 #jump 在任意目录跳转到已经mark的目录 : jump 别名 9 function jump { 10 cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1" 11 } 12 13 #unmark 在任意目录删除已经mark的目录 : unmark 别名 14 function unmark { 15 rm -i "$MARKPATH/$1" 16 17 # 使用下面这句在删除时没有提醒 18 # rm -rf "$MARKPATH/$1" 19 } 20 21 #marks 显示出所有mark的目录 22 function marks { 23 ls -l "$MARKPATH" | sed 's/ / /g' | cut -d' ' -f9- | sed 's/ -/ -/g' && echo 24 } 25 26 27 28 #此处的功能是 使用 jump/unmark + 双击tab键 提示已经mark的目录 29 _completemarks() { 30 local curw=${COMP_WORDS[COMP_CWORD]} 31 local wordlist=$(find $MARKPATH -type l -printf "%f ") 32 COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw")) 33 return 0 34 } 35 complete -F _completemarks jump unmark
OS X
编辑 .bash_profile(或.profile)
添加如下内容:
1 export MARKPATH=$HOME/.marks 2 3 #mark 在你想马克的目录 : mark 别名 4 function mark { 5 mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1" 6 } 7 8 #jump 在任意目录跳转到已经mark的目录 : jump 别名 9 function jump { 10 cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1" 11 } 12 13 #unmark 在任意目录删除已经mark的目录 : unmark 别名 14 function unmark { 15 rm -i "$MARKPATH/$1" 16 17 # 使用下面这句在删除时没有提醒 18 # rm -rf "$MARKPATH/$1" 19 } 20 21 #marks 显示出所有mark的目录 22 function marks { 23 ls -l "$MARKPATH" | tail -n +2 | sed 's/ / /g' | cut -d' ' -f9- | awk -F ' -> ' '{printf "%-10s -> %s ", $1, $2}' 24 } 25 26 #此处的功能是 使用 jump/unmark + 双击tab键 提示已经mark的目录 27 _completemarks() { 28 local curw=${COMP_WORDS[COMP_CWORD]} 29 local wordlist=$(find $MARKPATH/ -type l -exec stat -f "%N" {} ; | sed 's/^.*/// /g' | sed 's/ //g') 30 COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw")) 31 return 0 32 } 33 complete -F _completemarks jump unmark
相关网址: http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html
转帖请注明出处 林夕木大大