将多个命令的输出存储在文件中的一行中

Store the output from multiple commands on a single line in a file

我正在尝试将两个命令的输出作为一行存储到一个文件中。但是,存储的输出位于两条不同的线上。

脚本:

#!/bin/bash

date > test.log; pwd >> test.log

输出:

~]# cat test.log

Mon Jan 19 23:37:31 PST 2015
/home/jason

如何制作成单行?

预期输出

~]# cat test.log

Mon Jan 19 23:37:31 PST 2015    /home/jason

试试这个:

echo "$(date)    $PWD" > test.log

如果您必须在不同的实例中执行 2 个命令并且仍然需要追加到同一文件和同一行,您可以这样做:

AMD$ echo -n "$(date) " > File
AMD$ echo "$(pwd)" >> File
AMD$ cat File
Tue Jan 20 13:27:41 IST 2015 /home/sdlcb/AMD

一般来说,echo命令'flattens'将其参数合并成单行输出。当每个命令都产生一行输出时, given by John Zwinck 运行良好 — 甚至避免使用 pwd 命令生成当前工作目录。

如果命令产生多行输出,那么他的公式会将多行写入日志。例如,如果命令是:

printf "%s\n" line-1 line-2 line-3
printf "%s\n" more-1 more-2 more-3

然后 运行:

echo "$(printf "%s\n" line-1 line-2 line-3) $(printf "%s\n" more-1 more-2 more-3)" > test.log

向输出添加五行。相反,要实现扁平化,您需要避免使用引号(这一次 — 相对不寻常):

echo $(printf "%s\n" line-1 line-2 line-3) $(printf "%s\n" more-1 more-2 more-3) > test.log

这仅会根据需要向输出添加一行。

您可以只使用 date 命令来输出日期,并在同一行中使用另一个命令的输出:

date "+%a, %b %d %T %Z %Y $(pwd)"
Tue, Jan 20 03:12:15 EST 2015 /home/jason

date 命令将接受常规日期格式命令以及您想要输出的任何文字文本。