本文介绍Linux中的输入输出重定向、追加。
Linux是通过文件描述符来控制输入和输出的,如下:
字段 | 描述 | 文件描述符 | 默认设备 |
---|---|---|---|
stdin | 标准输入流 | 0 | 终端(键盘) |
stdout | 标准输出流 | 1 | 终端(显示屏) |
stderr | 标准错误输出流 | 2 | 终端(显示屏) |
重定向符号 |
含义 |
使用方法 |
解释 |
< |
输入重定向 |
command1 < file |
command命令操作内容会从file文件中读取,替代了键盘输入 |
<< |
输入重定向,多行录入 |
command1 << flag |
将开始标记flag和结束标记flag之间的内容作为输入 |
> |
输出重定向,覆盖式 |
command > file |
将输出重定向到file |
>> |
输出重定向,追加式 |
command >> file |
将输出以追加的方式重定向到file |
2> |
错误输出重定向,覆盖式 |
command 2> file |
将错误输出重定向到file |
2> |
错误输出重定向,追加式 |
command 2> file |
将错误输出以追加的方式重定向到file |
&> |
输出与错误输出重定向,覆盖式 |
command &> file |
输出与错误输出重定向到file |
&>> |
输出与错误输出重定向,追加式 |
command &>> file |
输出与错误输出以追加的方式重定向到file |
& | 合并 | command > file 2>&1 | 将标准输出写到file,标准错误也写到file。 |
目标
命令
1 |
tr 'a-z' 'A-Z' < file1 |
执行结果
例1:展示在屏幕上
目标
命令
1 |
tr 'a-z' 'A-Z' <<EOF |
执行结果
例2:转换后输出到文件
>会覆盖原文件内容。
示例
1.将正常输出写入文件
1 |
./test.sh >log.txt |
等价于
1 |
./test.sh 1>log.txt |
2. 将错误输出写入文件
1 |
./test.sh 2>log.txt |
3.将所有输出(正常和错误输出)都写入文件
1 |
./test.sh &>log.txt |
>>会追加到原文件的最后。
1.将正常输出写入文件
1 |
./test.sh >>log.txt |
等价于
1 |
./test.sh 1>>log.txt |
2. 将错误输出写入文件
1 |
./test.sh 2>>log.txt |
3.将所有输出(正常和错误输出)都写入文件
1 |
./test.sh &>>log.txt |
详解