• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    简化shell终端命令输入的脚本式快捷键工具

    1.解决的问题

    当你需要一次输入很多个命令的时候,例如一次去多个目录删除文件

    复制代码 代码如下:

    cd dir1
    rm file1.temp
    cd ../../dir2
    rm -rf dir3

    当你懒得输入一个好长的命令或者直接就记不住那么长的命令的时候,例如生成ctags
    ctags --languages=C++ --exclude=third_party --exclude=.git --exclude=build --exclude=out -R -f .tags

    当你想要个类似快捷键来一键搞定重复的事情又懒得写好多脚本的时候,
    duang~~ 这个工具就有用啦!

    2.感性认识

    这个工具是个shell脚本,附在本文末尾,复制整个脚本源码,在本地保存为rew.sh,放到$PATH下,加上chmod +x权限。
    文件名命名可以按喜好改。r e w 可以用一只左手输入完毕,然后tab键就出.sh了,我感觉挺好的。

    前面所说的复杂操作就变成了这么简单:

    一次去几个目录删除文件,只需要rew.sh d
    如果想指定起始目录,还可以再带参数rew.sh d dir_path

    生成ctags,只需要rew.sh ct

    如果忘了这个脚本有什么功能,只需要不带参数运行crt.sh就会列出所有的命令。

    3.理性认识

    如果想加入自定义的命令,找到

    复制代码 代码如下:

    cmds=(xxxxx)

    的地方,增加一行就可以了。每行就是一个参数和实际命令,可以看到:
    复制代码 代码如下:

    # defines commands here,format:
    # shortcut|one space|action
    cmds=(
      'w ninja -C out/Debug android_webview_apk'
      'gyp build/gyp_chromium'
      'd gdb -ex=r --args out/Debug/chrome --no-sandbox http://100.84.44.189'
      'ct ctags --languages=C++ --exclude=third_party --exclude=.git --exclude=build --exclude=out -R -f .tags'
      # 'e echo example to show this can be commentted'
      'r ninja -C out/Debug chrome_shell_apk'
      'u updateChrome'
      't testChromeShellMemory'
      'o openUrlInCAWShell'
    )

    也就是,第一个空格前是rew.sh的参数(快捷键),第一个空格后是实际运行的命令。其中多个步骤的命令可以做成函数,例如:

    复制代码 代码如下:

    updateChrome() {
      git pull
      cd third_party/WebKit
      git pull
      gclient sync --nohooks
    }

    如果怕忘记长命令用来干什么,也可以放到函数里,函数名要见名知意或者加注释。

    这个脚本可以被其它脚本调用,返回值和被代替的命令相同。

    附工具脚本:

    复制代码 代码如下:

    #!/bin/bash
    #author liuhx 2015/03/03 http://blog.csdn.net/hursing

    # if including multiple steps, combine them into function
    updateChrome() {
      git pull
      cd third_party/WebKit
      git pull
      gclient sync --nohooks
    }

    testChromeShellMemory() {
      ps=`adb shell ps | grep org.chromium.chrome.shell`
      rsss=`echo "$ps" | awk '{print $5;}'`
      echo "$rsss"
      pids=`echo "$ps" | awk '{print $2;}'`
      for p in $pids; do
        adb shell dumpsys meminfo $p | grep TOTAL | awk '{print $2;}'
      done
    }

    openUrlInCAWShell() {
      # $1 should be url
      adb shell am start -a android.intent.action.VIEW -n com.caw.webkit.test/.BrowserActivity -e policy UCM_CURRENT_WINDOW -d $1
    }

    # defines commands here,format:
    # shortcut|one space|action
    cmds=(
      'w ninja -C out/Debug android_webview_apk'
      'gyp build/gyp_chromium'
      'd gdb -ex=r --args out/Debug/chrome --no-sandbox http://100.84.44.189'
      'ct ctags --languages=C++ --exclude=third_party --exclude=.git --exclude=build --exclude=out -R -f .tags'
      # 'e echo example to show this can be commentted'
      'r ninja -C out/Debug chrome_shell_apk'
      'u updateChrome'
      't testChromeShellMemory'
      'o openUrlInCAWShell'
    )

    echoHelp() {
      for ((i = 0; i ${#cmds[@]}; i++)); do
        echo "${cmds[$i]}"
      done
      shName=`basename $0`
      echo -e "\033[0;33;1mexample: input '$shName ${cmds[0]%% *}' to run '${cmds[0]#* }'\033[0m"
    }

    if [[ $# -eq 0 ]]; then
      echoHelp
      exit 255
    fi

    for ((i = 0; i ${#cmds[@]}; i++)); do
      cmd=${cmds[$i]}
      shortcut=${cmd%% *}
      if [[ "$shortcut"x == "$1"x ]]; then
        action=${cmd#* }
        echo -e "\033[0;33;1m$action\033[0m"
        # skip shortcut
        shift 1
        eval $action $@
        exit $?
      fi
    done

    # if no cmd matched, echoHelp
    echoHelp

    您可能感兴趣的文章:
    • linux shell命令的常用快捷键
    • Windows Powershell 快捷键介绍
    • Linux下Shell编程快捷键大全(日常整理)
    上一篇:Shell脚本实现删除邮件队列
    下一篇:Ubuntu服务器配置apache2.4的限速功能shell脚本分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    简化shell终端命令输入的脚本式快捷键工具 简化,shell,终端,命令,输入,