Shell中的错误重定向和标准重定向
本文最后更新于 2024年7月7日 下午
错误重定向和标准重定向
在Unix/Linux系统中,错误重定向和标准输出重定向的语法如下:
标准输出重定向(将标准输出保存到文件):
1
command > file
这将
command
的标准输出重定向到名为file
的文件中。如果文件不存在,它将被创建;如果文件已经存在,它将被覆盖。标准错误重定向(将标准错误保存到文件):
1
command 2> file
这将
command
的标准错误重定向到名为file
的文件中。同时重定向标准输出和标准错误到同一个文件:
1
command > file 2>&1
这将
command
的标准输出和标准错误都重定向到名为file
的文件中。2>&1
表示将标准错误重定向到与标准输出相同的地方。在标准输出和标准错误都附加到同一个文件(不会覆盖):
1
command >> file 2>&1
这将
command
的标准输出和标准错误都附加到名为file
的文件中,而不覆盖文件内容。丢弃标准输出或标准错误:
丢弃标准输出:
1
command > /dev/null
丢弃标准错误:
1
command 2> /dev/null
同时丢弃标准错误和标准输出,使用如下的语法:
1 |
|
这将把 command
的标准输出(1)重定向到 /dev/null
,同时将标准错误(2)重定向到与标准输出相同的位置。结果是标准输出和标准错误都将不会在终端显示,也不会保存到文件中。
command > /dev/null 2>&1 和&>/dev/null的区别
command > /dev/null 2>&1
和 &>/dev/null
都可以用来将标准输出和标准错误重定向到 /dev/null
,从而达到静默化输出的目的。
command > /dev/null 2>&1
使用两个不同的重定向操作符,首先将标准输出重定向到/dev/null
,然后再将标准错误重定向到与标准输出相同的位置。&>/dev/null
使用一个单一的重定向操作符,将标准输出和标准错误一起重定向到/dev/null
。
从功能上来说,两者是等效的,它们都可以实现相同的效果。
但在可读性方面,&>/dev/null
更加简洁,因为它一次性将标准输出和标准错误都重定向到相同的地方,而不需要多个操作符。
(完)