在Dos中我們可以輸入前幾個字元來過濾命令歷史並快速找到合適的命令。但如何在 Linux 中做同樣的事情呢?
例如當我測試本機伺服器時:
cd
sudo /etc/init.d/vsftpd start
wget ...
ls
emacs ...
sudo /etc/init.d/vsftpd restart
sudo /etc/init.d/vsftpd stop
...
在 Dos 中,您可以sudo
使用箭頭鍵輕鬆地在以它開頭的三個命令之間鍵入和切換。但在 Linux 中,以下的指令是我們能做的最好的嗎?
historty | grep sudo
我不喜歡它,因為歷史很容易變得一團糟,而且還需要滑鼠操作。
答案1
將以下內容放入您的~/.inputrc
:
"\e[A": history-search-backward
"\e[B": history-search-forward
然後輸入後sudo
,Up將搜尋以 開頭的命令sudo
。
(您必須重新啟動 bash。)(不確定這在 csh 中是否有效。)
答案2
在 Bash(以及大多數類似的基於 readline 的應用程式)中,您可以按 調Ctrl-R
出歷史搜尋功能:
$ date
Tue Feb 1 15:40:06 EET 2011
(reverse-i-search)`d': date
按Enter
這裡我得到:
$ date
Tue Feb 1 15:40:06 EET 2011
$ date
Tue Feb 1 15:40:52 EET 2011
編輯:
您可以查看與歷史相關的 Bash 擊鍵的完整列表這裡。
您可以看到目前的歷史搜尋鍵盤綁定清單:
$ bind -P | grep search | grep history
forward-search-history can be found on "\C-s".
history-search-backward can be found on "\e[5~".
history-search-forward can be found on "\e[6~".
non-incremental-forward-search-history can be found on "\en".
non-incremental-forward-search-history-again is not bound to any keys
non-incremental-reverse-search-history can be found on "\ep".
non-incremental-reverse-search-history-again is not bound to any keys
reverse-search-history can be found on "\C-r".
在我的例子中,Page-Up/Down 也可以用來搜尋以我已經輸入的內容開頭的指令,例如我的設定/etc/inputrc
:
# Page Up/Down cycles through history only for matching entries
"\e[5~": history-search-backward # Previous
"\e[6~": history-search-forward # Next
答案3
除了Ctrl+之外R,您還可以在 bash 中輸入!sudo
+ Enter,它會執行最後的sudo
以.開頭的命令
答案4
輸入第一個字母,例如sudo
,按Ctrl,然後按↑或↓。