Bash脚本来检测终端中运行的最后一个命令

问题描述

我必须制作一个脚本,以打印用户使用的所有命令。因此,我尝试制作一个后台运行的脚本,该脚本删除历史记录并注册从那一刻起运行的每个命令,并将其回显到文件中。这是我做的,但是不起作用。

function add_new_command() {
    nr=$(history | wc -l)
    
    if [ $nr -eq 1 ]; then 
        comanda=$(history | head -n 1)
        echo $comanda > mycommands
        history -c
    fi
}

history -c
while true
do
add_new_command
done

解决方法

更好的方法是使用内置变量来控制历史记录。

history -c
BASH_HISTORY=mycommands
,

我进行了更改,我认为它现在可以工作。我在〜/ .bashrc中添加了下2行:

    shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

现在来自1个以上终端的所有命令都立即复制到〜/ .bash_history中。所以我要做的就是复制该文件。