
來自 FreeBSD 世界,我希望讓 Linux 終端機表現得像 FreeBSD 一樣,尤其是 9.1 版本,基本上當你cd
在終端中輸入並按「向上」箭頭時,你可以瀏覽歷史記錄中的所有命令,cd
這使你可以贏得很多時間。
我不知道如何在 Linux Debian 或 CentOS 中啟用此功能,這迫使我輸入整個內容,有人可以幫忙嗎?
答案1
將以下內容新增至~/.inputrc
:
# Press up-arrow for previous matching command
"\e[A":history-search-backward
# Press down-arrow for next matching command
"\e[B":history-search-forward
解釋
~/.inputrc
是設定檔GNU 閱讀線。許多 shell,包括bash
並tcsh
使用 readline 進行命令列編輯。當遇到向上箭頭鍵 ( \e[A
) 和向下箭頭鍵 ( ) 的轉義序列時,上面的兩行將告訴 readline 呼叫其歷史搜尋功能。\e[B
答案2
實際情況是 FreeBSD 和 Linux 預設使用不同的 shell。 FreeBSD 預設為tcsh,它比過去的 bash 有更好的互動功能(但 bash 已經迎頭趕上)但是腳本功能明顯較差。
獲得您習慣的環境的最直接方法是將您的 shell 切換到 Linux 上的 tcsh。如果 tcsh 已在系統範圍內安裝(如果未安裝,請執行系統管理員安裝),請執行chsh -s tcsh
以變更預設 shell。
或者,您可以設定 bash 以使用您習慣的命令。預設情況下,Up和Down箭頭會在歷史記錄中的所有命令之間導航,而不僅僅是以您鍵入的前綴開頭的命令。若要將其變更為您習慣的行為,請將以下行放入 bash 的初始化檔案中,該檔案位於.bashrc
您的主目錄中。運行. ~/.bashrc
或啟動一個新的 shell 來重新讀取初始化檔。
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
轉義序列是當您按箭頭鍵時終端發送到 shell 的內容。Up可能是\eOA
(escape, O
, A
) 或 ,\e[A
取決於您的終端,對於 也類似Down。
預設情況下,bash 提供不同的鍵綁定來搜尋命令歷史記錄。您可以按Ctrl+ R,然後輸入一些字元來搜尋該行任意位置包含該子字串的命令。按Ctrl+S前進而不是後退。搜尋是漸進式的(即按您鍵入的方式搜尋);Alt+P和Alt+N為您提供非增量搜尋。
您可以切換到 zsh,而不是 bash 和 tcsh,這具有其他 shell 中沒有的一些簡潔功能。 Zsh和 bash 一樣預設有Ctrl+R和
Ctrl+ 。S要像在 tcsh 中一樣Up,Down請將以下行放入~/.zshrc
:
bindkey '\eOA' history-beginning-search-backward
bindkey '\e[A' history-beginning-search-backward
bindkey '\eOB' history-beginning-search-forward
bindkey '\e[B' history-beginning-search-forward
如果您想在任何地方使用相同的 shell,您也可以在 FreeBSD 上使用 bash 或 zsh,前提是已安裝該連接埠(再次詢問您的系統管理員)。
答案3
tcsh
適用於大多數 Linux 發行版。嘗試安裝該tcsh
軟體包,然後運行chsh -s /bin/tcsh
以使其成為預設 shell。