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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具