我正在尝试运行命令并仅将命令记录到文件中。我尝试过使用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