Chapter 4 - 创建、查看和编辑文本文件
4.1 将输出重定向到文件或程序
4.1.1 标准输入、标准输出和标准错误
构建一个带有编号标记的通道(文件描述符)的进程结构来管理打开的文件。进程连接到文件,从而到达这些文件所代表的数据内容或设备。用连接到编号为0、1、2(称为标准输入、标准输出和标准错误)的通道的默认连接来创建进程。进程使用3及以上编号的通道连接其他文件。
通道(文件描述符)
编号 | 通道名称 | 描述 | 默认连接 | 用法 |
---|---|---|---|---|
0 | stdin | 标准输入 | 键盘 | 仅读取 |
1 | stdout | 标准输出 | 终端 | 仅写入 |
2 | stderr | 标准错误 | 终端 | 仅写入 |
3+ | filename | 其他文件 | 无 | 读取和/或写入 |
4.1.2 重定向输出到文件
通道重定向将默认通道目标位置替换为代表输出文件或设备的文件名。利用重定向,进程输出和错误消息可以被捕获为文件内容,被发送到设备或者被丢弃。
重定向stdout可以阻止进程输出在终端上显示。如下表所示,仅重定向stdout不会阻止stderr错误消息显示在终端上。特殊文件/dev/null以静默方式丢弃重定向到其中的通道输出。
用法 | 说明 |
---|---|
>FILENAME | 重定向stdout到文件FILENAME^1^ |
>>FILENAME | 重定向stdout到文件FILENAME,追加到当前文件内容后面^2^ |
2>FILENAME | 重定向stderr到文件FILENAME^1^ |
2>/dev/null | 将stderr错误消息重定向到/dev/null ,从而将它丢弃 |
&>FILENAME | 将stdout和stderr合并到一个文件^1^ |
>>FILENAME 2>&1 | 合并stdout和stderr,并且附加到当前文件内容后面^2^ ^3^ |
注释:
- 覆盖现有文件,如果为新文件则予以创建。
- 追加到现有文件,如果为新文件则予以创建。
- 重定向顺序很重要,可避免出现意外的命令行为。
2>&1
将stderr发送到与stdout相同的位置。要使其生效,在向stdout中添加stderr之前,需要首先重定向stdout。尽管&>>
是向文件中附加stdout和stderr的备选方法,但2>&1
是通过管道同时发送stdout和stderr所需要的方法。
4.1.3 构建管道
重定向控制的是来自文件或去往文件的通道输入或输出,而管道将通道输出发送到另一进程。
tee
命令显示或重定向通常被管道隐藏的中间结果。
参考:
info bash
info coreutils
4.2 从Shell提示符编辑文本文件
4.2.1 使用Vim编辑文件
参阅“Learning the vi and Vim Editors”
4.3 使用图形编辑器编辑文本文件
4.3.1 通过gedit编辑文件
gedit应用是面向GNOME桌面环境的全功能文本编辑器。启动gedit,具体操作为从GNOME菜单选择“应用”→“附件”→“gedit”。与其他图形应用相同,也可不浏览菜单而启动gedit。按Alt + F2打开输入命令对话框。键入gedit
,然后按Enter。
gedit的全部操作同Windows记事本。
重要:
Ctrl + c和Ctrl + v将不会在终端窗口中进行复制和粘贴。Ctrl + c实际上将终止终端窗口中当前运行的进程。要在终端窗口中进行复制和粘贴,请使用Ctrl + Shift + c和Ctrl + Shift + v。
参考:
man 1 gedit