微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 将stdout作为命令行util的文件名传递?

我正在使用命令行实用程序,该实用程序需要传递文件名以将输出写入,例如

foo -o output.txt

它写入stdout的唯一内容是一条消息,表明它已成功运行.我希望能够将写入output.txt的所有内容传递给另一个命令行实用程序.我的动机是output.txt将最终成为一个我不需要保留的40 GB文件,而且我宁愿管道流而不是以逐步的方式处理大量文件.

在这种情况下,有没有办法将实际输出(即output.txt)传递给另一个命令?我可以以某种方式神奇地传递stdout作为文件参数吗?

解决方法:

解决方案1:使用process substitution

最方便的方法是使用进程替换.在bash中,语法如下所示:

foo -o >(other_command)

(请注意,这是一个bashism.其他shell有类似的解决方案,但底线是它不可移植.)

解决方案2:明确使用named pipes

您可以如下显式/手动执行上述操作:

>使用mkfifo命令创建命名管道.

mkfifo my_buf

>使用该文件作为输入启动另一个命令

other_command < my_buf

>执行foo并让它将输出写入my_buf

foo -o my_buf

解决方案3:使用/ dev / stdout

您还可以使用设备文件/ dev / stdout,如下所示

foo -o /dev/stdout | other_command

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐