Linux 之 history

history 命令被用于列出以前输入的命令和 Bash 日志。Bash 将关闭终端会话时所运行的所有命令并写入历史记录文件(~/.bash_history)。

查看history手册:
# help history 
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
Display or manipulate the history list.

Display the history list with line numbers, prefixing each modified
entry with a `*'. An argument of N lists only the last N entries.

Options:
-c clear the history list by deleting all of the entries
-d offset delete the history entry at position OFFSET.

-a append history lines from this session to the history file
-n read all history lines not already read from the history file
and append them to the history list
-r read the history file and append the contents to the history
list
-w write the current history to the history file

-p perform history expansion on each ARG and display the result
without storing it in the history list
-s append the ARGs to the history list as a single entry

If FILENAME is given, it is used as the history file. Otherwise,
if HISTFILE has a value, that is used, else ~/.bash_history.

If the HISTTIMEFORMAT variable is set and not null, its value is used
as a format string for strftime(3) to print the time stamp associated
with each displayed history entry. No time stamps are printed otherwise.

Exit Status:
Returns success unless an invalid option is given or an error occurs.

参数详解
-c 清空历史列表。
-d offset 根据offset删除记录。如果是正数则表示offset位置的记录,如果为负数则表示从结尾向前offset位置的记录。
-a 将当前终端的历史记录行添加到历史记录文件。
-n 将尚未从历史文件中读取的历史行追加到当前历史列表中。
-r 读取历史文件,并将其内容附加到历史列表中。
-w 将当前历史记录列表附加到历史记录文件中并且附加它们到历史列表中。
-p 在每个arg上执行历史记录扩展并在标准输出上显示结果,而不将结果存储在历史记录列表中。
-s 将每个arg作为单个条目附加到历史记录列表。

注:参数是可选项,可以直接使用 history 查看所有历史命令


history的使用🌰:
查看某用户的历史命令:(还可搭配 tail 、grep 、cat 查看筛选历史命令
more /home/$UserName/.bash_history
显示最近的10条历史命令
history 10
快捷执行某条历史命令
# 执行第 N 条历史命令--需要先知道该历史命令行号
# !n

# 执行最后一条 xxx 开头的历史命令
# !xxx

# 执行最后一条历史命令
# !!
or
# !-1
or
# 按 Ctrl+P 或者 使用上方向键
清除历史命令之全部清除
history -c
清除历史命令之部分清除
vim ~/.bash_history
### 进入~/.bash_history文件中删除不想被人看到的历史命令

history -r
### 执行此命令后,上一条编辑命令将会不被保存在~/.bash文件中
清除历史命令之清除指定行
history -d 指定行号