是否存在任何神奇的“stdout”文件?

时间:2017-12-27 16:38:11

标签: linux bash shell pipe

某些实用程序无法输出到stdout。

实施例

util out.txt

有效。但有时我想将输出传递给其他程序,如:

util out.txt | grep test

Linux中是否存在任何魔术“stdout”文件,因此当我将替换上面的out.txt时,它会将数据重定向到stdout管道?


注意:我知道util out.txt && cat out.txt | grep test,所以请不要发布这样的答案。

1 个答案:

答案 0 :(得分:3)

您可以使用/dev/stdout。但是,如果某个程序需要lseek(2)(或mmap(2)),那么这并不总是有效。

通常/dev/stdout/proc/self/fd/1的符号链接(请参阅proc(5))。

IIRC某些程序的某些版本(可能是GNU awk)正在处理特别 /dev/stdout文件名(例如,为了能够在没有 {的情况下工作 {1}}正在安装)。

程序参数的一个常见但非通用的约定是在用作文件名时考虑/proc/来表示stdout(或stdin)。例如,请参阅-使用的tar(1)

如果您编写了一些实用程序,我建议尽可能遵循-f -约定,并记录 stdout 是否需要搜索。

某些程序正在测试 stdout stdin 是否是终端(例如使用isatty(3))以表现不同,例如使用ncurses。如果你编写这样的程序,我建议提供一个程序选项来禁用该检测。