Linux 2>&1 是什么意思

354 阅读1分钟

先说结论: 2>&1:表示的是将标准错误重定向到了标准输出,也就是将运行脚本中出错的信息重定向到了标准输出

标准输入输出

在Linux中 0表示标准输入;1表示标准输出,2表示标准错误。 '>' 表示重定向,'&'表示取地址。

举例

ls 2>1
​

ls 命令会列出当前目录的文件列表,但是没有错误信息,所以会产生一个空的文件 1。不会输出任何内容到屏幕。

ls xxx 2>1
​

列出 xxx 的文件列表,如果不存在该文件,会产生错误信息,于是会有一个有信息的文件 1。不会输出任何信息到屏幕

ls xxx 2>&1

列出 xxx 的文件列表,如果不存在该文件,会产生错误信息。此时不会产生文件,会将结果信息输出在屏幕上。(所有命令是不是都默认输出到屏幕?所以这个没啥用?)

ls xxx >out.txt 2>1

列出 xxx 的文件列表,如果不存在该文件,会产生错误信息。此时会产生两个文件out.txt1。前一个文件为空,输出信息都在后一个文件。

ls xxx >out.txt 2>&1

列出 xxx 的文件列表,如果不存在该文件,会产生错误信息。此时会产生文件out.txt。输出信息重定向到 out.txt