使用向上箭头运行上一个命令


11

我需要使用向上箭头来运行先前的命令的什么设置?在Mac上,我可以使用向上箭头重新运行刚刚运行的命令,但是它似乎不适用于我的bash shell。

我使用8.04(由于某些编译器版本问题,我无法使用最新的发行版)。

添加

我没有做任何更改,因为它是Mac上VMWare Fusion的全新安装。


3
在默认配置中,向上箭头可完美工作:您是否修改了某些内容?
enzotib 2011年

正如@enzotib所说,bash默认情况下会执行此操作,但其他一些操作(例如sh)则不会!
罗里·阿尔索普

Answers:


10

确保您的历史记录已启用。您可以通过运行以下命令检查当前状态:

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:下一条命令

    用于操作历史记录的命令历史记录(Cp)从历史记录列表中获取先前的命令,然后在列表中移回。next-history(Cn)从历史记录列表中获取下一个命令,在列表中向前移动。


1
我检查了设置是否正确,但是向上箭头键不起作用。但是,我可以使用Ctrl-P / N获得相同的结果。谢谢。
prosseek 2011年

@prosseek在这种情况下,你有没有改变/etc/inputrc~/.inputrc?另外,您使用的终端中的向上和向下箭头会产生什么转义序列?要进行检查,请运行cat,然后在空白行上,按上下箭头,然后按Ctrl + C退出cat。它在这里产生^[[A^[[B
geirha

@geirha:我没有〜/ .inputrc文件,并且我没有更改/ etc / inputrc的任何内容。对于转义序列,屏幕上什么也没看到。
prosseek 2011年

@prosseek然后听起来好像箭头键根本无法到达终端。也许VMWare接口正在过滤掉它们或其他东西。
geirha 2011年

14

确保您实际上正在使用bash。常见的陷阱是使用useradd而不是adduserUsers and groups(GUI)应用程序来创建新用户。对于前者,默认外壳程序集为/bin/sh。运行 chshCH安格SH ELL),以确保它的设置/bin/bash


1

在终端中输入:

gedit  ~/.inputrc

然后复制粘贴并保存:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

从现在开始,您可以在终端中进行增量搜索,找到上一个命令所需要做的就是输入前两个或三个字母,向上箭头会迅速带您到那里。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.