1.6 玩转文件描述符与重定向
前言
文件描述符是输入和输出流相关联的整数。最常见的就是stdin,stdout,stderr.我们可以将某个文件描述符的内容重定向到另外一个文件描述符中。
1.6.1预备知识
在编写脚本的时候会频繁的用到标准输入(stdin),标准输出(stdout),和标准错误(stderr).脚本可以使用大于号(>)将输出重定向到另外一个文件中。命令产生的文本可能是正常的输出,也可能是错误信息。
默认情况下,正常输出(stdout)和错误信息(stderr)都会显示在屏幕上。
文件描述符是与某个打开的文件或数据流相关联的整数。
0 —— stdin(标准输入)。
1 —— stdout(标准输出)。
2 —— stderr(标准错误)。
1.6.2实战演练
- 使用大于号(>)将文本保存到文件中
echo "This is a sample text 1 " > temp.txt
该命令会输出的文本保存在 temp.txt中。如果 temp.txt这个文件已经存在,大于号会清空该文件中先前的内容。
- 使用双大于号(>>)将文本追加到文件中
echo "This is a sample text 2 " >> temp.txt
- 使用cat 查看文件内容
cat temp.txt
- 如何重定向stderr
当命令产生错误信息时,该消息会被输出到stderr流。如ls +
ls +
这里, +是一个非法的参数,因此返回错误信息。
Tip
成功和不成功的命令的区别
当一个命令发生错误并退出时,会返回一个非0的退出状态;而当命令成功完成后,会返回为0的退出状态。退出状态可以从特殊变量$?中获取(在命令结束之后立刻运行echo $?,就可以打印退出状态)
下面的命令会将stderr文本打印到屏幕上,而不是文件中(