在shell脚本中常用的文件描述符有三个,分别为:
0: 标准输入
1: 标准输出
2: 标准错误
经常会看到脚本中出现"2>&1"或"2>error.txt"或"command >file.out 2>file.err"等描述.
首先'>'或者'>>'是重定向符,'&'是一个描述符,如果1或2前不加&,那就会变成文件1或文件2.
测试目录:
test
└── test.txt
例如:
cat test.txt | 会直接显示test.txt中的内容 |
cat test.txt >1 | 会将应该输出的内容写入1文件中 |
cat test.txt >&1 | 同cat test.txt,直接输出文件内容 |
cat xxx >1 | 会报错文件不存在,生成文件1,但1中为空 |
cat xxx >1 2>&1 |
'>1'表示将输出的内容写到文件1中,2是错误描述符; '2>&1'表示将标准错误重定向到文件1中.生成文件1,文件不存在的错误会在1中 |
cat xxx >1 2>2 | 会生成1,2两个文件,1会接收即将输出的文件内容,如果xxx不存在,1中为空,2中为报错信息 |