为什么就地排序相同的文件会失败?

时间:2014-07-11 17:07:25

标签: bash sorting

使用stdout重定向时,sort命令的行为不符合预期:[sort command question](Bash Sorting Redirection)!

我的问题是,为什么以下失败?

sort file > file       # Surprise! Generates empty file. Data is lost :(

是否与特定发行版中的shell的写权限有关,还是其他的?如果它只是一个写权限问题,它怎么能工作(而不是它应该工作)?不应该首先覆盖文件吗?

1 个答案:

答案 0 :(得分:3)

shell在命令运行之前设置重定向,当shell打开文件进行写入时,会立即截断文件的内容。 sort永远不会有机会看到它们。

来自bash man page

  

重定向

     

在执行命令之前,可以重定向其输入和输出   使用shell解释的特殊符号。重定向可能   也可用于打开和关闭当前shell执行的文件   环境。以下重定向运算符可以在前面或出现   在简单的命令中的任何地方或可以遵循命令。重定向   按从左到右的顺序处理。