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

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

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就会列出所有的命令。

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

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 “33[0;33;1mexample: input $shName ${cmds[0]%% *} to run ${cmds[0]#* }33[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 “33[0;33;1m$action33[0m”

    # skip shortcut

    shift 1

    eval $action $@

    exit $?

  fi

done

# if no cmd matched, echoHelp

echoHelp
免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容