前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux如何在Bash中将标准错误stderr重定向到stdout标准输出

Linux如何在Bash中将标准错误stderr重定向到stdout标准输出

作者头像
入门笔记
发布2022-06-02 19:00:38
3.2K0
发布2022-06-02 19:00:38
举报
文章被收录于专栏:入门小站入门小站

将命令的输出重定向到文件或将其通过管道传递到另一个命令时,你可能会注意到错误消息已打印在屏幕上。

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

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

文件描述符只是代表打开文件的数字。

输入流通常通过在键盘上输入来向程序提供信息。

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

重定向标准输出流

重定向是一种从程序捕获输出并将其作为输入发送到另一个程序或文件的方法。

流可以使用n>运算符重定向,其中n是文件描述符。

省略n时,默认为标准输出流1。例如,以下两个命令是相同的;两者都会将命令输出(stdout)重定向到文件。

command > file

command 1> file

要重定向标准错误流(stderr),请使用2>运算符:

command 2> file

你可以将stderrstdout都写到两个单独的文件中:

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

要禁止在屏幕上显示错误消息,请将stderr重定向到/dev/null

command 2> /dev/null

stderr重定向到stdout

将程序的输出保存到文件中时,通常会将stderr重定向到stdout,以便将所有内容都保存在一个文件中。

要将stderr重定向到stdout并将错误消息发送到与标准输出相同的文件,请使用以下命令:

command > file 2>&1

> filestdout重定向到file2>&1stderr重定向到stdout的当前位置。

重定向的顺序很重要。例如,以下示例仅将stdout重定向到file。以下这种情况是因为stderr重定向到stdout,然后stdout重定向到了file

command 2>&1 > file

stderr重定向到stdout的另一种方法是使用&>构造。在Bash中,&>2>&1的含义相同:

command &> file

结论

在命令行上工作时,了解重定向和文件描述符的概念非常重要。

要重定向stderrstdout,请使用2>&1&>构造。

如果你有任何问题或反馈,请随时发表评论。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

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

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

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