让我们以这个命令为例
$ 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
,而不是时间的输出。这是因为time
s 关键字的解析方式与常规实用程序不同:重定向是定时命令的一部分。
使用代码块重定向所有输出。
{ time ls; } 2> /dev/null
请注意,如果您愿意,您仍然可以将 ls 的输出重定向到块内的其他位置,并且这将是定时的。
重定向你能做的一切
{ time ls 1>&2; } 2> /dev/null