先说结论: 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.txt和1。前一个文件为空,输出信息都在后一个文件。
ls xxx >out.txt 2>&1
列出 xxx 的文件列表,如果不存在该文件,会产生错误信息。此时会产生文件out.txt。输出信息重定向到 out.txt。