shell获取标准错误

shell命令有标准输出、标准错误。通常执行命令都只拿到标准输出,对于标准错误则拿不到,但是在console上执行可能会显示。如:

fping -c 10 -p 100 10.0.0.11

console会得到以下输出:


10.0.0.11 : [0], 84 bytes, 100 ms (100 avg, 50% loss)
10.0.0.11 : [1], 84 bytes, 100 ms (100 avg, 33% loss)
10.0.0.11 : [2], 84 bytes, 100 ms (100 avg, 25% loss)
10.0.0.11 : [3], 84 bytes, 107 ms (102 avg, 20% loss)
10.0.0.11 : [4], 84 bytes, 108 ms (103 avg, 16% loss)
10.0.0.11 : [5], 84 bytes, 100 ms (102 avg, 14% loss)
10.0.0.11 : [6], 84 bytes, 100 ms (102 avg, 12% loss)
10.0.0.11 : [7], 84 bytes, 100 ms (102 avg, 11% loss)
10.0.0.11 : [8], 84 bytes, 100 ms (102 avg, 10% loss)
10.0.0.11 : [9], 84 bytes, 100 ms (101 avg, 0% loss)

10.0.0.11 : xmt/rcv/%loss = 10/10/0%, min/avg/max = 100/101/108

 

其中第一部分是标准输出,但是第二部分确是通过标准错误得出的统计信息。

 

如果我们想得到统计信息,通过 fping -c 10 -p 100 10.0.0.11 | tail -n 1 得出的确是

10.0.0.11 : xmt/rcv/%loss = 10/10/0%, min/avg/max = 100/101/108
10.0.0.11 : [9], 84 bytes, 100 ms (101 avg, 0% loss)

两条结果。

 

所以如果我们想得到统计信息,则需将标准错误重定向到标准输出,即可用以下命令:

fping -c 10 -p 100 10.0.0.11 2>&1 | tail -n 1

 

/dev/null 代表空设备文件
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

posted @ 2019-01-08 14:18  谁说我是二师兄  阅读(1678)  评论(0编辑  收藏  举报