bash 是否有一個組合鍵可以自動競爭歷史指令?例如,在 ipython 和 matlab 中,這是透過在輸入幾個字元後按向上箭頭來實現的。
答案1
首先,tab在 bash 中點擊會更好,因為它會自動完成 PATH 中的所有可執行文件,無論它們是否在歷史記錄中。也就是說,有多種方法可以從歷史記錄中取得命令:
使用它的號碼。如果你知道你想要的指令是 3 個指令之前的,你可以執行
!-3
這將重新執行您之前運行的三個命令。
搜尋一下。輸入Ctrlr並開始輸入任何文字。將顯示歷史記錄中與您的文字相符的第一個命令,點擊enter將執行它。
擊中▲(向上箭頭)。這將顯示最後一個命令,再次按下它,您將進入命令歷史記錄。當你找到你想要的那個時,點擊enter。
將這些行新增至您的文件
~/.inputrc
(如果文件不存在則建立該文件):"\e[A": history-search-backward "\e[B": history-search-forward
若要立即載入文件,請運行bind -f ~/.inputrc
(來源)。現在,輸入您之前運行的命令之一的前幾個字符,然後點擊▲。將顯示歷史記錄中以這些字元開頭的第一個命令。再次點擊▲即可查看其餘內容,enter找到所需內容後點擊即可。
- 使用
history
命令。正如@Isaac 所解釋的,這將列出儲存在歷史文件中的所有命令。
答案2
您可以使用命令檢查歷史序列上的命令位置history
。然後就可以執行了!<number_in_the_sequence>
。我希望這有幫助。
答案3
您也可以使用history
特定命令的輸出並透過管道傳輸。
例如,如果您cd
一整天都在檔案系統中工作,只需要提醒哪些目錄正在處理
history | grep cd
然後,您可以複製/貼上該命令,或!n
(其中 n 是歷史文件中的行號)重新執行它。