博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在Linux中使用history命令
阅读量:2523 次
发布时间:2019-05-11

本文共 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中使用。 但是,大多数基本功能是相同的。

历史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的有关的文章, 和 。


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

翻译自:

转载地址:http://kvdzd.baihongyu.com/

你可能感兴趣的文章
Git报错:insufficient permission for adding an object to repository database .git/objects
查看>>
ajax跨域,携带cookie
查看>>
BZOJ 1600: [Usaco2008 Oct]建造栅栏( dp )
查看>>
洛谷 CF937A Olympiad
查看>>
Codeforces Round #445 C. Petya and Catacombs【思维/题意】
查看>>
用MATLAB同时作多幅图
查看>>
python中map的排序以及取出map中取最大最小值
查看>>
ROR 第一章 从零到部署--第一个程序
查看>>
<form>标签
查看>>
vue去掉地址栏# 方法
查看>>
Lambda03 方法引用、类型判断、变量引用
查看>>
was集群下基于接口分布式架构和开发经验谈
查看>>
MySQL学习——MySQL数据库概述与基础
查看>>
ES索引模板
查看>>
HDU2112 HDU Today 最短路+字符串哈希
查看>>
JPanel重绘
查看>>
图片放大器——wpf
查看>>
SCALA STEP BY STEP
查看>>
cocos2d-x学习笔记
查看>>
MySql中的变量定义
查看>>