
【注】具体详解参见 help 手册。
history 内建命令用于显示或操纵历史命令列表。
history [NUM|-c|-d [offset]]
history [-a|-n|-r|-w] [FILE]
history [-p|-s] ARG [ARG ...]其中,FILE 用于指定保存历史命令列表的文件,默认是~/.bash_history 文件。若未指定任何选项参数,则默认显示保存的所有历史命令列表。
HISTSIZE 环境变量。HISTFILE 环境变量。HISTTIMEFORMAT 环境变量(被用于 strftime(3) 的格式字符串来打印时间戳),该环境变量默认为空不打印时间戳。history -a 命令强制写入)。将以下代码添加到 ~/.bashrc 文件中:
export HISTTIMEFORMAT="%F %T "然后刷新 ~/.bashrc 文件:
source ~/.bashrc测试一下,本人终端测试部分结果如下:
...
486 2020-04-29 13:36:56 which
487 2020-04-29 13:36:56 cat -n .bash_history
488 2020-04-29 13:36:56 exit
489 2020-04-29 13:36:56 history -d -5
490 2020-04-29 13:36:56 cat -n .bash_history
...选项参数 | 说明 |
|---|---|
NUM | 显示最近的 NUM 个命令条目 |
-c | 删除所有命令条目,清空历史命令列表 |
-d offset | 从 offset 指定的区域删除历史命令记录 offset 取值格式为 N[-M]:若未指定 -M 选项,则指定删除第 N 条历史记录;若指定 -M 选项,则指定删除区间 [N,M] 内的所有历史记录【注】N、M 均可以取负数,表示历史命令文件中倒数 N、M |
-a | 将当前 Shell 会话的命令内存缓冲区强制追加到历史命令文件中 |
-n | 从历史命令文件中读取所有未被当前 Shell 会话读取的行追加到当前 Shell 会话的历史命令内存缓冲区中 |
-r | 读取历史命令文件并将所有内容附加到当前 Shell 会话的历史命令内存缓冲区中 |
-w | 将当前 Shell 会话的历史命令内存缓冲区写入到历史命令文件中 |
-p | 对每个一个 ARG 参数展开历史并显示结果,但不存储到内存缓冲区中 |
-s | 将 ARG 参数列表作为单条记录追加到内存缓冲区内(可用于伪造历史命令记录) |
在终端可用 !{N|string}[:M] 来获取内存缓冲区的历史命令记录:
N 代表第 N 条历史命令(N 取正值于 history 显示的命令序号,不在 history 显示命令序号范围内则无效);N 也可以取负数,表示内存缓冲区中倒数第 N 条历史记录;N 还可以取 !(即 !! 命令),表示内存缓冲区中上一条历史命令string 指定搜索最近一条以 string 开头的命令。M 代表指定命令的第 M 个参数(若未给定 N,则默认指定上一条命令),M 取 0 代表命令名本身;M 还可以取 $ 、^ 、*,分别代表第一个参数(即同 M 取 1)、最后一个参数、所有参数。