不输出到 STDOUT 的程序的管道输出
Posted
技术标签:
【中文标题】不输出到 STDOUT 的程序的管道输出【英文标题】:piping output from programs that do not output to STDOUT 【发布时间】:2011-02-02 16:10:53 【问题描述】:假设我有一个程序输出到由(必需)参数提供的文件:
./foo -o bar.txt
有什么办法可以欺骗它输出到管道?这只是输出到一个名为 -
的文件。
./foo -o - | less
【问题讨论】:
-
作为标准输出(或标准输入)的别名是您的应用程序可能会或可能不会遵守的约定。它在shell中没有任何特殊含义。
【参考方案1】:
你可以使用/dev/stdout
作为文件名:
./foo -o /dev/stdout | less
【讨论】:
【参考方案2】:随着文件的增长,这会将 bar.txt 的内容提供给 filter:
tail -f bar.txt | filter
【讨论】:
如果它是从另一个终端运行或原始进程在后台运行。【参考方案3】:其他解决方案,创建命名管道:
mkfifo /tmp/myfifo; ./foo -o /tmp/myfifo
</tmp/myfifo cat -
【讨论】:
以上是关于不输出到 STDOUT 的程序的管道输出的主要内容,如果未能解决你的问题,请参考以下文章