it-swarm.cn

根据命令历史记录完成命令行

因此,我研究了历史和 Ctrl+R,但那不是我以为我知道的。有什么方法可以键入命令的开头,并使用一些bash快捷方式循环浏览历史记录中的匹配项?

# mysq(some shortcut key)

给我:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p
89
Ben Dauphinee

紧迫 Ctrl+R 将打开反向历史记录搜索。现在开始输入命令,这将给出第一个匹配项。通过按 Ctrl+R 再一次(又一次),您可以循环浏览历史记录。

mysq(Ctrl+R)

将给出:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+R 再次:

mysql -u ben.dauphinee -p
93
wag

为了进一步说明Gilles所说的内容,我在.inputrc将上/下箭头键绑定到history-search-backwardhistory-search-forward

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

只需键入一些内容(可选),然后按向上/向下箭头键在历史记录中搜索以您键入的内容开头的命令。

要在.bashrc 而不是 .inputrc, 您可以使用:

bind '"\e[A": history-search-backward'
68
raychi

您也可以按PAGEUP按钮自动完成命令。它基本上搜索bash_history文件。

7
0aslam0

您可以使用readline命令history-search-backwardhistory-search-forward在以您已经键入的前缀开头的命令行之间导航。这些命令均未绑定到默认配置中的键。

Zsh(zle)具有类似的命令history-beginning-search-backwardhistory-beginning-search-forward,默认情况下也未绑定到键。也有history-search-backwardhistory-search-forward,它使用当前命令的第一个单词作为前缀进行搜索,而不考虑光标的位置。

如果您想很好地概述非常相似的命令,可以使用以下命令获取列表:

history|grep KEYSTRING

然后使用鼠标的中键进行复制和粘贴。

Rgds-乔

4
joe_zeroh