常用重定向及解释

目录
警告
本文最后更新于 2022-06-23,文中内容可能已过时。

Linux 标准输出(stdout)和标准错误(stderr)的重定向

1. 重定向符号和语句

1
2
3
4
> 以擦写的模式重定向至...
>> 以追加的模式重定向至...
1 代表stdout标准输出
2 代表stderr标准错误

2. 标准错误重定向到标准输出,然后合并重定向到文件

1
command 2>&1 output.txt

3. 标准输出流将仅重定向到文件,在终端中不可见。如果该文件已存在,则会被覆盖。

1
2
command > output.txt
#command &1> output.txt

4. 标准输出流将仅重定向到文件,在终端中不可见。如果文件已存在,则新数据将附加到文件末尾。

1
command >> output.txt

5. 标准错误流将仅重定向到文件,在终端中不可见。如果该文件已存在,则会被覆盖。

1
command 2> output.txt

6. 标准错误流将仅重定向到文件,在终端中不可见。如果文件已存在,则新数据将附加到文件末尾。

1
command 2>> output.txt

7. 标准输出和标准错误流都将仅重定向到文件,终端中不会显示任何内容。如果该文件已存在,则会被覆盖。

1
command &> output.txt

8. 标准输出和标准错误流都将仅重定向到文件,终端中不会显示任何内容。如果文件已存在,则新数据将附加到文件末尾。

1
command &>> output.txt

9. 标准输出流将被复制到文件中,它仍将在终端中可见。如果该文件已存在,则会被覆盖。

1
command | tee output.txt

10. 标准输出流将被复制到文件中,它仍将在终端中可见。如果文件已存在,则新数据将附加到文件末尾。

1
command | tee -a output.txt

11. Bash没有简写语法,只允许StdErr管道到第二个命令,这里需要再次与tee组合来完成表格。如果你真的需要这样的东西,请看“如何管道stderr,而不是stdout?” 有关如何通过交换流或使用进程替换来完成此操作的Stack Overflow。

1
(*)

12. 标准输出和标准错误流都将被复制到文件中,同时仍在终端中可见。如果该文件已存在,则会被覆盖。

1
command |& tee output.txt

13. 标准输出和标准错误流都将被复制到文件中,同时仍在终端中可见。如果文件已存在,则新数据将附加到文件末尾。

1
command |& tee -a output.txt
0%