某些实用程序无法输出到stdout。
实施例
util out.txt
有效。但有时我想将输出传递给其他程序,如:
util out.txt | grep test
Linux中是否存在任何魔术“stdout”文件,因此当我将替换上面的out.txt
时,它会将数据重定向到stdout
管道?
注意:我知道util out.txt && cat out.txt | grep test
,所以请不要发布这样的答案。
答案 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。如果你编写这样的程序,我建议提供一个程序选项来禁用该检测。