4. bash 操作历史

1.简介

Bash 会保留用户的操作历史,即用户输入的每一条命令都会记录,默认是保存最近的500条命令。有了操作历史以后,就可以使用方向键的,快速浏览上一条和下一条命令。

退出当前 Shell 的时候,Bash 会将用户在当前 Shell 的操作历史写入~/.bash_history文件,该文件默认储存500个操作。

环境变量HISTFILE总是指向这个文件。

echo $HISTFILE

直接结果:

image.png

2.history 命令

history命令会输出.bash_history文件的全部内容,即输出操作历史。

history

用户可以使用这个命令,查看最近的操作。相比直接读取.bash_history文件,它的优势在于所有命令之前加上了行号。最近的操作在最后面,行号最大:

image.png

如果想搜索某个以前执行的命令,可以配合grep命令搜索操作历史。

history | grep /usr/bin

上面命令返回.bash_history文件里面,那些包含/usr/bin的命令。

history命令的-c参数可以清除操作历史,即清空.bash_history文件。

history -c

3.环境变量

3.1 HISTTIMEFORMAT

通过定制环境变量HISTTIMEFORMAThistory的输出结果还可以显示每个操作的时间。

HISTTIMEFORMAT='%F %T  '

此时执行结果:

image.png

上面代码中,%F相当于%Y - %m - %d(年-月-日),%T相当于 %H : %M : %S(时:分:秒)。

只要设置HISTTIMEFORMAT这个环境变量,就会在.bash_history文件保存命令的执行时间戳。如果不设置,就不会保存时间戳。

3.2 HISTSIZE

环境变量HISTSIZE设置保存历史操作的数量。

HISTSIZE=10000

上面命令设置保存过去10000条操作历史。

如果不希望保存本次操作的历史,可以设置HISTSIZE等于0。

HISTSIZE=0

如果HISTSIZE=0写入用户主目录的~/.bashrc文件,那么就不会保留该用户的操作历史。如果写入/etc/profile,整个系统都不会保留操作历史。

3.3 HISTIGNORE

环境变量HISTIGNORE可以设置哪些命令不写入操作历史。

HISTIGNORE='pwd:ls:exit'

上面示例设置,pwdlsexit这三个命令不写入操作历史。

4.搜索历史

输入命令时,按下Ctrl + r快捷键,就可以搜索操作历史,选择以前执行过的命令。

Ctrl + r相当于打开一个.bash_history文件的搜索接口,直接键入命令的开头部分,Shell 就会自动在该文件中反向查询(即先查询最近的命令),显示最近一条匹配的结果,这时按下回车键,就会执行那条命令。

5.行号执行

操作历史的每一条记录都有行号。知道了命令的行号以后,可以用感叹号 + 行号执行该命令。如果想要执行.bash_history里面的第8条命令,可以像下面这样操作。

!8

如果想执行本次 Shell 对话中倒数的命令,比如执行倒数第3条命令,就可以输入!-3

!-3

上面示例中,!-3返回倒数第3条命令。

它跟! + 行号的主要区别是,后者是在.bash_history文件中从头开始计算行数,而!- 数字是从底部开始向上计算行数。

!!命令返回上一条命令。如果需要重复执行某一条命令,就可以不断键入!!,这样非常方便。它等同于!-1

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux