为什么这个排序命令给我一个空文件?

2 terminal sort

prova1是一个带有一些文本的文件。当我运行此代码时,prova1变为空:

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

我知道要达到我可以做的效果:

sort prova1 -o prova1
Run Code Online (Sandbox Code Playgroud)

我只想知道原因:)

Jos*_* R. 6

这是因为首先执行重定向:>prova1截断您的文件,以便sort什么也找不到。sort prova1 > prova1_sorted会像你期望的那样工作。

  • 可能值得注意的是 sort 的 `-o` 选项可能通过创建一个临时文件来解决这个问题,与 sed 的 `-i` 选项相同。 (2认同)
  • 要看。如果 sort 在内存中排序,它必须在写入之前将整个文件读取到内存中。如果它对文件使用某种合并排序,它可能需要多个临时文件,与输出无关。 (2认同)