shell脚本-重定向管道

由于shell脚本“批量处理”的特殊性,其大部分操作过程以静默方式运行,不需要用户进行干预,因此学会提取,过滤信息便十分重要。本小节主要介绍shell环境的两个I/O操作,-重定向-管道。

重定向操作

重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。(在实际的Linux系统维护中可以改变输入、输出内容的方向,而不使用默认的标准输入、输出设备(键盘、显示器),这种操作称为重定向。)

重定向_百度百科 (baidu.com)

Linux系统使用文件来描述各种资源、硬件、设备等。

用户通过操作系统处理信息的过程中,包含几类交互设备文件

shell脚本-重定向管道、AWK、grep_Shell

1、重定向输入

shell脚本-重定向管道、AWK、grep_Shell_02

常用于在执行脚本的时候,遇到需要输入密码,非常烦琐,使用重定向输入就可以将省略交互式的过程(结合passwd命令的 “--stdin”选项来识别标准输入)

没有交互式的操作语句更方便在shell脚本程序中使用,可以大大减少程序被打断的过程,提高脚本执行的效率。

2、重定向输出

shell脚本-重定向管道、AWK、grep_标准输入_03

若重定向输出的目标文件不存在,则会新建该文件,然后将前面命令的输出结果保存到该文件中,若目标文件已经存在,则将输出的结果追加或覆盖到文件中。

3、错误重定向

shell脚本-重定向管道、AWK、grep_标准输入_04

错误重定向指的是将执行命令错误的过程中出现的错误信息(如选项或参数、命令错误等)保存到指定的文件。其中"2"是指错误文件的编号在使用标准输出,标准输入重定向时,实际上省略了1、0编号。

4、混合输出

shell脚本-重定向管道、AWK、grep_重定向_05

不管输出的信息正确与否都将输出信息保存到文件中。

重定向输入

举例:

shell脚本-重定向管道、AWK、grep_标准输入_06

重定向输出覆盖

举例:

shell脚本-重定向管道、AWK、grep_标准输入_07

重定向输出追加

举例:

shell脚本-重定向管道、AWK、grep_标准输入_08

错误重定向

举例:

shell脚本-重定向管道、AWK、grep_标准输入_09

混合输出

"&>"操作符号将错误和正确的两类信息输出保存到同一个文件中。

在对于没有用的信息或不在需要的可直接放到将其指定到空文件/dev/null中。

管道操作

管道(pipe)操作为不同的命令之间的协同工作提供了一种机制,位于管道符号"|"左侧的命令输出结果,将作为右侧命令的输入(处理对象)。(同一行命令中可以使用多个管道)

简单些就是盖房子砌砖是一块一块往上该没有直接盖上面的。没有下面的做地基,上面的也盖不成功。盖上去的砖块就是处理的结果。交给了管道右侧命令的输入(处理对象)。

但是要注意grep和查看文件的五个命令和sort、uniq、等命令均支持管道符,是因为这些命令均可从标准输入中读取要处理的文本(即从标准输入中读取参数),而对于部分命令,例如rm、kill等命令则不支持从标准输入中读取参数,只支持从命令行中读取参数(即rm命令后面必须指定删除的文件或者目录,kill命令后面必须要指定杀死的进程号等)。一般情况下也就只有不是处理文本文件的命令均不支持管道符号。

在Shell脚本应用中,管道操作通常用来过滤所需要的关键信息。例如,使用grep命令查询使用 /bin/bash作为Shell的用户名称时,会输出符合条件的整行内容,在此基础上可以结合管道操作与 awk命令做进一步过滤,只输出用户名和登录Shell列。

shell脚本-重定向管道、AWK、grep_重定向_10

上例中awk命令的作用是以冒号”:作为分隔,输出第1个,第7个区域的字符串,其中的“-F 部分用来指定分隔符号(未指定时,默认以空格或制表符分隔)。

在来个强一点的例子:

要提取根分区(/)的磁盘使用率信息,可以执行以下操作,其中用到了df、grep、awk 命令和管道操作。

提取前:

shell脚本-重定向管道、AWK、grep_Shell_11

提取后:

shell脚本-重定向管道、AWK、grep_重定向_12

提取之后输出的结果中"grep "/$""表示提取以"/"结尾的行。

重定向与管道操作是Shell环境中十分常用的功能,若能够熟练掌握并灵活运用,将有助于编写 代码简洁但功能强大的Shell脚本程序。

此外还有一些参考脚本供大家学习可修改之后应用到实际工作中

链接:https://pan.baidu.com/s/1_jm9XaFgTAI_ii9AzXnXOg?pwd=1626 提取码:1626 复制这段内容后打开百度网盘手机App,操作更方便哦