Tul*_*dia 11 io-redirection files cat
假设abc当前目录中存在一个名为的文件,其中包含一些文本。执行命令时:
cat abc > abc
Run Code Online (Sandbox Code Playgroud)
为什么文件的内容abc消失了?
为什么命令删除里面的文字,文件变成空文件?
hee*_*ayl 27
因为做事的顺序。
当你这样做时:
cat abc > abc
Run Code Online (Sandbox Code Playgroud)
>是输出重定向操作符,当 shell 看到它时,它会使用O_TRUNC带有open(2)ie 的标志以截断模式打开文件open("abc", O_TRUNC),因此文件中的任何内容都将消失。请注意,此重定向首先由 shell 在cat命令运行之前完成。
所以当命令 cat abc执行时,文件abc已经被截断,因此cat会发现文件是空的。
添加到@heemayl 的回答中,如果您希望代码更清楚地了解事情发生的顺序,您可以简单地将 any 重定向放在命令的开头:
> abc cat abc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |