修改 Linux 中保存到 history/.bash_history 的命令行

修改 Linux 中保存到 history/.bash_history 的命令行

当命令保存到 Linux 的历史记录中时,是否有某种方法可以在历史记录中的命令行前面添加远程 SSH IP 地址和进程 ID,以便轻松地对来自同一 SSH 会话的命令进行分组,并查看它们的运行位置?我知道如何获取 IP 地址和进程 ID,但我不知道如何将其保存到历史记录中。

是否有某种方法可以修改保存到 .bash_history 的命令行,或者有其他方法来实现这一点?

答案1

即使可以修改已保存的命令,也不建议这样做,因为如果您要使用它(例如通过向上箭头、ctrl+r 等),这会影响实际的命令历史记录。注释在历史文件中是安全的(例如时间戳),因此基于此,这里有一种方法可以将此信息作为注释记录到历史记录中。它的缺点是按 ctrl+c 将导致 $PROMPT_COMMAND 运行,从而将不必要的注释添加到历史文件中,但这是相对较小的问题,除此之外它似乎可以解决问题。以下内容可以添加到目标用户的 ~/.bash_profile 文件中。为了清楚起见,添加的注释很冗长。

shopt -s histappend
PROMPT_COMMAND='history -a; ssh_ip=`echo $SSH_CLIENT|awk "{print \\\$1}"`; echo "#command above was run from PPID $PPID, IP $ssh_ip" >>~/.bash_history '

相关内容