• gtShell 为你常用的目录建立标签并快速跳转


    使用场景: 如果你有很多工作目录,需要每天在这些目录中跳来跳去。那么你就应该试试goShell. 一个使用简单、功能恰到好处的terminal下的小工具。 gtShell支持将常用的一些目录保存为bookmark,提供快速跳转功能。这样你就不需要在使用cd后面跟随一长串的目录名称。 它也支持自动完成,你只需要输入开头的几个字母,然后按tab键就可以自动匹配。 目前源码被我host在github上。

    下面是主要文件gt.sh的源码。

    gt.shgt.sh
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    
    #! /bin/bash
    
    DIRS="$HOME/.gtDirs"
    if test ! -e $DIRS
    then
      touch $DIRS
    fi
    
    gt () {
      case $1 in
          -d)
              temp=`mktemp -t .gtDirs-XXXXXX`
              sed "/^$2=/"d $DIRS > $temp
              mv $temp $DIRS
              rm -f $temp
              ;;
          -a)
              validate_bookmark_name "$@"
              if [ -z "$result" ]; then
                  CURDIR=$PWD
                   echo "$2=$CURDIR" >> $DIRS
              fi
              ;;
          -l)
              cat $DIRS
              ;;
          -h)
              print_usage
              ;;
          *)
              if [ -z $1 ]; then
                  print_usage
              elif [[ ! -z `awk -F '=' '/^'"$1"'=/ {print $2 }' $DIRS` ]]; then
                  cd `awk -F '=' '/^'"$1"'=/ {print $2 }' $DIRS`
                  else
                  echo 'error: bookmark name not found'
    
              fi
    
      esac
    }
    
    #validate names
    function validate_bookmark_name {
      result=""
      if [ -z $2 ]; then
          result='error: bookmark name required!'
          echo $result
      elif [ -z `echo $2 | sed 's/[^A-Za-z0-9_]//g' ` ]; then
          result='error: bookmark name is invalid!'
          echo $result
      fi
    
    }
    
    function print_usage {
          echo  'Usage:'
              echo  '-a <bookmark_name> - Saves the current directory as "bookmark_name"'
              echo  '-d <bookmark_name> - Deletes the bookmark'
              echo  '-l                 - Lists all available bookmarks'
              echo  '-h(-help,--help)   - Lists usage'
              echo  '<bookmark_name>    - Jump to the bookmark'
    }
    
    function _l {
      awk -F '=' ' {print $1} ' $DIRS
    }
    
    
    function _comp {
        local curw
        COMPREPLY=()
        curw=${COMP_WORDS[COMP_CWORD]}
        COMPREPLY=($(compgen -W '`_l`' -- $curw))
        return 0
    }
    
    # ZSH completion command
    function _compzsh {
        reply=($(_l))
    }
    
    
    if [ $ZSH_VERSION ]; then
      compctl -K _compzsh gt
    else
      shopt -s progcomp
      complete -F _comp gt
    fi
    

    安装:

    1. git clone git@github.com:huangbowen521/gtShell.git 或者直接拷贝 gt.sh文件内容。

    2. add gt.sh file path to your ~/.bash_profile or ~/.bashrc file

    3. reload your profile or restart your terminal

    用例:

    • gt -a <bookmark_name> - 保存当前目录的标签为 给定的bookmark_name

    • gt -d <bookmark_name> - 删除给定的标签

    • gt -l - 列除所有标签

    • gt -h - 帮助信息

    • gt <bookmark_name> - 跳转到指定的标签目录

    例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    current_user:~$ cd sourcecode/study/
    current_user:~/sourcecode/study$ gt -a study
    current_user:~/sourcecode/study$ cd ~
    current_user:~$ gt study
    current_user:~/sourcecode/study$ gt -l
    goAgent=/Users/twer/sourcecode/goagent/goagent-goagent-9c1edd3/local
    octopress=/Users/twer/sourcecode/octopress
    goShell=/Users/twer/sourcecode/shell/goShell
    study=/Users/twer/sourcecode/study
    
    1
    2
    3
    4
    5
    
    current_user:~/sourcecode/study$ gt -d study
    current_user:~/sourcecode/study$ gt -l
    goAgent=/Users/twer/sourcecode/goagent/goagent-goagent-9c1edd3/local
    octopress=/Users/twer/sourcecode/octopress
    goShell=/Users/twer/sourcecode/shell/goShell
    
    1
    2
    3
    4
    5
    6
    7
    
    current_user:~/sourcecode/study$ gt -h
    Usage:
    -a <bookmark_name> - Saves the current directory as "bookmark_name"
    -d <bookmark_name> - Deletes the bookmark
    -l                 - Lists all available bookmarks
    -h(-help,--help)   - Lists usage
    <bookmark_name>    - Jump to the bookmark
    
    1
    2
    3
    
    current_user:~/sourcecode/study$ gt go<Tab>
    goAgent  goShell
    current_user:~/sourcecode/study$ gt goShell
    
    作者:黄博文@无敌北瓜
    出处:http://www.cnblogs.com/huang0925
    黄博文的地盘
    本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    kafka集群搭建
    数据导入 xls --》mysql
    Spark --RDD算子
    Spark集群搭建
    【已解决】 IDEA运行spark程序报错:GC overhead limit exceeded?
    Spring Boot 配置 ---02
    Spring Boot 入门 ---01
    Nginx 推流 拉流 --- 点播直播
    【转】JS内置对象方法
    MapReduce 简单数据统计
  • 原文地址:https://www.cnblogs.com/huang0925/p/3109893.html
Copyright © 2020-2023  润新知