- 删除无意义命令
export HISTIGNORE='pwd:exit:fg:bg:top:clear:history:ls:uptime:df'
使用该选项后,在历史记录中就不会记录选项后包含的命令。
- 忽略敏感命令
export HISTCONTROL=ignorespace
例如:你不想在历史记录中出现带有密码的命令,可以在输入密码的命令前添加空格,这样就不会保存在历史记录中。
- 删除重复命令
HISTCONTROL=ignoredups
使用改选项后,历史记录中不会记录连续重复执行的命令,例如:连续输入了 3 次 ls,只会记录一次。
如果你想更为激进,那么可以使用以下选项,删除整个历史记录里面的重复项。
HISTCONTROL=erasedups
-
不丢失重要命令
Bash 的 history 文件默认是覆盖,如果并发打开了多个 Shell 会话,只会记录最后一个退出的 Shell 的命令历史(历史命令保存在内存中,且在退出时写入历史文件)。
使用以下选项,将历史记录修改为追加模式。
shopt -s histappend
与此同时,在共享 Shell 的情况下,可能会由于历史文件太小而丢失重要的记录,因此,可以把历史记录的上限调大,避免丢失有用的命令。
HISTSIZE=10000
HISTFILESIZE=10000
HISTFILESIZE
定义了在 .bash_history
中保存命令的记录总数.
HISTSIZE
定义了 history
命令输出的记录数
- 记录命令执行时间
export HISTTIMEFORMAT="%F %T "
HISTTIMEFORMAT
的格式是 strftime
函数的格式:%F : Y-M-D ,%T: H-M-S,需要在后面再加个空格,不然时间会和命令连到一起。
- 修改历史记录文件名称
默认情况下,历史记录都保存在 ~/.bash_history
文件中。
export HISTFILE=/var/history/$USER-$UID.log
使用HISTFILE
将历史记录保存到指定的文件中。
- 实时追加历史命令
PROMPT_COMMAND="history -a"
PROMPT_COMMAND
添加的是每个命令后执行的命令,添加上 history -a
命令,可以直接将当前缓冲区的命令写入到文件中。
# history 命令一些常用选项:
-N: 显示历史记录中最近的N个记录;
-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中;
-d<offset>:删除历史记录中第offset个命令
-n<filename>:读取指定文件