bash 打印带有用户、日期和时间的日志

bash 打印带有用户、日期和时间的日志

我正在尝试打印日志bash,捕获一些文本、登录用户、日期和时间并将其打印到文件中analysis

狂欢

echo "analysis done by" "$USER" "on" && date +"%D"  && date +"%r" > /home/analysis

但是,目前只有时间打印到分析,而echo....用户和日期打印到stdout。为什么会这样,我做错了什么吗?谢谢。

标准输出

analysis done by cmccabe on
07/12/16

期望结果(分析)

analysis done by cmccabe on
07/12/16
08:31:32 AM

答案1

&&(例如;)是命令分隔符,重定向工作于命令级别,而不是线路级别。

如果您希望将单个重定向同时应用于多个命令,请将它们分组:

(echo "foo"; date +bar) > /path/to/file

{ echo "foo"; date +bar; } > /path/to/file

&&(在这种特殊情况下,使用或都无所谓;。)

或者,你可以输出一行包含所有内容:

echo "analysis done by $USER at $(date "+%D %r")" > /path/to/file

答案2

将您想要新行的位置添加%n到输出格式字符串中。date

date +"analysis done by $USER on%n%D%n%r" > /home/analysis

如果有机会的话$USER可能包括%

echo "analysis done by $USER on$(date +%n%D%n%r)" > /home/analysis

相关内容