源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-02-13 19:07 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:简化shell终端命令输入的脚本式快捷键工具
[b]1.解决的问题[/b] 当你需要一次输入很多个命令的时候,例如一次去多个目录删除文件
[u]复制代码[/u] 代码如下:
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~~ 这个工具就有用啦! [b]2.感性认识[/b] 这个工具是个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就会列出所有的命令。 [img]http://files.jb51.net/file_images/article/201503/20153594556037.png?2015259472[/img] [b]3.理性认识[/b] 如果想加入自定义的命令,找到
[u]复制代码[/u] 代码如下:
cmds=(xxxxx)
的地方,增加一行就可以了。每行就是一个参数和实际命令,可以看到:
[u]复制代码[/u] 代码如下:
# 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的参数(快捷键),第一个空格后是实际运行的命令。其中多个步骤的命令可以做成函数,例如:
[u]复制代码[/u] 代码如下:
updateChrome() {   git pull   cd third_party/WebKit   git pull   gclient sync --nohooks }
如果怕忘记长命令用来干什么,也可以放到函数里,函数名要见名知意或者加注释。 这个脚本可以被其它脚本调用,返回值和被代替的命令相同。 附工具脚本:
[u]复制代码[/u] 代码如下:
#!/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
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部