首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在 Bash 中如何将标准错误stderr转向标准输出stdout

在 Bash 中如何将标准错误stderr转向标准输出stdout

作者头像
雪梦科技
发布2020-06-07 12:36:25
发布2020-06-07 12:36:25
2.4K0
举报
文章被收录于专栏:ITCoderITCoder

在将命令输出转到文件或者另外一个命令的时候,你可能会注意到错误提示打印在屏幕上。

在 Bash 和其他 Linux shells 中,当程序执行时,它使用三个标准的 I/O 流。每一个流由一个数字文件描述符表示:

  • 0 - stdin,标准输入
  • 1 - stdout,标准输出
  • 2 - stderr,标准错误

一个文件描述符就是一个数字,代表一个打开的文件。

输入流提供信息给程序,通常是由键盘输入的信息。

程序输出通常到标准输出流,而错误消息通常到标准错误流。默认情况下,输入流和错误流都打印在屏幕上。

二、输出转向

转向就是将程序输出,发送到另外一个程序或者文件。

流可以使用n>操作符进行转向,其中n就是文件描述符数字。

n没有写时,默认是1,标准输出流。例如,下面两个命令是一样的,都将命令输出转向到文件。

代码语言:javascript
复制
command > file
command 1> file

将标准错误转向,使用2>操作符:

代码语言:javascript
复制
command 2> file

你也可以将标准错误stderr和标准输出stdout转向到不同的文件:

代码语言:javascript
复制
command 2> error.txt 1> output.txt

想要隐藏错误信息而不是展示到屏幕上,将stderr转向到/dev/null

代码语言:javascript
复制
command 2> /dev/null

三、将标准错误stderr转向stdout

当保存程序输出到文件时,通常将标准错误stderr转向stdout,以便在同一个文件中记录完成信息。

想要将标准错误stderr转向标准输出stdout,并且将错误信息也像标准输出一样发送到同一个文件,使用下面的命令:

代码语言:javascript
复制
command > file 2>&1

> file 将标准输出stdout转向到文件file,而2>&1将标准错误stderr转向到当前的标准输出stdout

转向顺序非常重要。例如,下面的例子,仅仅将标准输出stdout转向到文件file。这是因为标准错误stderr被转向到stdout发生在标准错误stdout被转向到file之前。

代码语言:javascript
复制
command 2>&1 > file 

另一种将标准错误stderr转向标准输出stdout 是使用&>。在 Bash 中 &>2>&1 一个意思:

代码语言:javascript
复制
command &> file

四、总结

在使用命令行的时候,理解转向和文件描述符的概念是非常重要的。

想要将标准错误stderr转向标准输出stdout,使用2>&1&>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年06月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、输出转向
  • 三、将标准错误stderr转向stdout
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档