我正在尝试打印日志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