如何执行命令并仅将命令记录到文件中

如何执行命令并仅将命令记录到文件中

我正在尝试运行命令并仅将命令记录到文件中。我尝试过使用exec 4>test|command >&4|exec 4>&-但不起作用。如果我单独运行命令,它会起作用,但只记录命令的输出,与command | tee -a test.我还发现了这一点:command|& ts |tee -a test但我没有管理员权限,所以我无法安装任何东西。另外,我不想编写脚本或保存命令历史记录或输出,最好我只想要一个衬垫将命令记录到文件中,然后正常执行。这是一些相关问题: https://stackoverflow.com/questions/70677322/in-linux-how-to-save-only-the-command-into-file-without-output 仅将命令记录到文件中

答案1

如果是在 shell 脚本环境中,您可以创建一个像这样的函数,它执行给定的参数:

log_and_execute_command() {
    printf '%(%FT%T%z)T\t%s\n' -1 "$*" >> my_logging_file
    "$@"
}

如果我们不需要记录时间戳,事情就会变得容易一些。这个例子利用了这样一个事实:如果您将标准输入中的命令传递给 shell,它就会执行它们:

printf '%s' 'my_command' | tee -a my_logging_file | sh

如果您想通过管道传输某些内容ts但又没有,可以使用这样的 shell 脚本作为类似的替代方案:

#!/bin/bash
while read -r line; do
    printf '%(%FT%T%z)T\t%s\n' -1 "$line"
done

相关内容