Linux中的历史命令介绍

62 阅读4分钟

历史命令是用来查看Linux终端中以前执行的命令。在本文中,我们将讨论常用的历史命令。

目录:

  1. 简介
  2. 语法
  3. 命令
  4. 总结
  5. 参考文献

介绍

历史命令是用来在Linux终端中查看以前执行的命令。这使我们能够避免打错字或不得不记住以前执行过的很长的复杂命令。

我们还可以使用上/下、Ctrl+n/Ctrl+p来滚动浏览bash历史。
命令的历史记录保存在主目录下的*.bash_history*文件中,你可以通过写,cat ~/.bash_history命令来查看它。 默认情况下,历史 命令将显示最近的500条命令,从老的到最新的(最高数字)。 历史命令将把每个执行的命令当作一个单独的事件,然后将每个事件与一个数字联系起来,以便在需要时调用或修改该命令。 Linux中的历史命令被软件开发者用来:

  • 快速找到他们在某项任务中使用过的命令。
  • 重复使用命令,而不是再次键入它。

语法。

语法如下:

history

各种选项包括:
-c ,通过删除所有条目清除历史列表 d,删除OFFSET位置的历史条目
-a ,将当前会话的历史行附加到历史文件中 n,读取所有尚未从历史文件中读取的历史行
并将其附加到历史列表中
r,读取历史文件并将内容附加到历史中 -w,将当前历史写入历史文件 -p,执行历史扩展 -s,将ARG作为单一条目附加到历史列表中

命令

你可以通过键入...查看命令历史:

history

不带任何选项。

输出将打印出所有以前使用过的命令,最近的命令在列表的底部,我们可以通过以下方法获得更多信息,如这些命令被执行的确切时间,
首先我们创建一个shell变量HISTTIMEFORMAT

第二,我们定义如下:

HISTTIMEFORMAT="%d/%m/%y %T "

第三,我们把它添加到~/.bash_profile,如下所示:

echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile

其中*%d*,%m,%y, %T分别代表日、月、年和时间。
然后我们把它加载到当前的shell中,如下所示:

. ~/.bash_profile

现在当我们运行history命令时,命令会伴随着日期和时间:

508  28/01/22 01:59:03 cat ~/.bash_history
509  28/01/22 02:05:26 HISTTIMEFORMAT="%d/%m/%y %T "

为了显示历史上的第n条命令,我们写道:

!100

上述命令将执行第100条命令。

要执行最近的命令,我们写道:

!!

当我们试图在没有使用sudo权限的情况下执行一条命令时很有用,下一次我们输入sudo !!,这将以sudo权限运行前一条命令。

我们还可以通过写来显示最后的n个命令:

history 10

这条命令将显示最后的10条命令。

我们也可以通过书写来显示一个命令的名称:

!ping

该命令将显示最近一次使用的ping命令。

为了通过指定搜索模式来显示命令的历史,我们使用文本过滤命令grep与history相结合,如下所示:

history | grep pi

输出的是所有匹配模式pi的命令,也就是所有具有匹配模式的命令。

我们还可以通过使用Ctrl+r来搜索以前执行的命令,这样就会出现一个提示:

(reverse-i-search)`':

我们可以用它来搜索命令。

要把最近的命令(history | grep pi*)改为history | grep ls,我们可以写:

^pi^ls^

现在输出的是历史命令中所有与ls匹配的模式。

保存当前会话的历史,我们使用-a选项:

history -a

Bash的历史记录在注销之前不会被写入*.bash_history*文件,因此这可能会使我们难以利用这个文件来编写脚本。

我们通过使用-w选项来解决这个问题,把历史记录写到历史文件中:

history -w

删除历史记录,我们使用*-d*选项,如下所示:

history -d 100

这个命令执行后,第100条命令被删除。

我们还可以删除一个范围的行,如下:

history -d 100 120

上面的命令删除了从第100行到第120行的历史行。

-c选项是用来删除整个历史记录的:

history -c

总结

命令历史保存在~主目录下的*.bash_history文件中。由于它是隐藏的(前面是.),我们使用ls -a*命令来列出它。

参考资料

  1. history --help命令和history手册页。(man history)