【问题标题】:File in-place editing with tee behaving differently on different unixes使用 tee 在不同的 unix 上表现不同的文件就地编辑
【发布时间】:2011-03-04 10:45:19
【问题描述】:

一位同事正在尝试在 bash shell 脚本中截断文件:从二进制文件中提取两个前字节。

以下在 BSD/OS X 上运行良好(输出为“12”)但在 Linux 上运行良好(输出为空):

echo 1234 >test
head -c2 test | tee test >/dev/null

head | tee 部分更改为在子shell 中运行

echo 1234 >test
(head -c2 test | tee test >/dev/null)

让它也能在 Linux 上运行。

为什么?

(特别对截断问题的解决方案不感兴趣,但解释为什么在不同风格的操作系统上行为不同。)

【问题讨论】:

  • 有那么一会儿,我虽然你还在运行 BSD/OS,但想知道 X 与它有什么关系:)

标签: linux bash shell unix tee


【解决方案1】:

tee 打开其要写入的参数,并在此过程中截断它们,但headtee 是否首先打开文件是由机会决定的。任何一种行为都是有效的;你不应该依赖这个迷你脚本做任何有用的事情。

【讨论】:

  • 是的,就是这样。谢谢。具体来说,观察到这种情况的那些 Linux 系统是 SMP,而没有看到这种情况的是单核。
猜你喜欢
  • 2023-01-30
  • 2011-08-29
  • 1970-01-01
  • 2021-11-22
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2018-05-10
相关资源
最近更新 更多