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