$ 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
tee
,它可以从标准输入读取并将其写入标准输出和文件中。由于 tee
还会输出到标准输出流,因此我选择将其输出重定向到 /dev/null
。请注意,Bash扩展会与现有文件匹配,所以在执行此命令之前,你要写入的文件必须存在。$ echo "" | tee /home/jem/rep_0[1-3]/logs/SystemOut.log > /dev/null
echo
的 ""
是多余的。$ 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
。你不需要运行两次。 - Dennis Williamson使用管道将数据传输到“tee”命令,以分支输出到文件和标准输出,然后级联多个tee命令。
tee
而不是级联它们。 - Dennis Williamson
echo none|tee /sys/class/leds/*/trigger; echo 0|tee /sys/class/leds/*/brightness
- eMPee584