原文网址:Linux命令--输入输出重定向、追加_IT利刃出鞘的博客-CSDN博客
简介
本文介绍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