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 @   谁说我是二师兄  阅读(1691)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示