为什么“ sort file > file ”会删除该文件的所有内容?

Zen*_*Zen 0 linux command-line sorting

今天我正在学习排序命令。

我发现,我可以使用

sort file1 > file2
Run Code Online (Sandbox Code Playgroud)

将排序后的文件注入 file2

但是当我使用

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

file1 变空了!

为什么?!

我知道我可以使用 -o 标志将文件 1 排序到文件 1 中。

但是为什么第二个命令会产生一个空文件呢?

Dan*_*eck 7

sort命令运行之前,shell 的输出重定向会清除文件的内容。

来自man bash

在执行命令之前,可以使用由 shell 解释的特殊符号重定向其输入和输出。[...]

输出重定向导致名称由单词扩展产生的文件被打开以写入 [...]。如果文件不存在,则创建它;如果确实存在,则将其截断为零大小。