您的位置 首页 > 腾讯云社区

在 Bash 中如何将标准错误stderr转向标准输出stdout---雪梦科技

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

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

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

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

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

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

二、输出转向

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

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

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

command > file command 1> file

将标准错误转向,使用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转向到文件file。这是因为标准错误stderr被转向到stdout发生在标准错误stdout被转向到file之前。

command 2>&1 > file

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

command &> file四、总结

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

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

---来自腾讯云社区的---雪梦科技

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: