为什么`排序文件> file`会产生一个空文件吗?

时间:2015-06-15 09:12:30

标签: bash

当您尝试使用

对文件进行排序时
sort afile > afile

你默默地以afile为空文件结束。

为什么?我希望错误或原始内容,但排序。 我没有测试过其他炮弹。

为执行预期行为的单行提供支持。

PS bash redirect input from file back into same file根本不解决“为什么”。我知道我可以使用临时文件绕过它。我对发生的事情感兴趣。对于单线部分的支持是寻求更短路径的事后想法。

1 个答案:

答案 0 :(得分:7)

sort afile > afile会发生这种情况:

  1. 由于文件方向操作afile

  2. ,shell会打开并截断> afile
  3. shell使用一个参数sort执行afile程序,并将新进程的stdout绑定到步骤1中打开的文件描述符。

  4. sort程序打开作为第一个参数给出的文件,由于步骤1中发生截断,该文件为空。

  5. 您可以使用sort afile -o afile

    执行此操作