Linux操作系统中的标准、重定向输入输出、过滤器和管道符的使用
目录一、常见输入方式简介1.1.标准输入文件1.2.标准输出文件1.3.标准错误文件1.4.重定向输入1.5.重定向输出二、过滤器和管道两者通常搭配使用2.1.过滤器2.2.管道三、使用详解3.1.过滤器3.1.1.grep过滤器3.1.2.wc过滤器3.1.3.cut过滤器3.1.4.sort过滤器一、常见输入方式简介1.1.标准输入文件普通情况下常见的输入源即是鼠标和键盘并且键盘是shell中默认的标准输入文件。1.2.标准输出文件在Linux中shell将显示器作为其执行的任何命令的默认输出设备。因此显示器被称之为标准输出文件。案例发出ls命令时shell执行命令并将其输出发送到标准输出文件文件描述符0表示标准输入文件文件描述符1则表示标准输出文件文件描述符2则描述标准错误文件1.3.标准错误文件shell实用程序在显示器上显示错误信息。错误信息的原因可能有很多种比如输入无效指令或者用户没有权限的执行因而显示器也是标准错误文件。1.4.重定向输入通常情况下程序或则命令都是从终端接受用户的输入信息如常见的鼠标键盘等。而重定向输入它是指一种可将输入从文件中读取而不需要手动键入的一种方式。Linux中输入重定向符号是 。示例用法1.command file.txt将命令的输入从文件 “file.txt 中读取。2.command1 | command2 file.txt将命令 command1 的输出通过管道传递给 command2同时将 “command2 的输入从文件 file.txt 中读取。通过使用输入重定向我们可以方便地将预先准备好的文件内容作为命令或程序的输入而不需要手动逐行输入。这在处理大量输入数据、自动化操作或批量处理任务时非常有用。同时输入重定向还可以与其他操作符如输出重定向和管道结合使用以实现更复杂的输入输出操作和数据处理。1.5.重定向输出同理重定向输出是一种将程序或命令的输出从默认的位置如终端或控制台转移到其他位置或文件的过程。Linux中使用特定的符号来实现输出重定向。示例1.将输出重定向到一个文件并覆盖该文件的内容。例如command file.txt。2.将输出附加到一个文件的末尾而不会覆盖原有内容。例如command file.txt。3.2将错误输出重定向到一个文件。例如command 2 error.txt。4.将标准输出和错误输出都重定向到一个文件。例如command output.txt。通过使用这些重定向符号我们可以将程序或命令的输出导向到文件中以便日后查看、分析或进行其他操作。二、过滤器和管道两者通常搭配使用2.1.过滤器在计算机科学中过滤器Filter是指一种用于处理数据流或输入数据并根据特定条件筛选、转换或操作数据的组件或程序。过滤器通常被用于从输入数据中选择、删除或修改特定的元素或信息以便获得所需的结果。过滤器可以执行各种不同的操作包括但不限于以下几种1. 数据筛选过滤器可以基于条件来筛选输入数据选择满足特定条件的数据项。例如可以使用过滤器从一组数字中选择所有大于某个阈值的数字。2. 数据转换过滤器可以对输入数据进行转换将其转换为不同的数据格式或表示形式。例如可以使用过滤器将输入的文本数据中的大写字母转换为小写字母。3. 数据修剪过滤器可以删除或修剪输入数据中的无关信息或不需要的部分。例如在处理日志文件时可以使用过滤器删除其中的注释或空白行。4. 数据增强过滤器可以添加或修改输入数据以增强其内容或性质。例如可以使用过滤器在图像数据中应用滤镜或图像处理算法以改变其外观或增强其特征。2.2.管道管道Pipe是一种用于连接多个程序或进程的通信机制允许数据在它们之间以流的方式传递。通过使用管道一个程序的输出可以直接作为另一个程序的输入实现数据的连续传输和处理。例如 “command1 | command2” 表示将 command1 的输出作为command2的输入。linux中管道使用竖线符号 | 表示。管道的一些特点和应用包括1. 节省内存通过使用管道数据可以逐个元素地流过处理程序而不需要一次性将整个数据集加载到内存中。这样可以节省大量的内存空间特别是在处理大量数据时。2. 实现数据流处理管道允许数据以流的方式被处理而不需要等待整个数据集就绪。这对于实时数据处理和连续流数据非常有用如日志处理、数据清洗和实时监控等场景。3. 模块化和可组合性通过将多个程序连接起来可以实现模块化和可组合的数据处理流程。这样可以将复杂任务分解为多个较小的、可复用的部分并将它们通过管道连接起来。4. 各种数据处理操作管道可以用于各种数据处理任务如数据过滤、数据转换、数据聚合、数据分析等。它们可以组合使用不同的程序来实现特定的数据处理需求。三、使用详解3.1.过滤器由上边的基本介绍所知过滤器Filter适合用于处理、过滤数据流而管道允许数据以数据流的方式进行传输这就使得两者之间经常搭配在一起使用。egps -ef | grep mysql3.1.1.grep过滤器在 Linux 中grep 命令是用于搜索和过滤文件内容的工具。它支持多种正则表达式来进行模式匹配和过滤。grep过滤器搜索文件中特定样式的字符并显示包含那个样式的所有行。在文件中搜索的此样式被称为正则表达式。grep过滤器在不指定正则表达式的情况下无法使用默认指定的时基本正则表达式。使用语法grep [option(s)] pattern [filename]grep命令中的文件名是可选的。如果没有文件名grep等待标准输入。输入一行后grep在行中搜索正则表达式如果包含该特定表达式就显示此行。用户指示输入结束时Ctrl d执行才结束。下面是一些常用的正则表达式语法字符用法示例描述’【】‘与一组字符中的任意一个进行匹配grep New[abc]将搜索样式指定为‘Newa,Newb,Newc’【-】‘表示一个范围内的字符匹配grep test[a-c]将搜索样式指定为testq,testb,testc’^‘匹配行的起始位置grep ^New[abc]将搜索样式指定为’Newa,Newb,Newc‘出现在行首的匹配项’$‘匹配行的结束位置grep New[abc]$将搜索样式指定为’Newa,Newb,Newc‘出现在行末尾的匹配项’[^]‘用于字符串集的否定grep New[^a-b]搜索包含词’New后接除了a、b、c的任意字符的样式.匹配除换行符外的任意字符grep New.[abc[指定包含词“New”后接‘a、’b、‘c’中任意字符的样式*匹配前面的字符零次或多次grep New*指定以New开头的匹配项\用于转义特殊字符grep New\.\[abc\]指定搜索样式【New.[abc]】其中点.和【abc】都仅表示普通的字符含义grep过滤器选项用于更改命令的输出。参数选项描述-n打印与样式匹配的每行及其行号行号打印在行首-c打印与样式匹配的行数-v打印与正则表达式指定的样式不匹配的所有行案例3.1.2.wc过滤器用于计算磁盘文件或者标准输入文件中的行数、字数和字符数如果没有文件名同样也是跟我们的grep过滤器操作一样也是等待标准输入。标准输入完成之后按ctl d结束。使用语法wc [option] [filename]其中的默认选项包括以下的三个wc过滤器的选项选项描述-lline显示行数-wword显示词数-cchar显示字符数案例3.1.3.cut过滤器当需要从特定命令例如ls和who的输出抽取特定列时可以使用我们的cut过滤器使用语法cut [options] [filename]使用参数选项选项描述-f column_number(s)显示指定列-c character_numbers(s)显示指定字符-dcolumn_delimiter指定列定界符。tab是默认列定界符案例3.1.4.sort过滤器sort过滤器按升序排列标准输入中的每行。需要输入sort命令然后输入sort命令然后输入想要排序的数据接着需要按Ctrl d键来排列数据选项描述-r按反序降序排序输入-fsort过滤器以字符的ASCII码A~Z---65~90,a~z----97~122数字0~9的值比大小字母A~Z的值小-n以非ASCII顺序排列数字filename排序指定文件的内容默认情况下文件是以升序排列pos1 -pos2以特定列的顺序排序文件-t基于特定列分隔符排序文件-o将sort过滤符的输出保存在磁盘文件上案例-f选项