当前位置: 首页 > 编程笔记 >

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

顾永福
2023-03-14
本文向大家介绍简化shell终端命令输入的脚本式快捷键工具,包括了简化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终端命令行的常用快捷键详解,包括了Linux终端命令行的常用快捷键详解的使用技巧和注意事项,需要的朋友参考一下 history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !?string? 执行含有string字符串的最新命令 Ctrl+r 然后输入若干字符,开

  • 本文向大家介绍详解Linux命令行快捷键,包括了详解Linux命令行快捷键的使用技巧和注意事项,需要的朋友参考一下 Ctrl+a:光标移到行首。 Ctrl+e:光标移到行尾。 Ctrl+l:清除终端。该快捷操作与在命令行键入clear作用相同。 Ctrl+d:删除光标后一个字符; Ctrl+u:清除当前行。假如在命令行下工作,使用这一快捷操作可以清除从光标处到行首的字符。 Ctrl+Alt+功能键

  • 问题内容: 我前一段时间读过这篇文章,但似乎找不到。我试图找到一个将在终端中执行命令然后输出结果的命令。 例如:脚本将是: 它将在终端中运行该命令的结果 问题答案: 做这件事有很多种方法: 一种简单的方法是使用os模块: 子流程模块可以实现更复杂的事情:例如:

  • Ctrl+r寄存器名称 插入指定寄存器内容 Ctrl+k(2个字符) 输入二合字符 Ctrl+v数字 通过数字编码输入字符 Ctrl+v键位 输入键位的名称

  • stty 命令 stty -echo #禁止将输入信息显示在终端 stty echo #允许输入信息显示在终端,默认显示 tput 命令 tput clear #清空终端 tput civis #光标不可见 tput cnorm #光标可见 read 命令 read name #读取终端输入的值并赋值给 name 变量 echo $name #输出变量值 read userna

  • 为您重复使用的命令行任务设置快捷方式。如果你发现自己需要在命令行中重复输入同样的东西,那么设置命令行快捷方式非常有必要。 TL;DR 使命令行为您工作;创建容易记住和快速键入的别名。 尝试保存 Github dotfiles 项目,共享和同步您的命令行快捷方式。 如何设置快捷方式 创建命令行快捷方式的最简单的方法是将常用命令的别名添加到bashrc文件。 在Mac或Linux上: 从命令行的任何位

  • 本文向大家介绍nginx常用命令放入shell脚本详解,包括了nginx常用命令放入shell脚本详解的使用技巧和注意事项,需要的朋友参考一下 1、创建一个文件夹存放nginx的shell脚本 1)重启nginx的shell脚本 vim reload.sh 2)设置nginx用户对html目录下所有文件读写执行权限的shell脚本 vim setfacl.sh 3)启动nginx进程的shell脚

  • 问题内容: 自从我上次使用Eclipse已经有一段时间了。我曾经喜欢这个方便的快捷键,该快捷键将所有导入添加到源文件的顶部,但是我忘记了它。有谁知道这个捷径是什么? 问题答案: + + (<-‘O’不是零) 注意:此快捷方式还会删除未使用的导入。