linux删除stdout文件清空,linux – 将stdout作为命令行util的文件名传递?

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

foo -o output.txt

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

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

解决方法:

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

foo -o >(other_command)

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

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

>使用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

标签:bash,linux,file-io,pipe,stdout

来源: https://codeday.me/bug/20190926/1821338.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值