提示:以下所有命令都在Ubuntu-24.04-live-server-amd64系统中运行
前言
history 命令用于显示和操作当前用户在当前会话中执行过的命令历史记录。它是 Bash shell 的内置命令,提供了一些选项和参数来查看、管理和操作命令历史记录。
一、基本用法:
- 显示命令历史记录:
执行 history 命令时,会显示当前会话中执行过的所有命令,每条命令前面都有一个序号。
history
示例输出:
- 执行历史记录中的命令:
可以使用 ! 后跟命令的序号来执行历史记录中的命令。例如,执行序号为 1 的命令:
!1
这会执行命令 ip add
- 如果你只想显示最近的10条命令
history 10
4.清空当前会话的历史记录:
使用 -c 参数可以清空当前会话的命令历史记录,
注意这只是清除当前会话的历史记录
history -c
5.保存当前会话的历史记录:
使用 -w 参数可以将当前会话的命令历史记录保存到历史记录文件中(默认为 ~/.bash_history):
history -w
6.重新加载历史记录文件:
使用 -r 参数可以重新加载历史记录文件,这在修改历史记录文件后很有用:
history -r
7.查找历史记录:
可以通过按 Ctrl + R 进行交互式搜索历史记录。按下这个组合键后,可以输入关键字来搜索命令历史记录,然后按 Enter 来执行匹配的命令。
二、查看其他用户历史
- 首先,确定你想要查看历史记录的用户的家目录路径。
sudo ls /home # 查看系统中的用户家目录
- 使用 sudo 命令访问目标用户的历史记录文件。例如,查看用户 john 的历史记录:
sudo cat /home/john/.bash_history
或者,如果你只需要列出命令而不需要内容,可以使用 less 命令来进行查看:
sudo less /home/john/.bash_history
- 切换到目标用户查看
- 如果你有权限或者可以通过 sudo 切换到目标用户,你可以直接切换到该用户并查看其历史记录文件。
sudo su - john # 切换到 john 用户
cat ~/.bash_history # 查看历史记录文件
exit # 退出 john 用户登录
- 或者,如果你只是想列出而不需要内容,可以使用 less:
sudo su - john -c "less ~/.bash_history"
三、增加时间戳
- 使用 history 查看历史命令时,默认情况下,历史记录文件中不包含时间戳。这对我们检查系统安全不能确定运行的命令是今天运行的还是去年运行,很不方便,以下是介绍把时间戳增加进去的方法
- 临时性
这是针对当前用户有效,重启后失效
export HISTTIMEFORMAT="%F %T "
- 针对指定用户永久有效,例如 asd 用户,重启后只有 asd 用户有效,其它用户无效
echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc
source ~/.bashrc
- 对所有用户永久有效
sudo sh -c 'echo "export HISTTIMEFORMAT=\"%F %T \"" >> /etc/bash.bashrc'
source /etc/bash.bashrc
- 效果
结语
history 命令是管理和回顾命令行操作非常有用的工具,它可以帮助用户快速查找、执行和管理之前执行过的命令。