麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Linux Shell > 正文

簡化shell終端命令輸入的腳本式快捷鍵工具

2020-07-27 19:08:20
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99精品视频免费看 | 欧美精品一区二区久久 | 国产国语毛片 | 久久色网站 | 主播粉嫩国产在线精品 | 免费看污视频在线观看 | 久久久久久久久淑女av国产精品 | 嗯哈~不行好大h双性 | 爽爽视频免费看 | 精品国产一区二区三区久久久蜜月 | 国产一区二区三区精品在线观看 | 福利在线播放 | 美女网站黄在线观看 | 护士xxxx| 久久综合婷婷香五月 | 91精品国产91久久久久久不卞 | 中文字幕免费在线观看视频 | 一级黄色免费电影 | 92看片淫黄大片一级 | 九九热免费观看 | 日本黄色免费片 | 午夜九九九 | 毛片免费在线视频 | 91九色免费视频 | 成人福利在线看 | 成人免费电影在线观看 | 欧美日本在线视频 | 久久成人免费观看 | 久久美女免费视频 | 成人毛片av在线 | 成人影片在线免费观看 | 91一区二区三区久久久久国产乱 | 亚洲小视频 | 免费视频www在线观看 | 九九热在线免费观看视频 | 草逼一区| 久久精品国产99久久6动漫亮点 | 精品国产一区二区三 | 国产成人综合在线视频 | 91在线看黄| 一级性生活视频 |