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

时间:2015-01-20 07:53:24

标签: bash shell unix

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

脚本:

#!/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

4 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:2)

通常,echo命令将其参数“展平”为单行输出。当每个命令产生一行输出时,answer给出的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

根据需要,这只会在输出中添加一行。

答案 2 :(得分:1)

如果你必须在不同的实例上执行2个命令,但仍需要附加到同一个文件并在同一行上,你可以这样做:

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

答案 3 :(得分:0)

你可以让date命令在同一行输出日期和另一个命令的输出:

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

date命令将接受常规日期格式命令,其中包含您想要输出的任何文字文本。