这个问题在这里已有答案:
某些实用程序无法输出到stdout。
例
util out.txt
有用。但有时我想将输出管道输出到其他程序,如:
util out.txt | grep test
linux中是否存在任何神奇的“stdout”文件,所以当我将替换上面的out.txt
时,它会将数据重定向到stdout
管道吗?
注意:我知道util out.txt && cat out.txt | grep test
,所以请不要发布这样的答案。
你可以使用/dev/stdout
。但是,如果一个程序需要lseek(2)(或mmap(2)),这并不总是有效。
通常/dev/stdout
是/proc/self/fd/1
的符号链接(参见proc(5))。
IIRC某些程序的某些版本(可能是GNU awk)专门处理/dev/stdout
文件名(例如,能够在没有安装/proc/
的情况下工作)。
程序参数的一个常见但非通用的约定是在用作文件名时考虑-
来表示stdout(或stdin)。例如,请参阅与tar(1)一起使用的-f -
。
如果您编写一些实用程序,我建议在可能的情况下遵循-
约定并记录stdout是否需要可搜索。
一些程序正在测试stdout或stdin是否是终端(例如使用isatty(3))以表现不同,例如通过使用ncurses。如果你编写这样的程序,我建议提供一个程序选项来禁用该检测。