我需要使用cat命令来将heredoc写入文件吗?

10

我有一个能像这样向文件写入内容的脚本:

cat >myfile <<EOF
some lines
and more lines
EOF

但我不确定这是一次毫无意义的猫咪使用还是不是...


看起来完全没问题,你觉得有什么不对吗? - fge
2
只是人们喜欢在可能的时候玩UUOC优越性牌,你不必害怕“cat”。 - Andy Lester
4个回答

8

即使这可能不是一个UUOC,使用tee可能更有用:

tee myfile <<EOF
some lines
and more lines
EOF

这种方法更加简洁,而且与重定向运算符不同,如果你需要以root权限写入文件,它可以与sudo结合使用。


这个操作也会写入标准输出吗?在大多数情况下,这是不希望的。 - Bogdan Calmac
如果你不想要输出,可以在第一行的末尾添加“> dev/null”。另请参见此评论 - Livven

2

这并不是一个真正的UUOC(无用的使用cat),你也可以使用echo完成相同的操作:

echo "this is line
this is another line
this is the last line" > somefile

2

当你不需要使用cat时,使用它就是UUOC。例如:

cat file | grep "something"

相反,您可以不使用cat命令来完成:

grep "something" file

请到这里查看UUOC的原始定义。

解释:该段文字指引读者到一个链接去了解UUOC的定义。

2
在zsh中,这是一个UUOC,因为:
>myfile <<EOF
some lines
and more lines
EOF

运行良好。


1
Zsh。把它归因于另一个 zsh 的特殊性。 - cmh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接