Shell中的错误重定向和标准重定向

本文最后更新于 2024年7月7日 下午

错误重定向和标准重定向

在Unix/Linux系统中,错误重定向和标准输出重定向的语法如下:

  1. 标准输出重定向(将标准输出保存到文件):

    1
    command > file

    这将 command 的标准输出重定向到名为 file 的文件中。如果文件不存在,它将被创建;如果文件已经存在,它将被覆盖。

  2. 标准错误重定向(将标准错误保存到文件):

    1
    command 2> file

    这将 command 的标准错误重定向到名为 file 的文件中。

  3. 同时重定向标准输出和标准错误到同一个文件:

    1
    command > file 2>&1

    这将 command 的标准输出和标准错误都重定向到名为 file 的文件中。2>&1 表示将标准错误重定向到与标准输出相同的地方。

  4. 在标准输出和标准错误都附加到同一个文件(不会覆盖):

    1
    command >> file 2>&1

    这将 command 的标准输出和标准错误都附加到名为 file 的文件中,而不覆盖文件内容。

  5. 丢弃标准输出或标准错误:

    • 丢弃标准输出:

      1
      command > /dev/null
    • 丢弃标准错误:

      1
      command 2> /dev/null
  6. 同时丢弃标准错误和标准输出,使用如下的语法:

1
command > /dev/null 2>&1

这将把 command 的标准输出(1)重定向到 /dev/null,同时将标准错误(2)重定向到与标准输出相同的位置。结果是标准输出和标准错误都将不会在终端显示,也不会保存到文件中。

command > /dev/null 2>&1 和&>/dev/null的区别

command > /dev/null 2>&1&>/dev/null 都可以用来将标准输出和标准错误重定向到 /dev/null,从而达到静默化输出的目的。

  1. command > /dev/null 2>&1 使用两个不同的重定向操作符,首先将标准输出重定向到 /dev/null,然后再将标准错误重定向到与标准输出相同的位置。
  2. &>/dev/null 使用一个单一的重定向操作符,将标准输出和标准错误一起重定向到 /dev/null

从功能上来说,两者是等效的,它们都可以实现相同的效果。

但在可读性方面,&>/dev/null 更加简洁,因为它一次性将标准输出和标准错误都重定向到相同的地方,而不需要多个操作符。

(完)


Shell中的错误重定向和标准重定向
https://maojun.xyz/blog/2024/07/Shell中的错误重定向和标准重定向.html
作者
毛 俊
发布于
2024年7月7日
更新于
2024年7月7日
许可协议