简化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

(0)

相关推荐

  • linux shell命令的常用快捷键

    Ctrl + a 切换到命令行开始 Ctrl + e 切换到命令行末尾 Ctrl + l 清除屏幕内容 Ctrl + u 清除剪切光标之前的内容 Ctrl + k 剪切清除光标之后的内容 Ctrl + y 复制剪切板里的内容 Ctrl + h 类似于退格键 Ctrl + r 在历史命令中查找 (这个非常好用,输入关键字就调出以前的命令了) Ctrl + c 终止命令 Ctrl + d 退出shell Ctrl + z 转入后台运行.. alt键比较少用,因为很多地方与远程登陆工具是有冲突的..

  • Linux下Shell编程快捷键大全(日常整理)

    有时候,我们需要在 Bash 中重复执行先前的命令.你当然可以使用上方向键来查看之前曾经运行过的命令.但这里有一些更好的方式,例如,数量掌握以下的快捷键. 1) !!:重复执行上一条指令 2) !a:重复执行上一条以a为首的指令 3) !number:重复执行上一条在history表中记录号码为number的指令 4) !-number:重复执行前第number条指令 5) !$:表示获得上一条命令中的最后一项内容 6) 用Ctrl + r 组合键来进入历史搜索模式在history表中查询某条过

  • Windows Powershell 快捷键介绍

    Powershell的快捷键和cmd,linux中的shell,都比较像. ALT+F7  清除命令的历史记录 PgUp PgDn  显示当前会话的第一个命令和最后一个命令 Enter  执行当前命令 End  将光标移至当前命令的末尾 Del  从右开始删除输入的命令字符 Esc  清空当前命令行 F2  自动补充历史命令至指定字符 (例如历史记录中存在Get-Process,按F2,提示"Enter char to copy up to",键入's',自动补齐命令:Get-Proc

  • 简化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 当你想要个类似快捷键

  • 简化Linux的命令输入

    在LINUX中,有很多常用的命令,常用的命令我们可以熟练的记忆,但是对于不经常使用的命令恐怕是需要翻阅手册了,但是我们可以简化这些命令的输入来达到简便记忆的效果. 这里以BSH为例: 编辑/etc/bashrc这个文件(所有使用这个SHELL的用户都可以享受到便利,如果没有ROOT权限,则编辑你自己目录下的.bashrc文件,区别在于只有你自己可以使用下面定义的别名) 在最后加入这一段: alias l="ls --color -l" alias lm="ls --color

  • node.js在Linux下执行shell命令、.sh脚本的问题

    首先,引入子进程模块 var process = require('child_process'); 执行shell命令 调用该模块暴露出来的方法exec process.exec('shutdown -h now',function (error, stdout, stderr) { if (error !== null) { console.log('exec error: ' + error); } }); //回调函数非必须! 执行.sh脚本 很多时候需要多个命令来完成一项工作,而这个工

  • shell命令执行hive脚本(hive交互)

    目录 Hive执行方式 方式1 方式二 方式三 Hive执行方式 Hive的hql命令执行方式有三种: 1.CLI 方式直接执行2.作为字符串通过shell调用hive –e执行(-S开启静默,去掉”OK”,”Time taken”)3.作为独立文件,通过shell调用 hive –f或hive –i执行执行 方式1 键入"hive",启动hive的cli交互模式.Set可以查看所有环境设置参数,并可以重设.其他命令如, Use database 选择库 quit/exit 退出Hiv

  • 帮助你排序文本文件的 Awk 命令行或脚本(推荐)

    Awk 是一个强大的工具,可以执行某些可能由其它常见实用程序(包括 sort)来完成的任务. Awk 是个普遍存在的 Unix 命令,用于扫描和处理包含可预测模式的文本.但是,由于它具有函数功能,因此也可以合理地称之为编程语言. 令人困惑的是,有不止一个 awk.(或者,如果你认为只有一个,那么其它几个就是克隆.)有 awk(由Aho.Weinberger 和 Kernighan 编写的原始程序),然后有 nawk .mawk 和 GNU 版本的 gawk.GNU 版本的 awk 是该实用程序的

  • Linux终端命令行的常用快捷键详解

    history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !?string? 执行含有string字符串的最新命令 Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 Ctrl+s 与Ctrl+r类似,只是正向检索 Alt+< 历史列表第一项 Alt+> 历史列表最后一项 Ctrl+f 光标向前移动一个字符,相当与-> Ct

  • mac使用Shell(终端)SSH连接远程服务器的方法

    前提:要有你需要连接的服务器的ip,端口号,服务器上的账户和密码 1.首先打开终端,然后输入sudo su - 回车进入根目录 2.然后输入:ssh -p 端口号 服务器用户名@ip (例如ssh -p 22 userkunyu@119.29.37.63 )回车,到这会让你输入yes或者no来确认是否连接,输入yes回车 3.然后输入在服务器上的用户密码回车 4.到此进入的是你在服务器上的账户的目录,即为连接成功 最后输入sudo su -进入服务器的根目录,进行操作 连接设置别名 使用vi命令

  • 详解adb shell 常用命令

    一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容 -n:显示行号 -b:显示行号,但会忽略空行 -s:显示行号,连续空行标记为一行 df 无 列出分区列表 du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file...] 查询文件或目录的磁盘使用空间 ls [-a] [-i] [-l] [-n] [-s] 列出目录内容

  • 隐藏shell脚本内容的工具 shc详解

    目录 简介 安装 常用选项 编译脚本 实例1 实例2 设置过期时间 如何引用二进制脚本 安全性 小结 从事 Linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到一些敏感内容,比如一些 IP 地址,用户名以及密码等,或者脚本中有一些关键的代码, 所有这些内容你都不想别人阅读或者修改,更进一步,你希望对脚本设置过期时间,超过指定时间时间之后,脚本就无法使用 在不改变脚本内容.功能以及执行方式的情况下,有没有办法实现上面的需求呢? 答案是:有的, 在Linux下,我们可以使用 s

  • python文件读写操作与linux shell变量命令交互执行的方法

    本文实例讲述了python文件读写操作与linux shell变量命令交互执行的方法.分享给大家供大家参考.具体如下: python对文件的读写还是挺方便的,与linux shell的交互变量需要转换一下才能用,这比较头疼. 代码如下: 复制代码 代码如下: #coding=utf-8 #!/usr/bin/python import os import time #python执行linux命令 os.system(':>./aa.py') #人机交互输入 S = raw_input("

随机推荐