我想做的是运行命令,将所有输出写入文件并显示前 n 行。
在这个例子中 n=10
我不太喜欢的一种解决方案是:
./program > tempfile ; cat tempfile >> thefile ; head -n 10 tempfile
我尝试的是
./program | tee -a thefile | head -n 10
但是这里的问题是 ./program 过早终止
没有创建中间临时文件有什么技巧吗?(就像一个 head 命令只显示前 n 行,但继续默默地阅读其余部分)
重现管道和头部问题的一种方法是:
n=0 ; while [[ $n -lt 200 ]] ; do echo ======================== $n ; n=$((n + 1)) ; done | tee -a toto | head -n 3 ; echo "-" ; tail -n 200 toto
事实上,对我来说,文件的最后一行toto
是随机的并且会发生变化,但几乎从来不是第 199 行。
嗯,回答我自己的问题。
但也许有更好的东西?