您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何簡化shell終端命令輸入的腳本式快捷鍵工具”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何簡化shell終端命令輸入的腳本式快捷鍵工具”吧!
1.解決的問題
當(dāng)你需要一次輸入很多個命令的時候,例如一次去多個目錄刪除文件
代碼如下:
cd dir1
rm file1.temp
cd ../../dir2
rm -rf dir3
當(dāng)你懶得輸入一個好長的命令或者直接就記不住那么長的命令的時候,例如生成ctags
ctags --languages=C++ --exclude=third_party --exclude=.git --exclude=build --exclude=out -R -f .tags
當(dāng)你想要個類似快捷鍵來一鍵搞定重復(fù)的事情又懶得寫好多腳本的時候,
duang~~ 這個工具就有用啦!
2.感性認識
這個工具是個shell腳本,附在本文末尾,復(fù)制整個腳本源碼,在本地保存為rew.sh,放到$PATH下,加上chmod +x權(quán)限。
文件名命名可以按喜好改。r e w 可以用一只左手輸入完畢,然后tab鍵就出.sh了,我感覺挺好的。
前面所說的復(fù)雜操作就變成了這么簡單:
一次去幾個目錄刪除文件,只需要rew.sh d
如果想指定起始目錄,還可以再帶參數(shù)rew.sh d dir_path
生成ctags,只需要rew.sh ct
如果忘了這個腳本有什么功能,只需要不帶參數(shù)運行crt.sh就會列出所有的命令。
3.理性認識
如果想加入自定義的命令,找到
代碼如下:
cmds=(xxxxx)
的地方,增加一行就可以了。每行就是一個參數(shù)和實際命令,可以看到:
代碼如下:
# 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的參數(shù)(快捷鍵),第一個空格后是實際運行的命令。其中多個步驟的命令可以做成函數(shù),例如:
代碼如下:
updateChrome() {
git pull
cd third_party/WebKit
git pull
gclient sync --nohooks
}
如果怕忘記長命令用來干什么,也可以放到函數(shù)里,函數(shù)名要見名知意或者加注釋。
這個腳本可以被其它腳本調(diào)用,返回值和被代替的命令相同。
附工具腳本:
代碼如下:
#!/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
感謝各位的閱讀,以上就是“如何簡化shell終端命令輸入的腳本式快捷鍵工具”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何簡化shell終端命令輸入的腳本式快捷鍵工具這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。