使用stdout重定向时,sort命令的行为不符合预期:[sort command question](Bash Sorting Redirection)!
我的问题是,为什么以下失败?
sort file > file # Surprise! Generates empty file. Data is lost :(
是否与特定发行版中的shell的写权限有关,还是其他的?如果它只是一个写权限问题,它怎么能工作(而不是它应该工作)?不应该首先覆盖文件吗?
答案 0 :(得分:3)
shell在命令运行之前设置重定向,当shell打开文件进行写入时,会立即截断文件的内容。 sort
永远不会有机会看到它们。
来自bash man page:
重定向
在执行命令之前,可以重定向其输入和输出 使用shell解释的特殊符号。重定向可能 也可用于打开和关闭当前shell执行的文件 环境。以下重定向运算符可以在前面或出现 在简单的命令中的任何地方或可以遵循命令。重定向 按从左到右的顺序处理。