Abstract:1) Linux Shell 命令的标准输入、标准输出、标准错误,及其重定位; 2)Linux Shell 操作自定义文件描述符; 文件描述符是与文件相关联的一些整数,他们保持与已打开文件的关联。众所周知的文件描述符是标准输入stdin、标准输出stdout、标准错误stderr,我们可以重定位这些文件描述符关联文件的内容到另外一个文件文件描述符。 1. Linux Shell 命令的标准输入、标准输出、标准错误 当我们在编写 shell 脚本时,我们会非常频繁地操作执行命令的标准输入stdin、标准输出stdout、标准错误stderr。过滤 shell 脚本或者执行命令的输出信息并且把它们重定位到特定的地方,成了我们分析脚本执行情况的必要工作。当我们执行脚本文件或者执行一个 shell 命令的时候,单从终端输出我们很难区分哪些是标准输出,哪些是标准错误。然而,我们把这些信息重定向特定的地方,以便于我们分析脚本文件及 shell 命令的执行情况。 1.1 获取 Linux Shell 命令执行结果 Linux Shell 中每一条 shell 命令的执行都有返回值,用以返回命令的执行结果。
1.3 Linux Shell 标准错误 stderr 的重定位
由实验结果看出非法命令 "ls + 2> out.txt" 的执行并没有任何的输出,与之前的姐果一样;1.4 Linux Shell 分别重定向标准输出 stdin 与标准错误 stderr 到指定的文件:
1.5 Linux Shell 重定向标准错误到标准输出: 1.5.1 使用 " 2>&1" 把标准错误 stderr 重定向到标准输出 stdout ;
1.6 把标准错误 stderr 重定向到 /dev/null
1.7 使用 tee 命令,实现重定向与终端双输出 当我们使用重定向输出时,所有信息都被重定向输出到我们指定的文件描述符,终端上面就再也看不到这些信息了;
1.7.2 把标准错误 stderr 转换成标准输出 stdout ,一同输出到 tee 的标准输入,以便把所有信息重定向到文件的同时,输出到终端:
1.8 重定位标准输入 stdin 1.8.1 把重定向的标准输入作为命令的输入参数: 先来看看我们貌似已经十分熟悉的 cat 命令的帮助,不知道各位是否留意到有这样一招,反正我之前是没有留意到,呵呵!!! 1.8.2 从文件重定向 shell 命令的标准输入: Linux Shell 使用 "cmd < FILE " 的方式从一个文件重定向命令的标准输入;
1.8.3 把文本块重定向为 shell 命令的标准输入 stdin : 2. 用户自定义文件描述符:有时候,我们需要把一个文本块(多行的文本)重定向给一个 shell 命令作为标准输入。 现在我们知道 0、1、2是 shell 保留的文件描述符; 2.1 以读方式创建文件描述符: 使用 " exec descriptor<file Name " 的模式创建只读模式的用户自定义文件描述符; 2.2 以截断模式创建写方式的文件描述符: 所谓截断模式,就是相当于重新创建文件,文件之前的内容将会丢失;
2.3 以追加模式创建写方式的文件描述符: 所谓追加模式,就是打开文件进行写操作,文件之前的内容不会丢失,写操作写入的内容以追加方式添加到文件的末尾; 呵呵!经过这样折腾了一番,算是对 Linux Shell 下面的文件描述符及其重定向,以及标准输入 stdin、标准输出 stdout 、标准错误 stderr 有了跟进一步的理解咯。。。 |
|