Bash 通过T形三通将锉刀穿过尾部和头部

Bash 通过T形三通将锉刀穿过尾部和头部,bash,shell,tee,Bash,Shell,Tee,从开始,我尝试读取一个文件,并发出文件的头部和尾部(仅读取一次文件) 我尝试了以下方法: tee>(head)>(tail)>/dev/null(head)| tail(head)| tail(head)(head>&3)&1 我认为头的输出不受管道的影响,只有tee的输出受管道的影响。我创建了一个编号为1..100的文件,然后尝试了tee>(head-n3)

从开始,我尝试读取一个文件,并发出文件的头部和尾部(仅读取一次文件)

我尝试了以下方法:
tee>(head)>(tail)>/dev/null

这行代码按预期工作,但我想去掉/dev/null。所以我试着:
tee>(head)| tail

但是这条线并没有像预期的那样工作(好吧,正如我预期的那样),它打印头部,但之后不会返回。显然尾巴在等什么。但我不知道到底为什么。 我找到了这个,但我无法用给定的答案运行它。

tee>(head)| tail
中,文本文件直接转到
tail
。你可能是说

tee >(head) < text.txt | tail
tee>(head)
它不需要等待任何东西,但也不起作用,因为T形三通和头部的输出都指向尾部

将头部的输出重定向到一个新的文件描述符,然后将其取回可以工作,但我不确定它是否比使用/dev/null“更干净”:

( tee >(head >&3) < text.txt | tail) 3>&1 
(tee>(head>&3)&1

我认为头的输出不受管道的影响,只有tee的输出受管道的影响。我创建了一个编号为1..100的文件,然后尝试了tee>(head-n3)。这是罪过。我一直在用
zsh
进行测试,它提出了自己的一系列(离题)问题:)哦,天哪。不,它不起作用。为了查看shell的并发性,我创建了一个有1M行(75MB)的文件。现在,该命令不再像预期的那样工作(tail发射15k左右的线)。管道提前关闭了吗?有什么想法吗?请看后续报道。