首页 > 其他分享 >第六章 I/O重定向与管道

第六章 I/O重定向与管道

时间:2023-11-20 20:12:05浏览次数:26  
标签:输出 重定向 文件 命令 管道 第六章 txt 输入

一、I/O重定向

在讲解I/O重定向之前,先演示一个简单的案例。打开一个终端3,输入date命令,会显示出当前时间。如果在date命令后加“>”,并指向date.txt文件,那么结果就会写入date.txt文件。具体如下所示。

 上述命令将date的输出结果重定向到一个普通文件。接着再打开一个终端1,将终端0的date输出结果重定向到终端1,具体如下所示。

例如,date命令在默认情况下将输出结果显示在终端,此时文件描述符为1。现在改变输出的方向,从终端改为date.txt文件,这个行为叫作重定向,具体如下所示。

 改变描述符为2的文件的输出方向,date命令是正确的,执行结果在终端中显示,具体如下所示。

 输入命令是错误的,执行结果标准输出在终端上,重定向到date.txt,具体如下所示。

 cat命令默认文件描述符为0,输入重定向把键盘输入改为/etc/hosts文件输入,具体如下所示。

 进程使用文件描述符来管理打开的文件

1.1 输出重定向

输出重定向分为正确输出与错误输出。

正确输出:1> 、1>> 等价于 >、 >>,1可省略。

错误输出:2> 、2>>。其中,“>”表示覆盖,“>>”表示追加,具体如下所示。

 【例6-4】正确结果与错误结果都输出到相同位置

 【例6-5】 正确结果与错误结果都输出重定向到相同的位置

 【例6-6】 正确结果保留在文件list.txt,错误结果丢到/dev/null

1.2 输入重定向

输入重定向与输出重定向异曲同工,下面以具体的示例加以说明。

【例6-7】 使用grep命令过滤root,没有改变输入端,默认为键盘,接着把输入重定向到/etc/passwd。

 加或不加“<”符号,输出结果一样,但原理是不一样的。/ect/passwd一个是作为文件,一个是作为参数。

【例6-8】 使用dd命令从/dev/zero中读取数据并写入到file01.txt文件,每次写入1MiB,一共写入2次。

 使用输入重定向与输出重定向的方式也可以实现同样的功能。

 【例6-9】 使用at命令创建一个计划任务,从现在开始5分钟后创建用户linux,按组合键Ctrl+d结束。

 若同时创建多个用户,以此方法从键盘输入会十分烦琐,使用输入重定向则会非常方便。

1.3 重定向综合案例

 【例6-10】 利用重定向建立多行文件(命令行)。

使用echo命令重定向并不能建立多行文件,一般使用cat命令,在键盘上输入文本按回车键换行,完成后按组合键Ctrl+d结束。

 “>”表示覆盖,但在此处是指覆盖原来的file03.txt,输入的3行文本一次输出到file03.txt。如果退出后再次输出,那将覆盖掉先前的文本内容,此时就需要用“>>”进行追加。

每次写入文本都需要按组合键Ctrl+d结束显得比较烦琐,用户可以自定义一个结束的符号,通常使用“EOF”。

 【例6-11】 利用重定向建立多行文件(脚本)。

命令行和脚本都可以操纵Shell。在命令行中可以用组合键Ctrl+d退出,但在脚本中不可以。下面利用脚本创建多行文件,在脚本文件中写入文本,并加入“EOF”结束符号。

 使用bash执行该脚本。

1.4 Subshell

 Subshell 是指圆括号里的命令会在另外的进程中执行。当需要让一组命令在不同的目录下执行时,采用这种方法可以不修改主脚本的目录。

二、进程管道

管道实际上也是一种重定向,重定向字符控制输出到文件,管道控制输出到其他程序。

管道的作用是把上一个进程的输出作为下一个进程的输入,利用管道可以把若干个命令连接在一起。

三、总结

       I/O重定向和管道是在Unix和类Unix操作系统中常用的功能,用于控制进程之间的输入和输出。它们提供了一种灵活的方式来处理进程之间的通信,同时也可以实现对输入和输出的控制。I/O重定向允许用户将一个进程的标准输入和输出连接到另一个文件或设备上。这样就可以将一个进程的输出发送到一个文件中,或者从一个文件中读取输入,而不是从终端或键盘输入。这种功能对于批处理操作和脚本编程非常有用,因为它可以自动化输入和输出流程,而无需手动输入和输出。

       在Unix系统中,I/O重定向使用特殊的符号来实现。例如,">"符号可以将一个命令的输出重定向到一个文件中,"<"符号可以将一个文件的内容作为输入发送给一个命令。另外,">>"符号可以将一个命令的输出追加到一个文件的末尾,而不是覆盖整个文件。

       管道是另一种进程间通信的方式,它允许一个进程的输出直接作为另一个进程的输入。这种功能可以将多个命令连接在一起,形成一个管道,从而实现复杂的数据处理和转换操作。例如,可以使用管道将一个命令的输出发送给另一个命令进行处理,然后再将处理结果发送给第三个命令,以此类推。在Linux系统中,管道使用竖线符号"|"来实现。例如,命令"ls | grep .txt"将列出当前目录下的所有文件,并将包含".txt"的文件名输出到grep命令中进行过滤。通过灵活运用I/O重定向和管道,用户可以更加高效地处理和管理进程之间的输入和输出,从而提高工作效率和系统性能。

 

标签:输出,重定向,文件,命令,管道,第六章,txt,输入
From: https://www.cnblogs.com/Wybzyx/p/17811442.html

相关文章

  • 第六章、Vue3高级
    目录二十四、项目实战细节(二)1、组件设置name属性二十四、项目实战细节(二)1、组件设置name属性<scriptsetup>//Vue3.3后支持defineOptions({name:'组件名',inheritAttrs:false})</script>......
  • Linux第六章I/O重定向与管道
    1、I/O重定向(1)tty显示终端的号码date会显示当前时间date> date.txt会把时间的结果写入date.txt里(2)tty打开一个终端4将终端3的日期输出结果重定向到终端4date>/dev/pts/4(3)利用passwd改密码,系统会产生一个进程,其PID为10277ls/proc/10277/fd可以查看内核与进程......
  • 第六章 I/O重定向与管道
    1.I/O重定向I/O重定向是指改变程序的标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)的默认设备,将其与其他设备或文件进行关联。通过I/O重定向,我们可以将程序的输入从键盘转向文件或其他设备,将程序的输出和错误信息输出到文件或其他设备而不是屏幕上。标准输入重定向标准输......
  • 7、Redis管道
    问题由来一、是什么二、案例演示三、小总结1、pipeline与原生批量命令对比2、pipeline与事务对比3、使用pipeline注意事项......
  • 信息系统项目管理师 第六章-项目进度管理
    1.概述2511.规划进度管理为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档过程。2.定义活动识别和记录为完成项目可交付成果而需采取的具体行动的过程。3.排列活动顺序识别和记录项目活动之间的关系的过程4.估算活动资源估算执行各项活动所需的材料、人员......
  • 打工笔记----------------------------iframe重定向让父级页面跳转
    "top.location.href"是最外层的页面跳转$.ajax({url:URL+"SystemPrivileges/UserChangePW",data:{userName:userName,passWord:passWord,oldpwd:passWordold,token:token},type:"post",dataType:"json&q......
  • 第六章 消息认证和哈希函数 —— 现代密码学(杨波)课后题答案解析
    第五章作业参考答案1.6.1.3节的数据认证算法是由CBC模式的DES定义的,其中初始向量取为0,试说明使用CFB模式也可获得相同的结果。解:设需认证的数据分为64比特长的分组,D1,D2,…,DN,其中DN不够64比特则右边补0,由题设,数据认证算法相当于在CBC模式中初始向量取为0,并按如下关系进行:   ......
  • JavaWeb--Reaponse设置响应数据功能介绍&完成重定向
    Response设置响应数据功能Response完成重定向重定向(Redirect):一种资源跳转方式*redirect一定地址是8080往后补的,一定要写全也可以是外部地址 路径问题: 动态获取虚拟目录//动态获取虚拟目录StringcontextPath=request.getContextPath();response.sendRedirect(con......
  • 蓝桥杯管道 -- 二分, 区间覆盖
    蓝桥杯管道--二分,区间覆盖原题链接参照执梗大佬的代码,我太菜了wuwuwu......importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;/***ClassName:Main12*Package:*Description:**@author:LH寒酥......
  • I/O重定向与管道
    I/O重定向在Linux中,I/O重定向是一种强大的工具,允许你更灵活地处理命令的输入和输出。以下是一些常用的I/O重定向操作:输出重定向使用>符号可以将命令的标准输出重定向到文件,例如:bashls>file_list.txt这会将ls命令的输出写入到file_list.txt文件中。输入重定向使用<符号......