【问题标题】:Why does `sort file > file` result in an empty file? [duplicate]为什么`sort file > file`会导致一个空文件? [复制]
【发布时间】:2015-08-30 17:24:42
【问题描述】:

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

sort afile > afile

你默默地结束了 afile 是一个空文件。

这是为什么呢?我希望出现错误或原始内容,但已排序。 我没有测试过其他的shell。

为确实执行预期行为的单行者投票。

PS bash redirect input from file back into same file 根本没有解决“为什么”。我知道我可以用一个临时文件绕过它。我对发生的事情很感兴趣。对单行部分的支持是事后才想到的。

【问题讨论】:

  • 你可以使用输出文件选项sort afile -o afile

标签: bash


【解决方案1】:

sort afile > afile 会发生这种情况:

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

  2. shell 执行带有一个参数afilesort 程序,并将新进程的标准输出绑定到步骤1 中打开的文件描述符。

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

你可以用sort afile -o afile做到这一点

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 2015-08-15
    • 2017-03-04
    • 2010-12-18
    • 2019-03-18
    • 2019-01-26
    • 2011-12-02
    • 2012-04-04
    相关资源
    最近更新 更多