Linux 文件就地编辑,T形三通在不同的Unix上表现不同

Linux 文件就地编辑,T形三通在不同的Unix上表现不同,linux,bash,shell,unix,tee,Linux,Bash,Shell,Unix,Tee,一位同事正在用bashshell脚本试验文件截断:从二进制文件中提取两个前字节 以下内容在BSD/OS X上运行良好(输出中为“12”),但在Linux上运行不正常(输出为空): 将head | tee零件更改为在子壳中运行 echo 1234 >test (head -c2 test | tee test >/dev/null) 使它在Linux上也能工作 为什么? (特别是对截断问题的解决方案不感兴趣,但对不同风格的操作系统的行为不同的原因有一个解释。)tee打开它的参数进行写

一位同事正在用bashshell脚本试验文件截断:从二进制文件中提取两个前字节

以下内容在BSD/OS X上运行良好(输出中为“12”),但在Linux上运行不正常(输出为空):

head | tee
零件更改为在子壳中运行

echo 1234 >test
(head -c2 test | tee test >/dev/null)
使它在Linux上也能工作

为什么?


(特别是对截断问题的解决方案不感兴趣,但对不同风格的操作系统的行为不同的原因有一个解释。)

tee
打开它的参数进行写入,在过程中截断它们,但无论
head
还是
tee
首先打开文件都是偶然的。任何一种行为都是有效的;你不应该依赖这个小脚本来做任何有用的事情。

有那么一会儿,我以为你还在运行BSD/OS,想知道X和它有什么关系:)是的,就是这样。谢谢特别是那些观察到这种情况的linux系统是SMP,而没有看到这种情况的是单核系统。
echo 1234 >test
(head -c2 test | tee test >/dev/null)