在終端機中,我可以輸入Ctrl+R來搜尋先前在 BASH 中輸入的匹配命令。例如,如果我輸入Ctrl+ Rthen grep
,它會列出我的最後一個grep
命令,我可以按 Enter 來使用它。但這只給了一個建議。有沒有辦法循環瀏覽其他先前輸入的匹配命令?
答案1
如果我正確理解了這個問題,您應該能夠透過反覆點擊Ctrl+來循環選擇選項R。
例如:
- Ctrl+R
grep
- Ctrl+R
- Ctrl+ R ...
這會向後搜尋你的歷史。要向前搜索,請使用Ctrl+ S,但您可能需要在此之前設定:(stty -ixon
透過.bash_profile
或手動)以停用接管Ctrl+的 XON/XOFF 功能S。如果無論如何發生,請使用Ctrl+Q重新啟用螢幕輸出(更多詳細信息這裡.)
答案2
如果你覺得該指令會經常使用,你可以加上一個標籤
command #useful
然後
Ctrl+R #useful
這是有效的,因為#
是註釋分隔符,即符號後面的所有內容都不會解釋為命令。但是,它會被記錄在歷史中,因此可以搜尋。
答案3
您也可以透過將這些行新增至 ~/.inputrc 來設定向上和向下箭頭來執行稍微不同的搜尋:
"\e[A": history-search-backward
"\e[B": history-search-forward
而不是在命令中的任何位置搜尋子字串(例如Ctrl-r)它將搜尋命令從遊標左側的文字開始。例如,如果我執行這些命令:
$ ls bart
$ ls fools
然後鍵入ls
並按Up兩次,它將顯示ls bart
和遊標在同一位置。與Ctrl-相比r,它會ls
在最後一行中找到兩次,因此您必須再次按它才能找到上一行。
這些方法都有各自的優點,而且都可以節省大量時間。