【发布时间】:2010-12-22 00:57:32
【问题描述】:
$ echo "" > /home/jem/rep_0[1-3]/logs/SystemOut.log
bash: /home/jem/rep_0[1-3]/logs/SystemOut.log: ambiguous redirect
我可以一次重定向到多个文件吗?
编辑:任何允许使用不明确的文件引用的答案?
【问题讨论】:
$ echo "" > /home/jem/rep_0[1-3]/logs/SystemOut.log
bash: /home/jem/rep_0[1-3]/logs/SystemOut.log: ambiguous redirect
我可以一次重定向到多个文件吗?
编辑:任何允许使用不明确的文件引用的答案?
【问题讨论】:
这就是 tee 的用途:
command | tee file1 file2 file3 > file4
tee 还输出到标准输出,因此您可能希望在重定向后放置一个文件(如上所示),或者将标准输出发送到/dev/null。
对于您的情况:
echo "" | tee /home/jem/rep_0[1-3]/logs/SystemOut.log >/dev/null
【讨论】:
echo none|tee /sys/class/leds/*/trigger; echo 0|tee /sys/class/leds/*/brightness
您可以使用tee 执行此操作,它从标准输入读取并写入标准输出和文件。由于tee 也输出到标准输出,我选择将其输出定向到/dev/null。请注意,bash 扩展与现有文件匹配,因此您尝试写入的文件必须在执行此命令之前存在。
$ echo "" | tee /home/jem/rep_0[1-3]/logs/SystemOut.log > /dev/null
附带说明,您传递给echo 的"" 是多余的。
与您的问题没有直接关系,但如果您不依赖 bash 扩展,您可以拥有多个管道。
$ echo hello > foo > bar > baz
$ cat foo bar baz
hello
hello
hello
【讨论】:
我有同样的问题,只是想用通配符添加示例,因为它没有显示。我想这就是你要找的东西:
echo "" | tee *.log
【讨论】:
你可以这样做:
echo "" | tee /home/jem/rep_0{1..3}/logs/SystemOut.log
要禁止输出到标准输出,请将其添加到上述命令的末尾:
> /dev/null
您问题中的echo 命令(不需要空引号)只是在文件中添加一个换行符。如果要创建空文件,请使用touch 命令。
【讨论】:
没有。两次使用tee 怎么样?
echo "Your text" | tee file1 | tee file2 > file3
【讨论】:
tee 指定多个参数。您无需运行两次。
管道到“tee”命令以分支到文件和标准输出,级联 tee 命令
【讨论】:
tee 指定多个参数,而不是级联它们。