我需要进行哪些设置才能使用向上箭头来运行上一个命令?在 Mac 上,我可以使用向上箭头重新运行刚刚运行的命令,但它似乎不适用于我的 bash shell。
我使用 8.04(由于某些编译器版本问题,我无法使用最新发行版)。
添加
我没有改变任何东西,因为它是在 Mac 上使用 VMWare Fusion 的全新安装。
答案1
确保您确实在使用 bash。一个常见的陷阱是使用useradd
而不是adduser
或 用户和组 (GUI) 应用程序创建新用户。对于前者,默认 shell 设置为/bin/sh
。运行
chsh
(频道安热什ell) 以确保它设置为/bin/bash
。
答案2
确保已启用历史记录。你可以运行以下命令检查当前状态:
set -o
输出应该包含(请注意以下history on
行):
histexpand on
history on
ignoreeof off
如果未启用,则需要运行set -o history
。要使此更改持久化,您需要将其附加到~/.bashrc
:
set -o history
如果您想运行上一个命令,您也可以运行下一个命令:
!!
从Bash 手册页:
Event Designators
An event designator is a reference to a command line entry in the history list.
! Start a history substitution, except when followed by a blank, newline,
carriage return, = or ( (when the extglob shell option is
enabled using the shopt builtin).
!n Refer to command line n.
!-n Refer to the current command line minus n.
!! Refer to the previous command. This is a synonym for `!-1'.
!string
Refer to the most recent command starting with string.
!?string[?]
Refer to the most recent command containing string. The trailing ?
may be omitted if string is followed immediately by a newline.
^string1^string2^
Quick substitution. Repeat the last command, replacing string1 with
string2. Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
!# The entire command line typed so far.
如果您使用 Bash,您也可以使用默认快捷方式浏览历史记录:
- Ctrl+ P:上一个命令
Ctrl+ N:下一个命令
操作历史记录的命令 previous-history (Cp) 从历史记录列表获取上一个命令,并在列表中向后移动。 next-history (Cn) 从历史记录列表获取下一个命令,并在列表中向前移动。
答案3
在终端输入:
gedit ~/.inputrc
然后复制粘贴并保存:
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
从现在开始,您可以在终端进行增量搜索,要找到上一个命令,您只需输入前两个或三个字母,向上的箭头就会快速带您到达那里。
答案4
将环境变量 HISTSIZE 定义为值 -1。
unset HISTSIZE
修复