收集云服务器优惠信息
记录云服务器使用心得

Linux Bash Shell学习笔记: History命令典型示例详解

我们在日常工作中经常使用history命令来查看命令的历史记录或获取用户执行的命令信息。在这篇文章中,小编将介绍如何有效地使用history命令来提取在Bash shell中由用户执行的命令。这对于审计目的或查找特定日期和时间执行了哪个命令可能很有用。

默认情况下,在执行history命令时日期和时间戳是不可见的。然而,bash shell提供了命令行界面(CLI)工具来编辑用户的命令历史记录。接下来,让我们探索一些有用的方法技巧和history命令的强大之处。

1、列出Linux中所有最后执行的命令

要查看上次执行的命令及其行号的完整列表,请使用以下命令:

history

显示最后执行的命令

2、列出所有带日期和时间戳的命令

要列出Linux系统中的所有命令及其日期和时间戳,可以使用History命令以及HISTTIMEFORMAT环境变量,命令如下:

export HISTTIMEFORMAT="%F %T "

现在,你可以使用history命令列出所有命令及其各自的日期和时间戳:

history

以下是HISTTIMEFORMAT='%F %T '中中使用的格式占位符的解释:

  • %F:这表示完整日期,格式为“ YYYY-MM-DD ”。
  • %T:表示时间,格式为“ HH:MM:SS ”。

在历史命令中启用时间戳

3、忽略history命令

要在history记录中忽略某个命令,可以使用 “HISTIGNORE” 环境变量,该变量用于指定不应记录在命令历史中的命令。

你可以通过使用 “export” 命令,后面跟要忽略的命令来设置它。

export HISTIGNORE='ls -l:pwd:date:'

在此示例中,指定了“ ls -l ”、“ pwd ”和“ date ”,这意味着任何包含这些字符串的命令都不会保存在历史记录中。

4、忽略history中的重复命令

要忽略history中的重复命令,可以使用以下命令,该命令将指示系统不要在history记录中保存重复的命令,这将有助于保持history记录干净且没有多余的重复条目。

export HISTCONTROL=ignoredups

选项ignoredups告诉系统在将重复命令记录到history记录中时忽略它们。如果连续多次执行同一命令,则只有第一次出现的命令会存储在历史记录中。

5、永久保存export命令

要在Linux环境中永久保存HISTTIMEFORMATHISTIGNOREHISTCONTROL的配置,可以将它们添加到.bash_profile文件中,每次启动新的shell会话时都会执行该文件。

nano ~/.bash_profile

将以下行添加到.bash_profile文件以设置环境变量:

export HISTTIMEFORMAT="%F %T "
export HISTIGNORE="some:commands:to:ignore"
export HISTCONTROL=ignoredups

要应用更改,请重新启动终端或在终端中运行以下命令:

source ~/.bash_profile

6、取消设置Export命令

要取消设置HISTTIMEFORMATHISTCONTROL环境变量的设置,可以使用unset命令删除它们的值,这会将这些设置恢复为其默认配置,命令如下:

unset HISTTIMEFORMAT
unset HISTCONTROL

执行这些命令后,命令历史记录中的时间戳显示将恢复为默认设置,并且不再自动过滤掉重复命令。

7、列出特定用户执行的命令

要列出特定用户执行的命令,可以使用该用户的.bash_history文件,该文件存储在Bash shell中执行的命令的历史记录。

sudo cat /home/username/.bash_history

如果要根据特定模式过滤命令历史记录,请使用grep命令以及包含该单词的命令,具体如下:

sudo cat /home/username/.bash_history | grep "ls"

8、禁用命令历史记录

要在Linux系统中禁用命令历史记录的存储,可以取消设置HISTFILE变量,该变量负责维护文件中的命令历史记录。

unset HISTFILE

通过取消设置HISTFILE变量,可以防止系统存储命令历史记录,确保不会为将来的会话记录在终端中执行的命令。

需要注意的是,此更改仅适用于当前会话,并且不会在不同的终端会话中持续存在。如果你想让此更改永久生效,可以考虑更新shell的配置文件.bash_profile,以在每次登录时取消设置HISTFILE变量。

9、删除或清除命令历史记录

可以使用向上和向下箭头键查看以前使用过的命令,这可能有用,但也可能很烦人。要删除或清除bash历史记录列表中的所有条目,可以使用'-c'选项:

history -c

要清除所有用户的命令历史记录,可以删除或截断每个用户位于/home/[username]/.bash_history的历史记录文件。

> /home/[username]/.bash_history
或者
rm /home/[username]/.bash_history

10、使用Grep命令搜索历史命令

要过滤历史命令输出中的命令,可以使用grep命令,它只会显示历史记录中包含该关键字的命令,如下所示:

history | grep "ls"
history | grep "pwd"
history | grep "date"

11、搜索历史记录中最近的命令

要在历史记录中搜索最近的命令,可以使用grep命令以及命令历史记录中包含关键字(例如“ssh”)的命令。

history | grep "ssh"

你还可以使用‘Ctrl+r'命令搜索以前执行的命令。找到要查找的命令后,按“ Enter ”执行它,或按“ esc ”取消。

(reverse-i-search)`source ': source .bash_profile

12、调用历史记录中最后执行的命令

要从Linux中的命令历史记录中的特定位置调用最后执行的命令,可以将history命令与特定行号一起使用。

例如,要查看带有行号的命令历史记录,请使用History命令:

history

接下来,确定与要调用的命令关联的行号(本文中以第8条命令为例),然后使用!后跟行号来调用该命令,如下所示:

!8

13、调用最后执行的特定命令

你可以使用'!'符号后跟该命令的一些字母,来调用先前使用过的命令,比如“netstat -np | grep 22”。

所以,如果你想调用“ netstat -np | grep 22 ”命令,可以在终端中键入'!net'并按Enter,这将执行命令历史记录中最近的以“ net ”开头的命令。

!net

总结

总之,以上介绍了history命令的一些有用示例,但仍有更多内容需要探索,感兴趣的可以找一些资料看看。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《Linux Bash Shell学习笔记: History命令典型示例详解》
文章链接:https://www.ecscoupon.com/4776.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!