假设我在终端中有一个循环,它创建了一组目录,执行了一组任务,并且我希望将每个命令系列的命令写入新目录中的日志文件。这可以通过几种方式来实现(使用 echo/going with python),但我想知道有没有什么简单的方法可以轻松地在循环前面传递命令,该命令会自动在循环运行的命令的新目录中创建一个日志文件。编辑:这里的日志文件我的意思是仅收集传递到终端的最终命令。
这样做的部分动机是我将在我的命令中传递的参数中随机生成波动,并且就像“在此循环中标记以下命令以进行日志记录”而不是必须分配变量值然后回显它们。了解是否存在某种“log”命令在许多其他情况下都会有所帮助,因此我更喜欢这种效果的答案。
答案1
在组中执行重要命令,并重定向组中的输出:
for dir in dir1 dir2 ...; do
logfile="$dir"/log.log # or whatever name you want
{
: create a set of directories
: perform a set of tasks
} > "$logfile"
done
如果您也想在终端上输出,请将重定向更改为管道tee
} | tee "$logfile"