为什么`sort file> file`导致空文件?

Chr*_*ing 3 bash

当您尝试使用就地对文件进行排序时

sort afile > afile
Run Code Online (Sandbox Code Playgroud)

你默默地afile成为一个空文件.

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

支持执行预期行为的单行代码.

PS bash从文件重定向输入回到同一个文件根本不解决"为什么".我知道我可以使用临时文件绕过它.我对发生的事情感兴趣.对于单线部分的支持是寻求更短路径的事后想法.

nos*_*nos 8

随着sort afile > afile这种情况发生:

  1. afile由于文件方向操作,shell打开并截断> afile

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

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

你可以做到 sort afile -o afile