gpt4 book ai didi

linux - 将标准输出作为命令行工具的文件名传递?

转载 作者:IT老高 更新时间:2023-10-28 12:40:20 31 4
gpt4 key购买 nike

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

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明确

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

  1. 使用 mkfifo 命令创建命名管道。

    mkfifo my_buf
  2. 使用该文件作为输入启动其他命令

    other_command < my_buf
  3. 执行 foo 并将其输出写入 my_buf

    foo -o my_buf

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

你也可以使用设备文件/dev/stdout如下

foo -o /dev/stdout | other_command

关于linux - 将标准输出作为命令行工具的文件名传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7756609/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com