我在macOS上安装了ansiweather,我想每天使用cronjob记录几次天气。
这是我的代码:
date +%Y-%m-%d--%H:%M && ansiweather -l Amsterdam,NL -s true -h false -p false >> test.txt
当我查看我的test.txt
文件时,只看到ansiweather结果,而不是日期。
我想要一个日志文件,该文件在每行上显示日期[空格] [ansiweather详细信息]。
有什么想法吗?
答案 0 :(得分:1)
用虚拟命令替换您的命令:
$ echo 1 && echo 2 >> out.txt
1
这会将第一个命令的输出打印到标准输出,并将第二个命令的输出重定向到out.txt
。
要将它们都重定向,请将它们分组:
{ echo 1 && echo 2; } >> out.txt
但这只是解决方案的一半; out.txt
将包含
1
2
在单独的行上。
要在一行上获得输出,可以使用printf
:
printf '%s %s\n' "$(echo 1)" "$(echo 2)" >> out.txt
包含out.txt
的
1 2
应用于您的实际命令:
printf '%s %s\n' \
"$(date '+%F--%R')" \
"$(ansiweather -l Amsterdam,NL -s true -h false -p false)" >> test.txt
请注意,+%Y-%m-%d--%H:%M
可以缩写为'%F--%R'
(至少对于GNU date
和标准macOS date
而言; POSIX既不需要%F
也不需要或%R
)。