文件描述符是与文件输入输出相关联的整数,他们用来跟踪一打开的文件,最常见的文件描述符是stdin,stdout和stderr。
我们在编写脚本的时候会使用输入输出,当然也肯定会有错误。但是我们无法仅靠输出文本,是无法判断那些是正常文本,那些是错误文本。所以我们通过文件描述符来解决这个问题。
文件描述符:
0——stdin 标准输入
1——stdout 标准输出
2——stderr 标准错误
首先,我们看看如何输出:
echo "输出一些文本到" > target.txt
这种输出会把target.txt文件清空。
如果希望将输出追加到文件中,可以使用:
echo "再输出一些文本到" >> target.txt
可以使用cat来查看文件:
cat target.txt
当使用重定向操作符(> 或者 >> )时,内容不会出现在shell,而是直接输入到文件中,这时重定向操作符都是用了默认的文件描述符1,如果要使用其他描述符,要把描述符放在操作符之前。
举个例子:
ls 不存在的文件 > out.txt
这样会显示:
ls: 不存在的文件: No such file or directory
这时候标准错误并没有被输入到文件中,因为我们的默认描述符是1,所以也只有标准输出会输出到文件中。
如果我们这时候用:
ls 不存在的文件 2> out.txt
这时候stderr就不会显示在shell中,而是输出到了文件中。