Linux自动化运维(Shell与Ansible)(微课版) 课件 1-3-控制命令的输入和输出信息_第1页
Linux自动化运维(Shell与Ansible)(微课版) 课件 1-3-控制命令的输入和输出信息_第2页
Linux自动化运维(Shell与Ansible)(微课版) 课件 1-3-控制命令的输入和输出信息_第3页
Linux自动化运维(Shell与Ansible)(微课版) 课件 1-3-控制命令的输入和输出信息_第4页
Linux自动化运维(Shell与Ansible)(微课版) 课件 1-3-控制命令的输入和输出信息_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

初识Shell脚本任务3:控制命令的输入和输出信息目录/Contents01020304文件描述符输入输出重定向与管道符特殊文件/dev/null和/dev/zeroEOF特殊字符01文件描述符文件描述符在Linux系统中,文件描述符用于唯一标识并追踪系统中的一个打开的文件、管道、网络连接或其他输入/输出资源。操作系统通过文件描述符来管理所有的资源访问,这包括读写操作,使文件描述符成为程序与资源交互的核心。文件描述符的应用非常广泛,例如,在大多数Linux系统中,标准输入、标准输出和标准错误默认被分配到文件描述符0、1和2。此外,当程序打开文件或创建网络套接字时,系统分配的文件描述符使得后续的所有操作(如数据读取和发送)都通过这些描述符进行。文件描述符的管理由操作系统负责,确保在程序结束时关闭所有打开的描述符。程序也可以显式关闭文件描述符以释放资源。此外,操作系统对每个进程可用的文件描述符数量有限制,这可以通过系统设置或动态调整,超出限制将导致打开文件或套接字操作失败。文件描述符在Linux系统中设备文件和文件描述符的关系及其工作流程,具体步骤如下:设备注册(Devicesregister):图中蓝色箭头指向键盘和显示器,表明这些设备通过内核注册,因此它们被系统赋予了文件接口。在Unix系统中,大多数设备都通过特殊的文件在文件系统中被表示,这些特殊文件通常位于/dev目录下。打开文件(Openingthefile):图中绿色箭头展示了使用open函数打开一个设备文件(例如,光驱/dev/sr0),系统将会返回一个文件描述符。这个过程涉及系统调用,该调用返回一个与设备文件相关联的文件描述符(一个整数值),此后对文件的操作都会使用这个描述符。文件描述符引用(Furtherreferences):图中红色箭头表示进一步的对文件描述符的引用(如读取和写入操作)将被内核路由到对应的设备上。当执行如read函数这样的系统调用时,你会通过文件描述符来指定要操作的设备,然后系统将数据从设备传送到程序中(或反之)。02输入输出重定向与管道符输入输出重定向与管道符在Linux操作系统中,标准输入通常是指键盘,标准输出通常是指屏幕,标准错误输出通常也是指屏幕。通过使用输入输出重定向可以改变命令的输入或输出的来源或目的地,进而改变命令的输入或输出方式。重定向可以让命令行中执行的命令从标准输入或标准输出转移到其他位置。在实际的命令行操作中,这种机制常通过|符号表示,例如command1|command2,其中command1的输出会成为command2的输入。这使得用户可以组合多个简单命令来执行复杂的任务。Linux系统中程序默认打开的三个标准文件:标准输入、标准输出和标准错误。文件描述符StandardInput:代表标准输入(stdin),其文件描述符是0。标准输入通常来自键盘,是程序读取输入的主要途径。StandardOutput:代表标准输出(stdout),其文件描述符是1,标准输出是程序正常输出的去向,通常指的是显示在屏幕上的文本。StandardError:代表标准错误输出(stderr),其文件描述符是2。当程序需要输出错误消息或警告时,它们通常会被发送到这个文件,即使标凘输出被重定向到别处,错误消息通常仍然会显示在屏幕上。Linux进程和管道(pipeline)之间的关系如下图所示:左侧:我们看到一个进程,它有标准输入(stdin)、标准输出(stdout)和标准错误(stderr),分别对应文件描述符0、1和2。此外,也有其他的文件描述符,从3开始,用于打开更多文件。右侧:另一个进程也具有stdin、stdout和stderr,也有可能打开更多的文件描述符。管道(Pipeline):位于两个进程之间,表示数据从左侧进程的标准输出被传送到右侧进程的标准输入。这是Linux中进程间通信的一种常用方式,允许一个进程的输出直接作为另一个进程的输入。文件描述符输入输出重定向与管道符ls>output.txt此命令会将ls命令的输出写入文件output.txt。如果文件不存在,则会创建文件;如果文件已存在,则会覆盖文件中的内容。使用>符号将输出重定向到文件中ls|greptxt此命令会将ls命令的输出传递给grep命令,然后grep命令会搜索输入中的txt字符串。这样就可以通过两个命令的结合来实现更复杂的功能。使用管道符将输出传递给其他命令ls>>output.txt此命令会将ls命令的输出追加到文件output.txt的末尾,之前已经存在的内容不会被覆盖。使用>>符号将输出追加到文件末尾sort<input.txt此命令会将文件input.txt中的内容作为sort命令的输入。使用<符号将输入重定向到文件中在Linux操作系统中,可以使用>和<符号来实现输入输出重定向。具体来说,<符号可以将标准输入重定向到文件中,而>符号可以将标准输出重定向到文件中。在Linux操作系统中,可以使用管道来实现程序之间的通信。管道是一种特殊的文件,它可以在程序之间传输数据。例如,可以使用管道将一个程序的输出作为另一个程序的输入。在Linux中,管道符(|)是一种Shell运算符,用于将一个命令的输出作为另一个命令的输入。这样就可以使用多个命令来实现更复杂的功能。输入输出重定向与管道符常见的输入输出重定向符号和示例:操作符描述示例结果说明<标准输入重定向command<file将文件file的内容作为command的输入<<追加标准输入(Heredocument)command<<END<br>text<br>END将直至遇到END标记之前的所有输入文本作为command的输入>标准输出重定向(覆盖文件)command>file将command的输出写入到file,如果file存在,则覆盖>>标准输出重定向(追加到文件)command>>file将command的输出追加到file的末尾,不会覆盖原有内容&>标准输出和标准错误重定向(覆盖文件)command&>file将command的标准输出和标准错误都重定向到file,覆盖内容&>>标准输出和标准错误重定向(追加到文件)command&>>file将command的标准输出和标准错误都追加到file的末尾2>标准错误重定向(覆盖文件)command2>file将command的标准错误输出重定向到file,覆盖内容2>>标准错误重定向(追加到文件)command2>>file将command的标准错误输出追加到file的末尾2>&1将标准错误重定向到标准输出command>file2>&1将command的标准输出和标准错误合并后重定向到file03特殊文件/dev/null和/dev/zero特殊文件/dev/null/dev/zero在Linux操作系统中,字符类型的文件通常为设备文件。设备文件是指表示输入输出设备的特殊文件,它们不存储数据,而是存储特定的信息,这些信息对应设备的输入输出。字符类型的文件可以用于表示如终端、串行端口、打印机等设备。与普通文件不同的是,设备文件的内容由设备本身的特性决定。设计字符类型文件的目的是方便系统管理员和程序员通过文件系统调用来操作设备,为其他程序提供某些特定的输入或输出操作,而不必直接和设备打交道。特殊文件/dev/null/dev/zero/dev/null/dev/null是一个特殊的字符类型文件,也被称为“黑洞文件”,写入它的内容都会被丢弃,并且读取它时会返回空,通常用于丢弃不需要的输出或者忽略不需要的输入,即丢弃不需要的数据。/dev/null常被用来作为命令的输出或者输入的“垃圾桶”,可以起到清空或忽略命令的输出的作用。如command>/dev/null会静默执行命令,不在控制台上显示任何输出。/dev/zero/dev/zero是一个特殊的设备文件,它可以产生无限的空字符(即0值字节)。/dev/zero在被读取时会提供无限的空字符,其典型用法包括用它提供的字符流来覆盖信息,以及产生一个特定大小的空白文件。特殊文件/dev/null/dev/zero创建一个名为file.bin、大小为1MB的文件:ddif=/dev/zeroof=file.binbs=1Mcount=1使用以下命令将命令的输出重定向到/dev/null:echo"Thismessagewillbediscarded">/dev/null

忽略命令的输出信息command2>/dev/null

忽略命令的错误信息,/dev/null通常用于丢弃不需要的输出ls-l/non-existent-dir2>/dev/null使用2>/dev/null进行输出重定向,表示将标准错误输出重定向到/dev/null,这样就可以忽略ls命令的错误输出04EOF特殊字符EOF特殊字符EOF(EndofFile,文件结束标志)是一个特殊的字符串,表示文件的末尾或者输入流的结束,可以作为一种特殊的输入重定向符号,通常用来将多行文本传递给命令,而不用将文本保存到文件中。在Shell脚本中,EOF常用于在脚本中嵌入多行文本,而不需要使用多个echo命令或使用其他文件来存储文本。EOF可以用在以下场景中:从标准输入中读取多行文本、将多行文本输出到文件中、将多行文本追加到文件中、将多行文本作为参数传递给命令。EOF特殊字符使用下面的命令将多行文本输入cat命令:cat<<EOF>>eof-stdin.txtThisisline1Thisisline2Thisisline3EOF#查看eof-stdin.txt文件内容cateof-stdin.txtThisisline1Thisisline2Thisisline3在上面的命令中,EOF前面的<<是输入重定向符号,表示从这里开始的输入都将被重定向到cat命令,>>eof-stdin.txt表示将输入的内容输出到eof-stdin.txt文件中。注意:最后的EOF必须独占一行,且前面不能有任何字符。EOF特殊字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论