在使用過一段時間 linux 終端之后,大家應該都會注意到,使用上下箭頭按鍵,可以執行之前運行過的命令,這就是 history 所起到的作用。
1,查看 bash 歷史記錄(history)
我們在之前的文章中介紹過 history 的使用,大家感興趣可以參考:
??在Linux中怎樣使用history命令??
查看 bash 歷史記錄,最簡單的方法就是在命令行中輸入 history 命令:
history
- 1.
這將顯示你歷史記錄中的上百或上千條命令,這取決于 HISTSIZE 變量中設定的大小。
如果不想列出所有的歷史記錄,可以限制顯示出的記錄條數。比如,想要只顯示最近的 7 條歷史命令,可在 history 命令后跟上一個數字 7,如下:
history 7
- 1.
2,運行 bash 歷史記錄中的命令
在查看 history 記錄后,可以使用一個感嘆號 ! 來運行其中的某條歷史命令,如下方式:
! <HISTORY NUMBER>
- 1.
使用兩個感嘆號 !! 可以返回歷史記錄中最后的一條命令。比如:
sudo !!
- 1.
另外,也可以使用一個特定的字符串來運行 history 命令,這個“特定的字符串”就是 history 命令中,與其匹配的命令:
!text
- 1.
比如,你曾經運行過 echo $HISTCONTROL,然后想再次運行它,那么可以這樣:
!echo
- 1.
上述命令,會再次運行 history 中的最后一條 echo 命令:
這其實也相當于是在 history 命令中以 “字符串” 方式匹配搜索。
如果你不確定在 history 中的具體命令,可以在其后添加 :p 來打印該命令,而不是運行,比如 !echo:p,!23:p 等。
3,搜索 history 記錄
你可能會想到使用?? grep?? 搜索 history 記錄,像下面這樣:
history | grep text
- 1.
搜索歷史記錄的一個更好且超級方便的方法是使用 ctrl + r 鍵,反向搜索并鍵入您要查找的字符串。
可以通過反復按 ctrl + r 來循環選擇,當找到要查找的命令時,按 ctrl + o 或只按 enter 鍵即可選擇并運行該命令。
例如,下面的示例搜索包含 “aud” 的命令:
如果找不到想要的命令,可更改搜索的字符串,或者按 ctrl + g 退出搜索。
4,重新使用歷史記錄中以前命令中的參數
關于 history 的另外一個很有用的技巧是,可以在新命令中使用以前命令中的參數。
我們可以像這樣使用上一個命令的最后一個參數:
<new command> !$
- 1.
比如,假設我們剛剛使用過 less 命令讀取過某個文件,然后想再編輯此文件,那么可以使用 !$ 快捷鍵,如下圖所示:
上面的選項只提供上一個命令的最后一個參數。如果需要所有參數,請使用以下命令:
<new command> !*
- 1.
5,清除歷史記錄中的條目
有一個名為 HISTCONTROL 的環境變量,可以幫助我們處理 bash 歷史記錄中的冗余條目。可以為其指定以下三個值之一:
- ignorespace:使用這個變量值,在運行某個命令時,在該命令前面加一個空格,該命令照常運行,但是不會記錄在 history 記錄中;
- ignoredups:如果有兩個或多個相同的命令連續運行,則只有一個命令會記錄在 history 記錄中;
- ignoreboth:設置上述兩個功能。
設置 HISTCONTROL 變量,應該在 bashrc 文件中設置,以便在每次使用 bash shell 時該變量的設置都會起作用。
如果 history 中的記錄太多,可以使用 -c 選項來清理歷史記錄,然后從新開始記錄新的命令。
history -c
- 1.
除了我們上面介紹的以外,history 還有很多東西值得研究學習,大家可以參考 history 命令的 man 手冊,感興趣的話還可以了解一下 history builtins,地址為:
??https://www.gnu.org/software/bash/manual/html_node/Bash-History-Builtins.html