0

我在我的 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 详细信息]。

知道怎么做吗?

4

1 回答 1

2

让我们用虚拟命令替换您的命令:

$ 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'(至少对于 GNUdate和股票 macOS date;POSIX 不需要%For %R)。

于 2019-04-26T15:48:54.473 回答