我发出了以下命令,认为它会获取 的内容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
。