如何从历史记录中获取最后N条命令?


37

我想查看我的计算机中最后N条命令是什么history。我以为history | tail -n 5会做到这一点,但我注意到多行命令所占的行数与其相同。

$ echo "hello
how are you"
$ history | tail -2
how are you"
1051  history | tail -2

所以我的问题是:我是否必须解析命令的输出才能完成此任务?


1
//,这就是为什么我喜欢
stackexchange

Answers:


46

我找到了!

历史[n]

n的参数仅列出最后n行。

$ echo "hello
how are you"
$ history 2
1060  echo "hello
how are you"
1061  history 2

4
这似乎是tcshyashbash。你可能想给相应的信息,其他炮弹一样zshfishksh,和POSIX方式。
斯特凡Chazelas

1
我很乐意,尽管我的计算机上没有安装这些工具。您是否建议任何特定来源来获取信息?在OpenGroup的我看到一个参考pubs.opengroup.org/onlinepubs/9699919799
fedorqui

6
fc -l -2也可以工作(但不会fc -l -2给输出增加电流)
Evgeny Vereshchagin 2015年


fc顺便用来显示最后n个命令-nfrom n commands until last仅显示n(这没有多大意义,因为您需要知道总数)。用德语我们会说ein kleiner aber feiner unterschied:一个小的但令人愉悦的差异。不要忘了使用-l@EvgenyVereshchagin所指出的那样,因为否则您最终会遇到不想要的编辑器。
Timo

0

在OpenBSD 6.3(PD KSH v5.2.14 99/07 / 13.2)中进行了测试。

history [b]

显示从编号为[b]的条目开始的所有历史记录

history [b] [e]

显示从[b]到[e]的历史记录间隔


0

您还可以使用负数,例如:

history -1

或使用范围(最近10个):

history -1 -11 

对于bash 5.0.11不适用于我。
joelostblom

0

当您应用历史记录时,它也会显示最后的历史记录命令。为了避免浪费空间,可以使用这样的别名:

alias hs=' history 16 | head -n 15'

(命令本身history 16 | head -n 15

另一个有用的历史别名:

  alias hsg=' history | grep ' 

(当ctr + R太小而无法选择时)

_history前面的空间将运行未写入历史记录的命令

fc -l#还将列出最后16条命令(以及更多)


2
的确如此,但这些都不能解决当前的问题。
杰夫·谢勒
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.