如何获取输出的文件描述符编号以及如何立即重定向所有文件描述符

如何获取输出的文件描述符编号以及如何立即重定向所有文件描述符

让我们以这个命令为例

$ time ssh ec2 ls
www apps
real    0m0.554s
user    0m0.004s
sys     0m0.000s

$ time ssh ec2 ls 1>/dev/null
real    0m0.554s
user    0m0.004s
sys     0m0.000s

$ time ssh ec2 ls 2>/dev/null
www apps
real    0m0.554s
user    0m0.004s
sys     0m0.000s

显然ls输出来自fd 1.输出呢time。它使用哪个文件描述符?我怎样才能找到它?

除此之外,我怎样才能一次重定向所有它们,而不是单独重定向它们..即all>/dev/null。我不是在寻找1>/dev/null 2>&1...

答案1

time写入标准错误。

看起来不是的原因是您正在将当前命令的 stderr 写入/dev/null,而不是时间的输出。这是因为times 关键字的解析方式与常规实用程序不同:重定向是定时命令的一部分。

使用代码块重定向所有输出。

{ time ls; } 2> /dev/null

请注意,如果您愿意,您仍然可以将 ls 的输出重定向到块内的其他位置,并且这将是定时的。

重定向你能做的一切

{ time ls 1>&2; } 2> /dev/null

相关内容