如何解决bash在打开时是否真的截断输出重定向文件?
据我所读,bash应该在打开文件时截断文件。但是,在运行命令echo hello > file1 | ls > file1 > file2
之后,有时file1包含“ hello”,有时不包含任何内容。这是一种非常奇怪的行为,而且我什至找不到模式,这似乎是偶然的。例如,这是在我的bash中几次尝试的结果,有时会删除之前的第一个输出文件,有时不会:
bash-3.2$ echo hello > output2 | ls > output2 > output3
bash-3.2$ cat output2
hello
bash-3.2$ rm output2
bash-3.2$ echo hello > output2 | ls > output2 > output3
bash-3.2$ cat output2
bash-3.2$ echo hello > output2 | ls > output2 > output3
bash-3.2$ cat output2
hello
bash-3.2$ rm output2
bash-3.2$ echo hello > output2 | ls > output2 > output3
bash-3.2$ cat ouput2
cat: ouput2: No such file or directory
bash-3.2$ cat output2
bash-3.2$ echo hello > output2 | ls > output2 > output3
bash-3.2$ cat output2
hello
我需要在C中重现bash行为,所以我真的需要看看这里的模式是什么,为什么文件有时会被截断,而有时却不会被截断
编辑:我知道此命令本身没有任何意义,我只需要使用任何命令(甚至是最愚蠢的命令)在C中重现bash的行为,因此我需要知道它在这里的工作方式。我只是键入了一个易于理解的命令,没有上下文来说明我的问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。