文章目录
- history命令
- 语法:
- 选项:
- 参数:
- n:打印最近的n条历史命令。
- 快捷键
- 修改history配置,优化记录
- 配置显示执行历史记录时间:
- 使用 HISTSIZE 控制历史命令记录的总行数
- 使用 HISTFILE 更改历史文件名称
- 使用 HISTCONTROL 从命令历史中剔除连续重复的条目
- 使用 HISTCONTROL 强制 history 不记住特定的命令
- 使用HISTSIZE禁用history
- 使用HISTIGNORE忽略历史中的特定命令
history命令
history命令: 是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE
进行控制。默认是不显示命令的执行时间,命令的执行时间,history 已经记录,只是没有显示。
注: 如想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查该用户~
目录下的.bash_history
文件,该文件记录了用户所使用的命令和历史信息。
语法:
history (选项) (参数)
选项:
-
-N
: 显示历史记录中最近的N个记录; -
-c
:清空当前历史命令; -
-a
:将历史命令缓冲区中命令写入历史命令文件中; -
-r
:将历史命令文件中的命令读入当前历史命令缓冲区; -
-w
:将当前历史命令缓冲区命令写入历史命令文件中; -
-d <offset>
:删除历史记录中第offset个命令 -
-n <filename>
:读取指定文件
参数:
n:打印最近的n条历史命令。
快捷键
- 使用CTRL+R搜索并执行历史命令
- 从命令历史中执行一个指定的命令
# !number 执行第几条命令
!4
- 指定关键字来执行以前的命令
输入!ps
并回车,将执行以ps
打头的命令 - 快速重复执行上一条命令
以下四种方法,上方向键
、!!
、!-1
、crtl+p
- 当前命令获取上一条命令参数
!!:$
与!$
都可以为当前命令获得上一条命令的参数!^
获得上一条命令的第一项参数
修改history配置,优化记录
可以直接修改配置文件增加环境变量,也可以使用export
命令仅为此次登录修改。
配置显示执行历史记录时间:
默认情况下,history并不记录命令的执行时间,可以使用HISTTIMEFORMAT
在历史中显示TIMESTAMP
。
把 export HISTTIMEFORMAT="%F %T "
追加到~/.bashrc
,执行source .bashrc
让其生效。仅针对当前账号有效。
使用 HISTSIZE 控制历史命令记录的总行数
将这两行内容追加到/etc/profile
文件中,当你再次重新登录bash
时,历史命令总行数会变成100000
export HISTSIZE=100000
export HISTFILESIZE=100000
使用 HISTFILE 更改历史文件名称
默认情况下,历史命令存放在~/.bash_history
文件中,可以修改环境变量
export HISTFILE=/.logs/history_${LOGNAME}
备注:这样可以将每个用户的历史文件清晰的使用文件名来标记,方便分析
使用 HISTCONTROL 从命令历史中剔除连续重复的条目
HISTCONTROL=ignoredups
剔除连续的相同命令的条目,仅剩余一条,如下:
#执行命令
export HISTCONTROL=ignoredups
#执行3次相同命令
# cd
# cd
# cd
效果
history | tail -n 5
234 2022-08-22 20:11:14 history
235 2022-08-22 20:11:31 export HISTCONTROL=ignoredups
236 2022-08-22 20:11:43 cd
237 2022-08-22 20:11:58 history | tail -n 5
三个cd
变成一个了
使用 HISTCONTROL 强制 history 不记住特定的命令
HISTCONTROL=ignorespace
,在不想被记住的命令前面输入一个空格
$ export HISTCONTROL=ignorespace
$ cd ./
$ ls
$ ll
注意,我在ls
前输入了一个空格,ls
没有保存!
$ history | tail -5
241 export HISTCONTROL=ignorespace
242 cd ./
243 ll
244 history | tail -5
使用HISTSIZE禁用history
如果想禁用history,可以将HISTSIZE设置为0:
$ export HISTSIZE=0
$ history
使用HISTIGNORE忽略历史中的特定命令
忽略pwd
、ls
命令:
$ export HISTIGNORE="pwd:ls:"
$ pwd
$ cd
$ ls
效果如下
$ history 4
257 export HISTIGNORE="pwd:ls:"
258 cd
259 history 5