来自 FreeBSD 世界,我希望让 Linux 终端表现得像 FreeBSD 一样,尤其是 9.1 版本,基本上当你cd
在终端中输入并按“向上”箭头时,你可以浏览历史记录中的所有命令,cd
这使你可以赢得很多时间。
我不知道如何在 Linux Debian 或 CentOS 中启用此功能,这迫使我输入整个内容,有人可以帮忙吗?
答案1
将以下内容添加到~/.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 阅读线。许多 shell,包括bash
并tcsh
使用 readline 进行命令行编辑。上面两行将告诉 readline 在遇到向上箭头键 ( \e[A
) 和向下箭头键 ( ) 的转义序列时调用其历史搜索功能。\e[B
答案2
实际情况是 FreeBSD 和 Linux 默认使用不同的 shell。 FreeBSD 默认为tcsh,它比过去的 bash 有更好的交互功能(但 bash 已经迎头赶上)但是脚本功能明显较差。
获得您习惯的环境的最直接方法是将您的 shell 切换到 Linux 上的 tcsh。如果 tcsh 已在系统范围内安装(如果未安装,请要求系统管理员安装),请运行chsh -s tcsh
以更改默认 shell。
或者,您可以设置 bash 以使用您习惯的命令。默认情况下,Up和Down箭头会在历史记录中的所有命令之间导航,而不仅仅是以您键入的前缀开头的命令。要将其更改为您习惯的行为,请将以下行放入 bash 的初始化文件中,该文件位于.bashrc
您的主目录中。运行. ~/.bashrc
或启动一个新的 shell 来重新读取初始化文件。
bind '"\eOA": history-search-backward'
bind '"\e[A": history-search-backward'
bind '"\eOB": history-search-forward'
bind '"\e[B": history-search-forward'
转义序列是当您按箭头键时终端发送到 shell 的内容。Up可能是\eOA
(escape, O
, A
) 或 ,\e[A
具体取决于您的终端,对于 也类似Down。
默认情况下,bash 提供不同的键绑定来搜索命令历史记录。您可以按Ctrl+ R,然后输入一些字符来搜索该行任意位置包含该子字符串的命令。按Ctrl+S前进而不是后退。搜索是渐进式的(即按您键入的方式搜索);Alt+P和Alt+N为您提供非增量搜索。
您可以切换到 zsh,而不是 bash 和 tcsh,这具有其他 shell 中没有的一些简洁功能。 Zsh和 bash 一样默认有Ctrl+R和
Ctrl+ 。S要像在 tcsh 中一样Up,Down请将以下行放入~/.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,前提是已安装该端口(再次询问您的系统管理员)。
答案3
tcsh
适用于大多数 Linux 发行版。尝试安装该tcsh
软件包,然后运行chsh -s /bin/tcsh
以使其成为默认 shell。