如何在Linux中使用history命令

随着我在终端会话中花费越来越多的时间,感觉就像我一直在寻找使我的日常任务更加高效的新命令一样。 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中,因此历史记录的行为方式可能会有所不同,具体取决于您是否使用Bash ,tcsh, Zsh ,dash, fish ,ksh等。 本文基于历史记录的Bash实现,因此某些功能可能无法在其他Shell中使用。 但是,大多数基本功能是相同的。

历史101

要查看运行中的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)`': 

现在您可以开始键入命令,然后按ReturnEnter将显示匹配的命令供您执行。

更改执行的命令

您还可以使用history以不同的语法重新运行命令。 您可以使用history修改历史history 。 例如,如果我想更改以前的命令history | grep dnf history | grep dnfhistory | grep ssh history | grep ssh ,我可以在提示符下执行以下操作:

 $ ^dnf^ssh^ 

该命令将重新运行,但dnfssh取代。 换句话说,将运行以下命令:

 $  history | grep ssh 

删除历史

您可能有时需要删除历史记录文件中的部分或全部命令。 如果要删除特定命令,请输入history -d <line number> 。 要清除历史记录文件的全部内容,请执行history -c

历史记录文件存储在您也可以修改的文件中。 Bash Shell用户在其主目录中以.bash_history找到它。

下一步

您还可以对history进行其他操作:

  • 将历史记录缓冲区的大小设置为一定数量的命令
  • 记录历史中每一行的日期和时间
  • 防止某些命令记录在历史记录中

有关history命令以及您可以使用它进行的其他有趣操作的更多信息,请查看Seth Kenlon的有关分析历史的文章, 历史搜索修饰符GNU Bash手册


本文最初于2018年6月发布,并已由编辑者进行了附加信息更新。

翻译自: https://opensource.com/article/18/6/history-command

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值