|
Bash 是我們經(jīng)常與之打交道的Shell 程序,本文針對其使用技巧進(jìn)行了搜羅。相信在你看過這些內(nèi)容之后,定會在Bash 的世界里游刃有余。
從歷史中執(zhí)行命令 有時候,我們需要在Bash 中重復(fù)執(zhí)行先前的命令。你當(dāng)然可以使用上方向鍵來查看之前曾經(jīng)運(yùn)行過的命令。但這里有一種更好的方式:你可以按Ctrl + r 組合鍵進(jìn)入歷史搜索模式,一旦找到需要重復(fù)執(zhí)行的命令,按回車鍵即可。 重復(fù)命令參數(shù) 先來看一個例子:mkdir /path/to/exampledir cd !$ 本例中,第一行命令將創(chuàng)建一個目錄,而第二行的命令則轉(zhuǎn)到剛創(chuàng)建的目錄。這里,“!$”的作用就是重復(fù)前一個命令的參數(shù)。事實(shí)上,不僅是命令的參數(shù)可以重 復(fù),命令的選項(xiàng)同樣可以。另外,Esc + . 快捷鍵可以切換這些命令參數(shù)或選項(xiàng)。 用于編輯的快捷鍵 Ctrl + a:將光標(biāo)定位到命令的開頭 Ctrl + e:與上一個快捷鍵相反,將光標(biāo)定位到命令的結(jié)尾 Ctrl + u:剪切光標(biāo)之前的內(nèi)容 Ctrl + k:與上一個快捷鍵相反,剪切光標(biāo)之后的內(nèi)容 Ctrl + y:粘貼以上兩個快捷鍵所剪切的內(nèi)容 Ctrl + t:交換光標(biāo)之前兩個字符的順序 Ctrl + w:刪除光標(biāo)左邊的參數(shù)(選項(xiàng))或內(nèi)容 Ctrl + l:清屏 處理作業(yè) 首先,使用Ctrl + z 快捷鍵可以讓正在執(zhí)行的命令掛起。如果要讓該進(jìn)程在后臺執(zhí)行,那么可以執(zhí)行bg 命令。而fg 命令則可以讓該進(jìn)程重新回到前臺來。使用jobs 命令能夠查看到哪些進(jìn)程在后臺執(zhí)行。 你也可以在fg 或bg 命令中使用作業(yè)id,如:fg %3 又如:bg %7 使用置換 命令置換 先看例子:du -h -a -c $(find . -name *.conf 2>&-) 注意$() 中的部分,這將告訴Bash 運(yùn)行find 命令,然后把返回的結(jié)果作為du 的參數(shù)。 進(jìn)程置換 仍然先看例子:diff <(ps axo comm) <(ssh user@host ps axo comm) 該命令將比較本地系統(tǒng)和遠(yuǎn)程系統(tǒng)中正在運(yùn)行的進(jìn)程。請注意<() 中的部分。 xargs 看例:find . -name *.conf -print0 | xargs -0 grep -l -Z mem_limit | xargs -0 -i cp {} {}.bak 該命令將備份當(dāng)前目錄中的所有.conf 文件。 使用管道 下面是一個簡單的使用管道的例子:ps aux | grep init 這里,“|”操作符將ps aux 的輸出重定向給grep init。 下面還有兩個稍微復(fù)雜點(diǎn)的例子:ps aux | tee filename | grep init 及:ps aux | tee -a filename | grep init 將標(biāo)準(zhǔn)輸出保存為文件 你可以將命令的標(biāo)準(zhǔn)輸出內(nèi)容保存到一個文件中,舉例如下:ps aux > filename 注意其中的“>”符號。 你也可以將這些輸出內(nèi)容追加到一個已存在的文件中:ps aux >> filename 你還可以分割一個較長的行:command1 | command2 | ... | commandN > tempfile1 cat tempfile1 | command1 | command2 | ... | commandN > tempfile2 標(biāo)準(zhǔn)流:重定向與組合 重定向流的例子:ps aux 2>&1 | grep init 這里的數(shù)字代表: 0:stdin 1:stdout 2:sterr 上面的命令中,“grep init”不僅搜索“ps aux”的標(biāo)準(zhǔn)輸出,而且搜索sterr 輸出。 The best tips & tricks for bash, explained [Linux Tutorials Blog] |
|
|