要实现你提到的 history 命令的功能,可以按照以下步骤配置你的Ubuntu 22.04系统:

1. 记录IP地址、时间、用户和执行的命令

首先,你需要在 ~/.bashrc 文件中配置自定义 HISTTIMEFORMATPROMPT_COMMAND。同时,你需要确保 SSH 登录时获取用户的 IP 地址并记录到环境变量中。

修改 ~/.bashrc 文件:

1
2
3
4
5
6
7
8
9
10
# 获取用户登录的IP地址
export HIST_IP=$(who -m | awk '{print $NF}' | tr -d '()')

# 设置命令历史记录格式为:时间戳 用户名@IP地址 命令
export HISTTIMEFORMAT="%F %T ${USER}@${HIST_IP} "

# 增加多终端历史保存功能并确保命令历史持久性
shopt -s histappend
# PROMPT_COMMAND 中的命令会在每次显示新的提示符之前执行。这意味着每次你输入一个命令并按下回车后,Bash 会先执行 PROMPT_COMMAND 中定义的命令,然后才# 会返回新的命令提示符。
PROMPT_COMMAND='history -a; history -n;${PROMPT_COMMAND}'

2. 增加历史记录的保存数量

~/.bashrc 文件中增加或修改以下内容:

1
2
3
4
#内存中保存的命令历史记录的最大条目数
HISTSIZE=100000
#保存到历史文件中的命令历史记录的最大条目数
HISTFILESIZE=200000

3. 保存多终端的命令历史

前面配置的 shopt -s histappendPROMPT_COMMAND 已经实现了保存多终端的历史记录功能。

4. 命令历史记录持久性

同样,通过将 history -a; history -n 加入 PROMPT_COMMAND,每次执行命令后,都会立即将命令保存到历史文件中并加载新历史记录。

5. 防止 history -c 命令清空历史

为了防止用户执行 history -c 清空历史记录,可以在 ~/.bashrc 中添加以下内容:

最后,别忘了:

1
source ~/.bashrc

以使这些更改立即生效。

通过以上配置,你的 history 命令将能够满足你对历史记录的所有需求,包括记录IP、时间、用户,增加历史记录保存数量,保持多终端的历史记录一致性,并防止历史记录被清空。