Linux,OS X mark工具(目录跳转工具)

转帖请注明出处  林夕木大大

在命令行里进行一些操作时,经常会遇到在多个目录之间来回切换的情况.这个时候就会很是苦恼.所以在网上搜索一番后总结如下:

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/ -/\t-/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\n")

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\n", $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

转帖请注明出处  林夕木大大

你可能感兴趣的:(linux)