如何自動完成命令歷史記錄中的命令?

如何自動完成命令歷史記錄中的命令?

bash 是否有一個組合鍵可以自動競爭歷史指令?例如,在 ipython 和 matlab 中,這是透過在輸入幾個字元後按向上箭頭來實現的。

答案1

首先,tab在 bash 中點擊會更好,因為它會自動完成 PATH 中的所有可執行文件,無論它們是否在歷史記錄中。也就是說,有多種方法可以從歷史記錄中取得命令:

  1. 使用它的號碼。如果你知道你想要的指令是 3 個指令之前的,你可以執行

     !-3
    

這將重新執行您之前運行的三個命令。

  1. 搜尋一下。輸入Ctrlr並開始輸入任何文字。將顯示歷史記錄中與您的文字相符的第一個命令,點擊enter將執行它。

  2. 擊中(向上箭頭)。這將顯示最後一個命令,再次按下它,您將進入命令歷史記錄。當你找到你想要的那個時,點擊enter

  3. 將這些行新增至您的文件~/.inputrc(如果文件不存在則建立該文件):

     "\e[A": history-search-backward
     "\e[B": history-search-forward
    

若要立即載入文件,請運行bind -f ~/.inputrc(來源)。現在,輸入您之前運行的命令之一的前幾個字符,然後點擊。將顯示歷史記錄中以這些字元開頭的第一個命令。再次點擊即可查看其餘內容,enter找到所需內容後點擊即可。

  1. 使用history命令。正如@Isaac 所解釋的,這將列出儲存在歷史文件中的所有命令。

答案2

您可以使用命令檢查歷史序列上的命令位置history。然後就可以執行了!<number_in_the_sequence>。我希望這有幫助。

答案3

您也可以使用history特定命令的輸出並透過管道傳輸。

例如,如果您cd一整天都在檔案系統中工作,只需要提醒哪些目錄正在處理

history | grep cd

然後,您可以複製/貼上該命令,或!n(其中 n 是歷史文件中的行號)重新執行它。

相關內容