linux重定向stderr,在Bash和其他Linux Shell中将stderr重定向到stdout的方法

本文介绍重定向输出及在Bash和其他Linux Shell中将stderr重定向到stdout的方法。

0ce015aeab40c7761747ce5b9b75079b.png

前言

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

在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

您可以将stderr和stdout都写入两个单独的文件:

command 2> error.txt 1> output.txt

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

command 2> /dev/null

将stderr重定向到stdout

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

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

command > file 2>&1

> file将stdout重定向到file,和2>&1将stderr重定向到stdout的当前位置。

重定向的顺序很重要,例如,以下示例仅将标准输出重定向到文件,这是因为在将stdout重定向到文件之前,将stderr重定向到stdout:

command 2>&1 > file

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

command &> file

结论

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

要重定向stderr和stdout,请使用2>&1或&>构造。

相关主题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值