将输出重定向回文件

将输出重定向回文件

我发出了以下命令,认为它会获取 的内容foo.txt,对其进行处理,并将其写回原始文件。相反,当我打开该文件时,它是空的。

cat foo.txt | tr " " "\n" > foo.txt

这行到底发生了什么,我该如何改写它以将输出重定向回foo.txt

答案1

重定向 ( >foo.txt) 由父 shell 在命令运行之前完成cat,将文件重置为 0 字节。使用类似的东西

tr " " "\n" foo.txt >foo.new && \
  mv foo.new foo.txt

还要避免无用的使用cat

相关内容