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

Linux 检测终端中运行的最后一个命令的Bash脚本,linux,bash,terminal,history,Linux,Bash,Terminal,History,我必须制作一个脚本来打印用户使用的所有命令。所以我试着制作一个脚本,它将在后台运行,删除历史记录,注册从那一刻开始运行的每个命令,并在一个文件中回显它。这是我做的,但不起作用 function add_new_command() { nr=$(history | wc -l) if [ $nr -eq 1 ]; then comanda=$(history | head -n 1) echo $comanda > mycomman

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

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中添加了接下来的两行:

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

现在,来自多个终端的所有命令都立即复制到~/.bash_历史记录中。所以我需要做的就是复制那个文件。

为什么要这样做?这听起来像是对另一个问题的错误解决方案。这是一个项目的一部分,我有两个组件客户端服务器。我必须把命令发送到服务器。但我想在连接之前先做这一小部分,看看它是如何工作的。基本上,我希望这个脚本只在一个文件中写入命令,然后用另一个代码将文件内容发送到服务器。您的代码不会执行任何命令,这是您真正想要的吗?我希望在运行脚本后执行的每个命令都在该文件中写入,我不知道怎么做我不知道删除~/.bash_history的内容是否正确,几秒钟后将该文件中的内容复制到我的文件中。有什么建议吗?