在shell中,Ctrl-p和Ctrl-n是用来在历史记录中上下移动的快捷键。当我们按下Ctrl-p时,会向上移动到上一个历史记录,而按下Ctrl-n则会向下移动到下一个历史记录。
在默认情况下,Ctrl-p和Ctrl-n搜索按键并不会进行字符过滤,而是按照输入的字符进行前缀匹配。也就是说,当我们按下Ctrl-p或Ctrl-n后,shell会自动将我们当前输入的字符作为前缀,然后在历史记录中查找以该前缀开头的命令。
这种行为可以帮助我们快速找到之前执行过的命令,特别是当我们需要重复执行某个命令时。通过按下Ctrl-p或Ctrl-n,我们可以快速浏览历史记录,并选择需要执行的命令。
然而,如果我们希望按照输入的字符进行过滤搜索,而不是仅仅进行前缀匹配,我们可以通过配置shell来实现。具体来说,我们可以使用bind
命令来重新绑定Ctrl-p和Ctrl-n的行为。
以下是一个示例,展示如何将Ctrl-p和Ctrl-n搜索按键修改为按照输入字符进行过滤搜索的方式:
~/.bashrc
):$ vi ~/.bashrc
# enable Ctrl-p and Ctrl-n for history navigation
bind '"\C-p": history-search-backward'
bind '"\C-n": history-search-forward'
# enable Ctrl-p and Ctrl-n for history navigation with character filtering
bind '"\C-p": history-search-backward'
bind '"\C-n": history-search-forward'
bind '"\C-r": history-search-backward'
$ source ~/.bashrc
现在,当你按下Ctrl-p或Ctrl-n时,shell会根据你输入的字符进行过滤搜索,而不仅仅是前缀匹配。这样,你就可以更精确地查找并执行历史记录中的命令了。
需要注意的是,以上示例是针对bash shell的配置方式。如果你使用的是其他类型的shell,可能需要相应地修改配置文件和绑定命令的语法。
关于shell历史记录和快捷键的更多信息,你可以参考腾讯云的产品文档中关于Linux Shell的介绍。
领取专属 10元无门槛券
手把手带您无忧上云