在linux中重新載入以某些字元開頭的歷史命令的最快方法是什麼?

在linux中重新載入以某些字元開頭的歷史命令的最快方法是什麼?

在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

然後輸入後sudoUp將搜尋以 開頭的命令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,然後按

相關內容