bash - 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 的行为,即使是最愚蠢的命令,所以我需要知道它在这里是如何工作的。我只是输入了一个易于理解的命令,没有上下文来说明我的问题
解决方案
推荐阅读
- php - SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;在实时服务器上使用 DENSE_RANK()
- android - 添加按钮和功能哟 appWidget
- javascript - 将类似 JSON 的字符串转换为 JSON
- javascript - JQuery 根据其他动态添加的输入字段验证动态添加的输入字段
- fb-hydra - hydras 用 Ax 扫过不同的配置组
- android - React Native v-0.63 中的 WebView v-11.2.3 组件未加载其内容(使用 expo cli)
- vb6 - 作为可选参数传递以使子例程像被省略一样工作的优雅方式?
- kotlin - 为什么 Completable (andThen) 下游的操作符不运行?
- algorithm - 我正在尝试解决黑客级别的问题。我的算法没问题,但找不到输出
- php - 我无法使用嵌套的 while 循环打印所有图像