来自FreeBSD世界,我希望使Linux终端的行为类似于FreeBSD,尤其是9.1版本,基本上,当您cd
在终端中键入并按“向上”箭头时,您可以浏览历史记录中的所有命令,cd
从而使您可以收获很多时间。
我不知道如何在Linux Debian或CentOS中启用此功能,这迫使我键入整个字符,请有人帮忙。
来自FreeBSD世界,我希望使Linux终端的行为类似于FreeBSD,尤其是9.1版本,基本上,当您cd
在终端中键入并按“向上”箭头时,您可以浏览历史记录中的所有命令,cd
从而使您可以收获很多时间。
我不知道如何在Linux Debian或CentOS中启用此功能,这迫使我键入整个字符,请有人帮忙。
Answers:
添加到以下内容~/.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 readline的配置文件。许多shell,包括bash
并tcsh
使用readline进行命令行编辑。当遇到向上箭头键(\e[A
)和向下箭头键(\e[B
)的转义序列时,上面的两行将告诉readline调用其历史搜索功能。
Last word
经常想在各种奥秘的陈词滥调中尝试这条路。和Shift键F12把我带回编辑工作从一开始整个最后一行。~/.inputrc
是一个方便的工具。
事实是,FreeBSD和Linux默认使用不同的shell。FreeBSD默认使用tcsh,它比过去的bash具有更好的交互功能(但是bash已经赶上了),但是脚本功能明显更差。
获得您所习惯的环境的最直接方法是在Linux上将Shell切换到tcsh。如果tcsh已在系统范围内安装(如果未安装,请要求系统管理员安装),请运行chsh -s tcsh
以更改默认的Shell。
另外,您可以设置bash以使您习惯使用此命令。默认情况下,Up和Down箭头会在历史记录中的所有命令之间导航,而不仅仅是以您键入的前缀开头的命令。要将其更改为您惯常的行为,请将以下行放入bash的初始化文件中,该文件.bashrc
位于您的主目录中。运行. ~/.bashrc
或启动新的外壳程序以重新读取初始化文件。
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
转义序列是您按箭头键时终端发送到外壳的内容。Up可以是\eOA
(逃逸,O
,A
),或\e[A
取决于在终端上,并且类似地为Down。
默认情况下,bash提供了不同的键绑定来搜索命令历史记录。您可以按Ctrl+ R,然后输入一些字符以在行中的任何位置搜索包含此子字符串的命令。按Ctrl+ S前进而不是后退。搜索是渐进式(即按您的类型);Alt+ P和Alt+N为您提供非增量搜索。
您可以切换到zsh来代替bash和tcsh,它具有一些其他Shell中找不到的简洁功能。Zsh 默认情况下与bash一样具有Ctrl+ R和
Ctrl+ S。要获得Up与Downtcsh相同的效果,请将以下行放入~/.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(同样请询问系统管理员)。
其他答案可以解决这个问题,但是如果您想要更多,请看看 https://github.com/zsh-users/zsh-history-substring-search
Prezto(https://github.com/sorin-ionescu/prezto)也充满了zsh好东西。