Unix & Linux 大学教程 第15章 标准IO:重定向和管道

上传人:鲁** 文档编号:569516932 上传时间:2024-07-30 格式:PPT 页数:29 大小:238.50KB
返回 下载 相关 举报
Unix & Linux 大学教程 第15章 标准IO:重定向和管道_第1页
第1页 / 共29页
Unix & Linux 大学教程 第15章 标准IO:重定向和管道_第2页
第2页 / 共29页
Unix & Linux 大学教程 第15章 标准IO:重定向和管道_第3页
第3页 / 共29页
Unix & Linux 大学教程 第15章 标准IO:重定向和管道_第4页
第4页 / 共29页
Unix & Linux 大学教程 第15章 标准IO:重定向和管道_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《Unix & Linux 大学教程 第15章 标准IO:重定向和管道》由会员分享,可在线阅读,更多相关《Unix & Linux 大学教程 第15章 标准IO:重定向和管道(29页珍藏版)》请在金锄头文库上搜索。

1、Unix & Linux 大学教程大学教程第第15章章 标准标准IO:重定:重定向和管道向和管道本章需要解决的几个问题本章需要解决的几个问题l总结总结Unix的设计准则的设计准则l什么是标准输入、标准输出和标准错误?什么是标准输入、标准输出和标准错误?l什么是重定向?什么是重定向?l什么是管道线?什么是管道线?15.1 Unix初始设计准则初始设计准则l2个准则:个准则: - 每个程序或者命令应该是一个工具,它只完成每个程序或者命令应该是一个工具,它只完成一件事情,但一定要完成好这件事情。一件事情,但一定要完成好这件事情。 - 当需要新工具时,最好对现有的工具进行组合,当需要新工具时,最好对现

2、有的工具进行组合,而不是编写一个新工具。(小的就是完美的)而不是编写一个新工具。(小的就是完美的)15.2 Unix新设计准则新设计准则l初始设计准则的缺陷:初始设计准则的缺陷: - 新工具层出不穷,使用者学习量大新工具层出不穷,使用者学习量大 - 无法完全胜任对用户日益增长的需求的处理无法完全胜任对用户日益增长的需求的处理 表现在两个方面:表现在两个方面: 1. 小工具不满足需求;小工具不满足需求; 2. 组合工具太复杂。组合工具太复杂。 - CLI的限制的限制 只能处理纯文本,只能使用命令行界面。只能处理纯文本,只能使用命令行界面。15.2 Unix新设计准则新设计准则lUnix新设计准则

3、:新设计准则: - 除非程序无法更小,否则小的就是完美的。除非程序无法更小,否则小的就是完美的。 (有条件地妥协)(有条件地妥协)15.3 标准输入、标准输出和标准错误标准输入、标准输出和标准错误l标准输入标准输入(stdin): - 读取数据的通用方法读取数据的通用方法l标准输出标准输出(stdout) : - 写出数据的通用方法写出数据的通用方法l标准错误标准错误(stderr) : - 写出错误消息的通用方法写出错误消息的通用方法15.3 标准输入、标准输出和标准错误标准输入、标准输出和标准错误lstdin、 stdout、 stderr的意义的意义工具(命令)工具(命令)stdinst

4、doutstderr输入设备输入设备输出设备输出设备输出设备15.4 重定向标准输出重定向标准输出l重定向标准输出的定义重定向标准输出的定义 - 将标准输出发送给文件,称为重定向标准输出。将标准输出发送给文件,称为重定向标准输出。 - 默认情况下,屏幕被设置成标准输出默认情况下,屏幕被设置成标准输出 15.4 重定向标准输出重定向标准输出l将命令的输出覆盖到文件中将命令的输出覆盖到文件中 - command filename 例如:例如:ls file1 命令执行效果:命令执行效果: 如果不存在如果不存在file1,则创建,并写入,则创建,并写入ls的输的输出内容;出内容; 如果已存在如果已存

5、在file1,则清除其内容,写入,则清除其内容,写入ls的输出内容。的输出内容。15.4 重定向标准输出重定向标准输出l将命令的输出追加到文件尾将命令的输出追加到文件尾 - command filename 例如:例如:ls file1 命令执行效果:命令执行效果: 如果不存在如果不存在file1,则创建,并写入,则创建,并写入ls的输的输出内容;出内容; 如果已存在如果已存在file1,则将,则将ls的输出内容追加的输出内容追加到文件尾。到文件尾。15.5 防止文件被重定向替换或创建防止文件被重定向替换或创建l重定向时不替换已存在的文件重定向时不替换已存在的文件 - Bourne shell

6、: set o noclobber - C-Shell set noclobber15.5 防止文件被重定向替换或创建防止文件被重定向替换或创建l临时忽略临时忽略noclobber - Bourne shell: command | filename - C-Shell command ! filename15.6 重定向标准输入重定向标准输入l将标准输入重定向为文件将标准输入重定向为文件 - command filename - 默认的标准输入是键盘默认的标准输入是键盘 15.6 重定向标准输入重定向标准输入l例子例子 $ sort names Cassey Harley $ sort re

7、port 15.7 文件描述符、文件描述符、Bourne shell家族重定家族重定向标准错误向标准错误l文件描述符文件描述符 - 在文件在文件Unix进程中,每个输入源和每个输出进程中,每个输入源和每个输出目标都由一个唯一的数字标识,这个数字称为目标都由一个唯一的数字标识,这个数字称为文件描述符文件描述符(file descriptor) 15.7 文件描述符、文件描述符、Bourne shell家族重定家族重定向标准错误向标准错误l文件描述符文件描述符 - Unix为每个进程预定义了为每个进程预定义了3个文件描述符:个文件描述符: 文件描述符文件描述符含义含义0标准输入标准输入1标准输出标

8、准输出2标准错误标准错误15.7 文件描述符、文件描述符、Bourne shell家族重定家族重定向标准错误向标准错误lBourne shell中的重定向中的重定向重定向方式重定向方式命令语法命令语法重定向标准输入重定向标准输入command 0 inputfile重定向标准错误重定向标准错误command 2 inputfile15.7 文件描述符、文件描述符、Bourne shell家族重定家族重定向标准错误向标准错误l例子例子 $ sort 0 rawdata $ sort results $ sort results $ sort 2 errors15.8 子子shelll父进程与副本

9、进程父进程与副本进程 - 在传统的在传统的Unix环境下,有两个基本的操作用环境下,有两个基本的操作用于创建和修改进程:于创建和修改进程: 1. 函数函数fork( )用来创建一个新的进程,该进程用来创建一个新的进程,该进程是当前进程的一个副本,称为副本进程。是当前进程的一个副本,称为副本进程。 2. 函数族函数族exec( )用来启动另外的进程以取代用来启动另外的进程以取代当前运行的进程。当前运行的进程。 15.8 子子shelll子子shell - 子子shell是父是父shell的一个副本进程。的一个副本进程。15.8 子子shelll启动子启动子shell的方式的方式 - 明确启动子明

10、确启动子shell 如:如:$ bash - 隐含启动子隐含启动子shell 如:如:(date) 启动一个子启动一个子shell,并执行,并执行date。 ()中可以有多个命令,这些命令被称为一个()中可以有多个命令,这些命令被称为一个编组编组(grouping)。)。15.9 在在C-Shell中重定向标准错误中重定向标准错误l语法定义语法定义 command & outputfile command & outputfilel临时忽略临时忽略noclobber(noclobber能防止在重能防止在重定向输出时意外地覆盖一个文件定向输出时意外地覆盖一个文件 ) command &! out

11、putfile command &! outputfile15.9 在在C-Shell中重定向标准错误中重定向标准错误l存在的问题存在的问题 使用使用&或或&! 时,时,shell会同时重定向标准输会同时重定向标准输出和标准错误。出和标准错误。l解决方法解决方法 (command outputfile) & errorfile 例如:例如:(sort output) & errors 15.10 组合标准输出和标准错误组合标准输出和标准错误l将标准输出和标准错误重定向到同一位置将标准输出和标准错误重定向到同一位置 - C-Shell: 默认支持默认支持 - Bourne shell: comm

12、and x outputfile y&x x,y是文件描述符是文件描述符 例如:例如:sort 1 output 2&1 sort 2 output 1&2 command & outputfile 简化简化15.13 管道线管道线l管道与管道线管道与管道线 - shell允许创建一个命令序列,在这个序列中,允许创建一个命令序列,在这个序列中,前一个命令的标准输出可以自动发送给下一个前一个命令的标准输出可以自动发送给下一个命令的标准输入。两个命令之间的连接就是命令的标准输入。两个命令之间的连接就是管管道道(pipe),命名序列本身被称为),命名序列本身被称为管道线管道线(pipeline)15

13、.13 管道线管道线l例子例子 $ ls | less $ cat f1 f2 f3 | grep Harley15.14 管道线分流管道线分流l什么是管道线分流什么是管道线分流 - 同时将命令的输出发往两个地方同时将命令的输出发往两个地方l管道线分流命令管道线分流命令 - tee -a file 例如: $ cat f1 f2 | tee d1 d2 | grep Harley $ who | tee status15.16 条件执行条件执行l条件执行的两种方式条件执行的两种方式 - 前一条命令执行成功,才执行其后的命令前一条命令执行成功,才执行其后的命令 command1 & command2 - 前一条命令执行失败,才执行其后的命令前一条命令执行失败,才执行其后的命令 command1 | command215.16 条件执行条件执行l例子例子 $ grep Harley people & sort people $ update | echo “update failed!”

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号