本文共 2400 字,大约阅读时间需要 8 分钟。
随着我在终端会话中花费越来越多的时间,感觉就像我一直在寻找使我的日常任务更加高效的新命令一样。 GNU history
命令确实改变了我的工作日。
GNU history
命令保留了从该终端会话运行的所有其他命令的列表,然后允许您重播或重用这些命令,而不必重新键入它们。 如果您是经验丰富的终端用户,您将了解history
的力量,但是对于我们涉水者或新的sysadmin人士而言, history
可立即提高生产力。
首先, history
命令实际上不是命令。 您可以通过在系统上查找命令来亲自查看:
$ which history which: no history in ( / usr / local / bin: / usr / bin: / bin: / usr / games: / usr / local / sbin )
您的计算机找不到history
命令,因为它是Shell的内置关键字。 由于已将其写入您正在使用的shell中,因此历史记录的行为方式可能会有所不同,具体取决于您是否使用 ,tcsh, ,dash, ,ksh等。 本文基于历史记录的Bash实现,因此某些功能可能无法在其他Shell中使用。 但是,大多数基本功能是相同的。
要查看运行中的history
,请在Linux安装上打开一个终端程序,然后键入:
$ history
这是我得到的答复:
1 clear 2 ls -al 3 sudo dnf update -y 4 history
history
命令显示了自启动会话以来输入的命令列表。 history
的喜悦在于,现在您可以使用以下命令来重播其中的任何一个:
$ !3
提示符处的!3
命令告诉外壳程序在历史记录列表的第3行重新运行该命令。 我还可以通过输入以下命令来访问该命令:
$ ! sudo dnf
这会提示history
以搜索与您提供的模式匹配的最后一个命令(在本例中,该模式为dnf )并运行它。
您还可以使用history
通过键入!!
来重新运行最后输入的命令!!
。 通过将其与grep
配对,可以搜索与文本模式匹配的命令,或者将其与tail
一起使用,可以找到执行的最后几个命令。 例如:
$ history | grep dnf 3 sudo dnf update -y 5 history | grep dnf $ history | tail -n 3 4 history 5 history | grep dnf 6 history | tail -n 3
获得此搜索功能的另一种方法是键入Ctrl-R
来调用命令历史记录的递归搜索。 输入此内容后,提示将变为:
(reverse-i-search)`':
现在您可以开始键入命令,然后按Return或Enter将显示匹配的命令供您执行。
您还可以使用history
以不同的语法重新运行命令。 您可以使用history
修改历史history
。 例如,如果我想更改以前的命令history | grep dnf
history | grep dnf
的history | grep ssh
history | grep ssh
,我可以在提示符下执行以下操作:
$ ^dnf^ssh^
该命令将重新运行,但dnf
被ssh
取代。 换句话说,将运行以下命令:
$ history | grep ssh
您可能有时需要删除历史记录文件中的部分或全部命令。 如果要删除特定命令,请输入history -d <line number>
。 要清除历史记录文件的全部内容,请执行history -c
。
历史记录文件存储在您也可以修改的文件中。 Bash Shell用户在其主目录中以.bash_history
找到它。
您还可以对history
进行其他操作:
有关history
命令以及您可以使用它进行的其他有趣操作的更多信息,请查看Seth Kenlon的有关的文章, 和 。
本文最初于2018年6月发布,并已由编辑者进行了附加信息更新。
翻译自:
转载地址:http://kvdzd.baihongyu.com/