Skip to content

输出重定向

输出重定向包括标准输出(STDOUT)重定向以及标准错误输出(STDERR)重定向。输出重定向通过特定的符号来实现:

  • 标准输出重定向:1>1>>,可简写为 >>>
  • 标准错误输出重定向:2>2>>
  • 合并标准输出与标准错误输出:2>&1,可简写为 &>

想对某个命令的标准输出重定向到某个文件,可以进行如何操作:

bash
#!/bin/bash

ls > log.txt

上面的例子中,使用 >ls 命令的标准输出重定向到 tmp.txt 文件中。需要注意的是,>重定向会覆盖原来的数据。

如果想追加数据,可以使用 >>

bash
#!/bin/bash

ls >> log.txt

标准错误错误输出重定向与标准输出重定向类似,但是使用的是 2>以及 2>>2>重定向会覆盖原来的数据,而 2>>则是进行数据的追加。下面运行了一个不正确的命令 lls,并且将标准错误输出重定向到 error_log.txt文件中:

bash
#!/bin/bash

lls 2> error_log.txt

如果标准输出跟标准错误输出重定向到不同的文件,可以像下面那样进行操作:

bash
#!/bin/bash

./foo.sh > log.txt 2> error_log.txt

但如果像将标准输出与标准错误输出重定向到同一个文件,则可以使用 2>&1或者 &>来实现:

bash
#!/bin/bash

./foo.sh &> log.txt