如何仅读取文件描述符输出的第一行?



我有一个来自 fd3 的输出,我正在重定向到一个文件:

程序 3>输出.log

在这种情况下,我只需要将程序提供的第一行写入日志,并且不想在程序的生命周期内保持对此文件的写入句柄打开。

如何只读第一行?我想我可以read使用 shell 命令,但我不知道如何将它用于 stdout 以外的任何事情。请注意,我不想将 fd3 重定向到 stdout 然后使用read,因为我正在将 stdout 捕获到另一个日志。

您可以通过以下方式捕获任意文件描述符的第一行:

$ (printf '%sn' foo bar >&3) 3> >(head -n1)
foo

这会将两行打印到 FD 3 并将其重定向到head的标准输入。如果要将该结果存储到文件中,只需在进程替换中重定向即可。

相关内容

  • 没有找到相关文章

最新更新