使用这个简单的例子,我希望能够将所有内容记录到一个文件中,并在每个命令之前加上时间戳。我不希望时间戳显示在控制台上。
我的示例在屏幕上打印时间戳,但不会将其打印到日志中。
#!/usr/bin/env bash
exec > >(tee -i logfile.txt | ts '[%Y-%m-%d %H:%M:%S]')
exec 2>&1
echo "Sending files to S3 ..."
s3cmd MYFILE s3://MYBUCKET/
echo "Done"
答案 0 :(得分:1)
在ts
之前需要tee
,并且因为您不想更改stdout,所以嵌套的流程替换:
exec > >(tee -a >(ts '[%Y-%m-%d %H:%M:%S]' > logfile.txt))
答案 1 :(得分:1)
由于您使用的是moreutils工具,因此可以使用wrap_content
命令:
pee