如果输入和输出文件相同,究竟会发生什么?

马丁

假设我执行以下命令:

tr a-z A-Z < file > file

有两个重定向:< file> file两者都在tr命令之前进行处理,据我所知,如果存在多个重定向,则它们将从左到右进行处理。换句话说< file,然后是> file这是否< file仅表示如果命令启动,那么该命令stdin来自名为的文件file然后> file处理零件,这意味着将输出发送到名为的文件file同样,名为的文件将file被截断为零大小。现在终于启动了命令(tr在我的示例中),但是由于在上一步中将输入文件截断为零,那么它只是处理一个空文件吗?

吉勒斯“别再邪恶了”

这是正确的。>在启动命令之前将文件截断,因此命令会看到一个空的输入文件。从左到右执行重定向实际上并不重要(除非文件不存在,否则会出现错误,而>file <file首先会创建文件)。

使用时somecommand <file >>file,大多数情况下,当命令读取其自己的输入时,您将获得一个无限循环。但是,对于短文件,该命令可能会在写完任何内容之前检测到输入的结尾,在这种情况下,其行为就像输入和输出是单独的文件一样。

使用somecommand <file 1<>file,则更为复杂。根据命令是扩展还是缩小文件,它可能会在自己的输入上循环,也可能不会循环。如果命令总是缩小文件(例如,grep没有行号或颜色之类的东西),即,如果输出的字节N始终仅取决于输入的字节0..N-1,则这表现为两个文件不同。但我不建议您依赖它:它在许多方面都很脆弱,如果在中间中断该命令,则会造成混乱。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果一个类具有相同的串行UID,究竟会发生什么?

来自分类Dev

包含头文件时究竟会发生什么?

来自分类Dev

如果无法提交检查点数据,究竟会发生什么?

来自分类Dev

Androids Handler.post,究竟会发生什么

来自分类Dev

关闭计算机电源时,究竟会发生什么?

来自分类Dev

当执行诸如“ get”之类的redis命令时,究竟会发生什么?

来自分类Dev

在shell中运行内置命令时,究竟会发生什么?

来自分类Dev

当你通过已经分配的值指针传递时究竟会发生什么?

来自分类Dev

如果src和dst相同,调用StartCopyAsync会发生什么?

来自分类Dev

当32位整数在64位计算机上溢出时,究竟会发生什么?

来自分类Dev

在 Windows 中格式化驱动器并选择“恢复设备默认值”按钮时究竟会发生什么?

来自分类Dev

当 MainActivity 被 Back-Button 销毁然后重新创建时,静态变量和服务究竟会发生什么?

来自分类Dev

捕获输入和输出文件的异常

来自分类Dev

如果从文件中输入的值为空,那么scanf会发生什么?

来自分类Dev

使用相同的输入和输出文件使用ant xslt任务

来自分类Dev

使用相同的输入和输出文件使用ant xslt任务

来自分类Dev

打开输出文件作为输入和输出是什么意思?

来自分类Dev

如果在使用 CMake 和 C++ 编译时两个头文件共享相同的名称会发生什么?

来自分类Dev

如果用express js重载相同的路由会发生什么?

来自分类Dev

如何在Unix中应用具有相同输入和输出文件的sort和uniq?

来自分类Dev

C ++使用<输入文件和>输出文件启动程序

来自分类Dev

awk中的多个输入文件和输出文件

来自分类Dev

awk中的多个输入文件和输出文件

来自分类Dev

如果具有相同名称的字段从两个来源(类和接口)继承,将会发生什么

来自分类Dev

如果主机和从机无法通信会发生什么?

来自分类Dev

使用多个输入和输出文件运行.out吗?

来自分类Dev

如何在Python中使用输入和输出文件

来自分类Dev

如果您在不重新启动的情况下安装 2 个更新相同文件的更新,会发生什么情况,如果您不按顺序安装更新会发生什么情况?

来自分类Dev

MSBuild,输入和输出相同的文件?

Related 相关文章

  1. 1

    如果一个类具有相同的串行UID,究竟会发生什么?

  2. 2

    包含头文件时究竟会发生什么?

  3. 3

    如果无法提交检查点数据,究竟会发生什么?

  4. 4

    Androids Handler.post,究竟会发生什么

  5. 5

    关闭计算机电源时,究竟会发生什么?

  6. 6

    当执行诸如“ get”之类的redis命令时,究竟会发生什么?

  7. 7

    在shell中运行内置命令时,究竟会发生什么?

  8. 8

    当你通过已经分配的值指针传递时究竟会发生什么?

  9. 9

    如果src和dst相同,调用StartCopyAsync会发生什么?

  10. 10

    当32位整数在64位计算机上溢出时,究竟会发生什么?

  11. 11

    在 Windows 中格式化驱动器并选择“恢复设备默认值”按钮时究竟会发生什么?

  12. 12

    当 MainActivity 被 Back-Button 销毁然后重新创建时,静态变量和服务究竟会发生什么?

  13. 13

    捕获输入和输出文件的异常

  14. 14

    如果从文件中输入的值为空,那么scanf会发生什么?

  15. 15

    使用相同的输入和输出文件使用ant xslt任务

  16. 16

    使用相同的输入和输出文件使用ant xslt任务

  17. 17

    打开输出文件作为输入和输出是什么意思?

  18. 18

    如果在使用 CMake 和 C++ 编译时两个头文件共享相同的名称会发生什么?

  19. 19

    如果用express js重载相同的路由会发生什么?

  20. 20

    如何在Unix中应用具有相同输入和输出文件的sort和uniq?

  21. 21

    C ++使用<输入文件和>输出文件启动程序

  22. 22

    awk中的多个输入文件和输出文件

  23. 23

    awk中的多个输入文件和输出文件

  24. 24

    如果具有相同名称的字段从两个来源(类和接口)继承,将会发生什么

  25. 25

    如果主机和从机无法通信会发生什么?

  26. 26

    使用多个输入和输出文件运行.out吗?

  27. 27

    如何在Python中使用输入和输出文件

  28. 28

    如果您在不重新启动的情况下安装 2 个更新相同文件的更新,会发生什么情况,如果您不按顺序安装更新会发生什么情况?

  29. 29

    MSBuild,输入和输出相同的文件?

热门标签

归档