
有沒有比 grep 更好的方法來搜尋我的歷史檔案中的指令?我確實知道該命令的開頭是什麼,但我不知道它的歷史有多遠。
更新:以前是 zsh 特定的,但由於答案重疊,請隨意回答任何 shell(或模式(vi/emacs)),只需注意它是否特定。
答案1
答案2
使用 Bash 時,輸入Control-R然後開始輸入。輸入一些文字後重複鍵入Control-R將使您返回到匹配的命令行。
答案3
如果將以下內容新增至~/.inputrc
"\e[5~": history-search-backward
"\e[6~": history-search-forward
並重新啟動 Bash,您可以開始輸入,然後使用Page Up和Page Down在以您剛剛輸入的相同前綴開頭的行歷史記錄中前後移動。
(有些人可能更喜歡使用\e[A
和\e[B
,它將取代正常的Up和Down操作,而不是綁定新鍵。)
答案4
已經提到的Ctrl-呼叫的互動式提示是最方便的方法。R此外,重新映射Up和Down箭頭鍵來搜尋當前在命令列上的前綴的歷史記錄是很流行的,但這需要一些~/.inputrc
對文件的更改。
經典且互動性較低的解決方案是使用 shell 歷史擴展。打字
!foo
將執行最後一個以foo
and開頭的命令
!?foo
將執行包含 的最後一個指令foo
。有關歷史擴展的更多資訊可以在Bash 參考手冊,假設您的 shell 是 Bash 或相容的。