Shell编程规范与管道重定向

Shell编程规范与管道重定向

一、Shell脚本编程规范

1、Shell脚本应用场景

Shell脚本(Shell Scripts)就是将要执行的命令按顺序保存到一个文本文件,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是为了方便管理员进行设置或管理,可结合各种Shell控制语句已完成更复杂的操作。常用于重复性操作、批量事务处理、自动化运维、服务运行状态监控、定时任务执行等等。

2、Shell编程规范

Linux系统中的Shell脚本是一个特殊的应用程序,它介于操作系统内核与用户之间,充当一个“命令解释器“的角色,将需要执行的操作传递给内核执行,并输出执行结果。

常见的Shell解释器程序有很多种,使用不同的Shell脚本时,其内部指令、命令行等提示方面会存在一定的区别。通过/etc/shells文件可以了解当前系统所支持的Shell脚本种类。

其中,/bin/bash是目前大多数Linux版本采用的默认Shell脚本。Bash的全称为Bourne Again Shell,是最受欢迎的开源软件项目之一。

Shell脚本简单来说就是将平时使用的各种Linux命令按照顺序保存到一个文件文件,然后对其添加可执行权限,这个文件就成为一个Shell脚本了。例如,执行以下操作来创建第一个脚本文件”1.sh“并执行。

上述脚本文件1.sh脚本文件中,包含五条命令:cd /opt、touch 1.txt、echo ”this is my first shell“、echo ”1.txt文件中的内容为:“、cat 1.txt。执行此脚本文件后,输出结果与依此执行这五条命令是相同的,从而实现批量处理的自动化过程。

上述脚本文件中,第一行”#!/bin/bash"是一行特殊的脚本声明,表示此行以后的语句通过/bin/bash程序来解释执行;echo ”1.txt文件中的内容为:“其实是为了对命令cat 1.txt的执行结果友好输出提示信息,使执行结果更加易懂。另外,除了脚本申明外的行外,添加以”#“开头的行可以对脚本进行注释,例如对上述脚本添加注释信息如下:

实际无需对每行命令都进行注释,但对于一些不常用的命令或者逻辑比较复杂的命令可以注释信息方便查看时了解该命令的作用。

二、管道与重定向

shell脚本“批量处理”的特性,使得大部分操作过程位于后台,无需用户进行干预,因此需要灵活提取、过滤执行信息,其中就包括两个I/O操作:管道和重定向。

1、管道操作

管道操作为不同命令之间的协同工作提供了一种机制,位于管道符号"|"左侧的命令输出结果,将作为右侧命令的输入对象(处理对象/参数),同一行命令中可以使用多个管道。管道命令的基本使用格式为"cmd1 命令1 | cmd2 命令2 | cmd3 命令3 | cmdn 命令n“。例如:

上面命令操作中,先通过“grep”命令过滤关键信息查找/etc/passwd文件中符合条件的行并通过管道操作结合“awk”命令提取需要的信息。其中awk -F: ‘{print $1 $7}'表示以冒号“:”作为分隔,输出第1个和第7个区域的字符串。

2、重定向操作

Linux系统使用文件来描述各种硬件、设备等资源,如硬盘和分区、光盘等设备文件。用户通过操作系统处理信息的过程中,包括以下几类交互设备文件:

  • 标准输入(STDIN):默认的设备是键盘,文件编号为0,命令将从标准输入文件中读取在执行过程中需要的输入数据。

  • 标准输出(STDOUT):默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件。

  • 标准错误(STDERR):默认的设备是显示器,文件编号为2,命令将执行期间的各种错误信息发送到错误文件。

    标准输入、标准输出和标准错误默认使用键盘和显示器作为关联的设备,与操作系统进行交互,完成最基本的输入、输出操作。从键盘接收用户输入的各种命令字符串、辅助控制信息,并将命令结果输出到屏幕上(包括命令执行出错反馈错误信息)。

    在实际的Linux系统维护中,可以改变输入、输出内容的方向,而不使用默认的标准输入、输出设备(键盘和显示器),这种操作称为“重定向”。

1)重定向输入

重定向输入指的是将命令中接收输入的途径由默认的键盘改为指定的文件,而不是等待从键盘输入。重定向输入使用“<"操作符。例如:

​ 通过重定向输入可以使一些交互式操作通过读取文件来完成,如上面的设置用户新密码不用每次根据提示输入两次密码字串。

2)重定向输出

重定向输出指的是将命令的正确输出结果保存到指定文件中,而不直接显示在屏幕上。重定向输出使用”>“”>>''操作符号,分别用于覆盖和追加文件(目标文件已存在)。如果重定向输出的目标文件不存在,则会新建该文件并覆盖或追加重定向输出结果。例如:

3)错误重定向

错误重定向指的是将执行命令过程中出现的错误信息(如选项、参数甚至命令错误等)保存到指定的文件中,而不是直接显示在屏幕上。错误重定向使用“2>"操作符,其中”2”指错误文件的编号。使用“2>”操作符会覆盖原内容,如果是要追加内容则使用“2>>“操作符。例如:

三、小结

  • 重定向包括重定向输入、重定向输出和错误重定向。
  • 重定向输出">"操作符表示覆盖内容,”>>"操作符表示追加内容;错误重定向“2>"操作符表示覆盖内容,”2>>"操作符表示追加内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值