Bash模糊重定向 - 重定向到多个文件

时间:2010-12-22 00:57:32

标签: bash redirect pipe

$ echo "" >  /home/jem/rep_0[1-3]/logs/SystemOut.log
bash: /home/jem/rep_0[1-3]/logs/SystemOut.log: ambiguous redirect

我可以一次重定向到多个文件吗?

编辑:允许使用不明确的文件引用的任何答案?

6 个答案:

答案 0 :(得分:20)

这就是发球台的用途:

command | tee file1 file2 file3 > file4

tee也输出到stdout,因此您可能希望在重定向后放置一个文件(如上所示),或将stdout发送到/dev/null

对于你的情况:

echo "" | tee /home/jem/rep_0[1-3]/logs/SystemOut.log >/dev/null

答案 1 :(得分:5)

您可以使用tee执行此操作,该文件从stdin读取并写入stdout和文件。由于tee也输出到stdout,我选择将其输出定向到/dev/null。请注意,bash扩展与现有文件匹配,因此在执行此命令之前,您尝试写入的文件必须存在才能生效。

$ echo "" | tee /home/jem/rep_0[1-3]/logs/SystemOut.log > /dev/null

作为旁注,传递给""的{​​{1}}是多余的。

与您的问题没有直接关系,但如果您不依赖于bash扩展,则可以使用多个管道。

echo

答案 2 :(得分:3)

我有同样的问题,只想添加带有通配符的示例,因为它没有显示。我认为这就是你要找的东西:

echo "" | tee *.log

答案 3 :(得分:1)

你可以这样做:

echo "" | tee /home/jem/rep_0{1..3}/logs/SystemOut.log

要将输出抑制为stdout,请将其添加到上述命令的末尾:

> /dev/null

问题中的echo命令(不需要空引号)只是在文件中添加换行符。如果要创建空文件,请使用touch命令。

答案 4 :(得分:0)

没有。如何两次使用tee呢?

echo "Your text" | tee file1 | tee file2 > file3

答案 5 :(得分:0)

管道到“tee”命令分支到文件并std out,级联tee命令