譯者 | 布加迪
審校 | 重樓
在Linux命令行上重復運行命令并不難,但是有很多方法可以做到這一點。本文給出了八個如何在Linux上重復運行命令的例子,有的更改,有的沒有更改。
1. 重復以前的命令
通過鍵入!!來重新運行以前輸入的命令是重復該命令的最簡單方法。如果你想再次運行相同的命令,不必輸入任何其他內容。這里有幾個例子:
$ pwd
/home/myacct
$ !!
/home/myacct
$ ls -l | wc -l
218
$ !!
ls -l | wc -l
218
2. 重復以前的命令,稍做更改
如果你想重新運行以前的命令,但稍做更改,可以通過在^字符之間提供命令的原始部分和替換部分來指定要進行的更改,如下例所示:
$ echo this is a test
this is a test
$ ^test^trial^
echo this is a trial
this is a trial
3. 使用命令歷史記錄
要從命令歷史記錄重新運行以前的命令,使用history命令(它通常保留你最近運行的1000個命令),以列出歷史記錄,然后鍵入!后面跟一與該命令相關聯的數字。這里有一個例子:
$ history | tail -2
1001 show_exit_codes
1002 ls -l | wc -l
$ !1002
ls -l | wc -l
218
還可以通過回過頭來在命令歷史記錄中找到以前的命令來重新運行它:按向上箭頭鍵,當你找到想要重新運行的命令時,只需按返回鍵即可重新運行它。
4. 修改并重新運行命令
使用向上箭頭鍵回過頭來找到以前的命令后,可以在再次運行之前對其進行更改。你可以使用退格鍵回找,然后輸入命令的替換部分。
可以使用^a移動到命令的開頭,也可以使用^e移動到命令的末尾。在下例中,我忘記使用echo命令,然后使用^a回到命令的開頭,并插入命令。
$ Have a happy and very profitable day!
bash: Have: command not found...
$ echo Have a happy and very profitable day!
你也可以使用左右方向鍵來左右移動。用向上箭頭鍵移回到命令,并根據需要向左和向右移動。完成更改后,按回車鍵運行剛剛修改的命令。
^a將光標移動到命令的開頭,^e則將光標移動到命令的末尾。
5. 只使用前一個命令中的最后一個字符串
如果你希望重用前一個命令中的最后一個參數,可以在下一個命令中將其引用為!$。下面是一個例子:
$ echo this is not a test
this is not a test
$ echo !$
echo test
test
6. 使用反向搜索來查找以前運行過的命令
要在命令歷史記錄中查找想要重新運行的命令,可以按住Ctrl鍵并按r。然后,系統會提示你輸入搜索文本,將運行含有該字符串的最新命令。字符串可以包含多個單詞。你在輸入時,原始命令的文本會出現在右側。
(reverse-i-search)`happy': echo Have a happy and very profitable day!
(reverse-i-search)`very profitable': alias byebye='echo "Have a happy and very profitable day!"'
7. 將復雜的命令轉換為別名
當你運行可能經常使用的命令時,可以考慮將其轉換為別名。你可以使用如下所示的命令創建別名,但這只能使別名在你注銷之前保持有效狀態。將其添加到.bashrc文件中,使其在每次登錄時都可用。下面是一些例子:
alias myprocs="ps -ef | grep `whoami`"
alias c="clear"
alias big5="du -h | sort -h | tail -5"
alias recent="history | tail -10"
別名不僅可以節省時間,還可以避免輸入錯誤。
8. 評估命令歷史存儲
要確定歷史緩沖區會保留多少命令,請運行下面所示的命令:
$ echo $HISTSIZE
1000
你可以通過在.bashrc文件中添加這樣的命令來改變這一點。默認值保存在/etc/profile文件中。
HISTSIZE = 1234
結語
重用歷史記錄中的命令可以節省大量時間,特別是在運行復雜、有些重復的命令時。
原文標題:8 easy ways to reuse commands on Linux,作者:Sandra Henry-Stocker