Shell 输入输出与命令行处理详解
1. 概述
在之前,我们详细探讨了各种 shell 编程技术,主要聚焦于 shell 程序中数据和控制的流动。现在,将关注点转移到两个相关主题上。首先是 shell 面向文件的输入输出机制,会对 shell 基本 I/O 重定向器的知识进行拓展;其次会深入到行和单词级别的 I/O 操作,这涉及到文件/终端与 shell 变量之间的信息传递,像 echo 和命令替换就是常见的实现方式。对行和单词 I/O 的讨论,将进一步详细解释 shell 如何处理命令行,这有助于理解 shell 对引号的处理方式,以及强大的 eval 命令(本文暂不详细展开)。
2. I/O 重定向器
在日常使用中,我们已经了解了 shell 的基本 I/O 重定向器,如>、<和|,它们能满足大部分 UNIX 使用场景,但 bash 还支持许多其他重定向器。以下是常见重定向器及其功能:
| 重定向器 | 功能 |
| — | — |
|cmd1 \| cmd2| 管道,将cmd1的标准输出作为cmd2的标准输入 |
|> file| 将标准输出定向到文件 |
|< file| 从文件获取标准输入 |
|>> file| 将标准输出定向到文件,若文件已存在则追加内容 |