输入输出重定向
概述
在 Linux 中,每个进程都有三个标准数据流:标准输入、标准输出和标准错误。重定向允许我们改变这些数据流的来源和目的地。
标准数据流
输出重定向
重定向到文件(覆盖)
使用 > 将标准输出重定向到文件,会覆盖文件内容:
追加到文件
使用 >> 将输出追加到文件末尾:
重定向标准错误
使用 2> 重定向标准错误:
同时重定向输出和错误
丢弃输出
将输出重定向到 /dev/null:
重定向顺序
重定向的顺序很重要:
输入重定向
从文件读取输入
使用 < 从文件读取输入:
Here Document(Here Doc)
使用 << 提供多行输入:
终止符说明
EOF是自定义的终止符,可以是任意字符串- 终止符必须单独成行
- 终止符前后不能有空格(除非使用
<<-)
Here String
使用 <<< 提供单行字符串输入:
文件描述符
理解文件描述符
使用自定义文件描述符
复制文件描述符
实用示例
日志记录
分离输出和错误
同时显示和保存输出
使用 tee 命令:
输入输出组合
创建空文件或清空文件
追加时间戳日志
noclobber 选项
防止意外覆盖文件:
高级重定向
交换 stdout 和 stderr
进程替换
使用 <() 和 >():
读取到变量
常见错误和陷阱
陷阱 1:输入输出使用同一文件
陷阱 2:管道中的变量
陷阱 3:重定向顺序
小结
本章介绍了 Linux 的输入输出重定向:
- 输出重定向:
>(覆盖)、>>(追加) - 错误重定向:
2>、2>> - 合并重定向:
&>、2>&1 - 输入重定向:
<、<<(Here Doc)、<<<(Here String) - 文件描述符:0(stdin)、1(stdout)、2(stderr)
- 实用工具:
tee、/dev/null
掌握重定向是使用 Linux 命令行的重要技能,它让你能够灵活地处理数据流和自动化任务。
上一章:Shell 简介
下一章:管道与过滤器