这可能看起来像一个非常简单的问题,但到目前为止我还没有提出适当的解释。假设我tr
用来转换一些随机文本(可以是任何程序)并希望将结果输出到原始文件中。
a@MacBook-Pro:~/Downloads$ cat test_file
this is a sample text
a@MacBook-Pro:~/Downloads$ tr 't' 'T' <test_file >test_file
a@MacBook-Pro:~/Downloads$ cat test_file #prints nothing
是否有任何特定的规则/事情告诉我们我们不能同时将输入和输出重定向到同一个文件?我显然知道我可以将输出重定向到新文件中,然后复制结果,但我对这种行为非常好奇。
PS我一直在使用Macbook,但在这种情况下这无关紧要
截断文件。然后你读取一个空白文件并且什么都不写回它。
如果
sponge
您不想创建新文件,请使用。超级用户也有一个很好的答案来解决这个问题:为什么将文件的输出重定向到自身会产生一个空白文件?
PS:我假设你在 Mac 上运行 Ubuntu。