Answers:
如果您通过Ctrl+ 搜索历史记录r并键入命令的某些字母,而不是按,Enter而是按→,则该命令将显示并且将不会运行。另一种选择是:
history | grep 'mycommand'
这个很好的历史速查表也可能会有所帮助。
fc ### ###
据我所知,这里的每个答案都是不可移植的。对于便携式选项,请考虑POSIX保证fc
:
$ man fc
-e editor使用由editor命名的编辑器来编辑命令。编辑器字符串是一个实用程序名称,可以通过 PATH变量进行搜索...当未指定 -e时, FCEDIT变量中的值将用作默认值。如果 FCEDIT为null或未设置,则 ed将用作编辑器。
-l (字母ell。)列出命令,而不是在命令上调用编辑器。这些命令应按照受 -r影响的第一个和最后一个操作数指示的顺序写入,每个命令后面均带有命令编号。
-n 用 -l列出时,禁止命令编号。
-r 颠倒列出的命令(带有-l)或已编辑的命令(既没有-l也没有-s)的顺序。
-s 在不调用编辑器的情况下重新执行命令。
经营者
首先,最后 选择要列出或编辑的命令。可以访问的先前命令的数量应由 HISTSIZE变量的值确定。first或last或两者的值应为以下值之一:
[+或- ]数目 的正(或负)表示命令号数; 可以使用 -l选项显示命令编号...例如, -1是紧接的前一个命令 ...
当使用-l选项列出命令时,列表中每个命令的格式应如下:
"%d\t%s\n", <line number>, <command>
如果同时指定了-l和-n选项,则每个命令的格式应为:
"\t%s\n", <command>
如果 由多行组成,第一行之后的行应显示为:
"\t%s\n", <continued-command>
但一定要使用-l或-e如果你只希望看到/编辑你的命令。默认情况下,fc
将打开FCEDIT 中请求的命令列表(请注意,该列表与您的EDITOR环境变量不同),并且当FCEDIT退出时,fc
将运行已编辑的命令。
无论如何,这个问题的具体答案可能是:
% fc -l -1
或没有行号:
% fc -ln -1
或最后五个命令以相反的顺序:
% fc -lrn -1 -5
在您的传呼机中:
% fc -lrn -1 -5 |$PAGER
您最后一次致电fc
:
% fc -l fc
bash
,以及其他所有功能。使用bash
并不排除可移植性,但是一定会养成不良习惯。
如果只想使用最后一个命令,请使用:
history | cut -c 8- | tail -n 2 | head -n 1
如果您希望能够重复执行此操作,请在空格前history
使用或使用:
history | cut -c 8- | grep -Ev '^history' | tail -n 1
如果您只想查看以pattern开头的最后一条命令xyz
:
history | cut -c 8- | grep -E '^xyz' | tail -n 1
但是,如果模式是“历史”的初始字符,那么这将不起作用,然后您需要执行以下操作:
history | cut -c 8- | grep -Ev 'history \|' | grep -E '^hist' | tail -n 1
cut
。