如何在Linux中使用history命令
用強(qiáng)大的 history 命令使你的命令行提示符更有效率。
隨著我在終端中花費(fèi)越來(lái)越多的時(shí)間,我感覺(jué)就像在不斷地尋找新的命令,以使我的日常任務(wù)更加高效。GNU 的 history
命令是一個(gè)真正改變我日常工作的命令。
GNU history
命令保存了從該終端會(huì)話(huà)運(yùn)行的所有其他命令的列表,然后允許你重放或者重用這些命令,而不用重新輸入它們。如果你是一個(gè)老玩家,你知道 history
的力量,但對(duì)于我們這些半吊子或新手系統(tǒng)管理員來(lái)說(shuō), history
是一個(gè)立竿見(jiàn)影的生產(chǎn)力增益。
歷史 101
要查看命令歷史,請(qǐng)?jiān)?Linux 中打開(kāi)終端程序,然后輸入:
$ history
這是我得到的響應(yīng):
1 clear
2 ls -al
3 sudo dnf update -y
4 history
history
命令顯示自開(kāi)始會(huì)話(huà)后輸入的命令列表。 history
有趣的地方是你可以使用以下命令重放任意一個(gè)命令:
$ !3
提示符中的 !3
告訴 shell 重新運(yùn)行歷史列表中第 3 個(gè)命令。我還可以輸入以下命令來(lái)使用:
linuser@my_linux_box: !sudo dnf
history
將搜索與你提供的模式相匹配的***一個(gè)命令,并運(yùn)行它。
搜索歷史
你還可以輸入 !!
重新運(yùn)行命令歷史中的***一條命令。而且,通過(guò)與grep
配對(duì),你可以搜索與文本模式相匹配的命令,或者通過(guò)與 tail
一起使用,你可以找到你***幾條執(zhí)行的命令。例如:
$ history | grep dnf
3 sudo dnf update -y
5 history | grep dnf
$ history | tail -n 3
4 history
5 history | grep dnf
6 history | tail -n 3
另一種實(shí)現(xiàn)這個(gè)功能的方法是輸入 Ctrl-R
來(lái)調(diào)用你的命令歷史記錄的遞歸搜索。輸入后,提示變?yōu)椋?/p>
(reverse-i-search)`':
現(xiàn)在你可以開(kāi)始輸入一個(gè)命令,并且會(huì)顯示匹配的命令,按回車(chē)鍵執(zhí)行。
更改已執(zhí)行的命令
history
還允許你使用不同的語(yǔ)法重新運(yùn)行命令。例如,如果我想改變我以前的命令 history | grep dnf
成 history | grep ssh
,我可以在提示符下執(zhí)行以下命令:
$ ^dnf^ssh^
history
將重新運(yùn)行該命令,但用 ssh
替換 dnf
,并執(zhí)行它。
刪除歷史
有時(shí)你想要?jiǎng)h除一些或全部的歷史記錄。如果要?jiǎng)h除特定命令,請(qǐng)輸入 history -d <行號(hào)>
。要清空歷史記錄,請(qǐng)執(zhí)行 history -c
。
歷史文件存儲(chǔ)在一個(gè)你可以修改的文件中。bash shell 用戶(hù)可以在他們的家目錄下找到 .bash_history
。
下一步
你可以使用 history
做許多其他事情:
- 將歷史緩沖區(qū)設(shè)置為一定數(shù)量
- 記錄歷史中每行的日期和時(shí)間
- 防止某些命令被記錄在歷史記錄中
有關(guān) history
命令的更多信息和其他有趣的事情,請(qǐng)參考 GNU Bash 手冊(cè)。