简介
本文介绍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。 |
输入重定向
<
目标
- 把test文件中的内容定向到tr程序中,将小写字母转换为大写字母。
命令
tr 'a-z' 'A-Z' < file1
- 重定向符号将file1里的内容放到tr程序文件下的/fd/0里进行相应的处理。
- tr命令用于转换或删除文件中的字符。
执行结果
<<
例1:展示在屏幕上
目标
- 把多行录入内容定向到tr程序中,将小写字母转换为大写字母。
命令
tr 'a-z' 'A-Z' <<EOF
- EOF可以用任意字符替换。
执行结果
例2:转换后输出到文件
输出重定向
>
>会覆盖原文件内容。
示例
1.将正常输出写入文件
./test.sh >log.txt
等价于
./test.sh 1>log.txt
2. 将错误输出写入文件
./test.sh 2>log.txt
3.将所有输出(正常和错误输出)都写入文件
./test.sh &>log.txt
>>
>>会追加到原文件的最后。
1.将正常输出写入文件
./test.sh >>log.txt
等价于
./test.sh 1>>log.txt
2. 将错误输出写入文件
./test.sh 2>>log.txt
3.将所有输出(正常和错误输出)都写入文件
./test.sh &>>log.txt
cmd >/dev/null 2>&1
- >/dev/null 2>&1 的含义是:不输出任何信息。
- 其实也就等价于:&>/dev/null
详解
- >/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息。
- 2>&1:标准错误输出重定向和标准输出合并,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
cmd >> file 2>&1
- 把尼奥准输出和标准错误一起重定向到 file文件中(追加)。
- 其实也就等价于:&>>file
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持恩蓝小号。
原创文章,作者:DHQPG,如若转载,请注明出处:http://www.wangzhanshi.com/n/19261.html