Linux Shell核心编程指南 - (EPUB全文下载)

文件大小:0.17 mb。
文件格式:epub 格式。
书籍内容:

Linux Shell核心编程指南
第1章 从这里开始,起飞了
第2章 人工智能,很人工、很智能的脚本
第3章 根本停不下来的循环和中断控制
第4章 请开始你的表演,数组、Subshell与函数
第5章 一大波脚本技巧正向你走来
第6章 上古神兵利器sed
第7章 不可思议的编程语言awk
反侵权盗版声明
第1章 从这里开始,起飞了
1.1 脚本文件的书写格式
什么是Shell脚本文件?简单来说就是将Linux或类UNIX系统的命令写入一个文件中,这个文件就是一个Shell脚本文件。所以我们编写的Shell脚本文件必须在Linux或类UNIX操作系统中运行,本书所采用的操作系统平台是CentOS,给予脚本文件执行权限并运行脚本文件后,计算机就会从上往下顺序执行脚本文件内容中的命令。相对于在命令行手动执行系统命令而言,脚本文件的优势是一旦编写完成,以后就可以自动完成脚本文件中的所有命令(效率更高)。而且,相同的脚本文件可以被反复调用并执行,避免了不必要的手动重复输入命令的工作。
脚本就是一个文件,那么我们使用什么工具来创建这个文件呢?其实,脚本文件就是一个普通的文本文件,所以使用任何一款文本编辑器软件都可以创建脚本文件。如VIM、gedit、Emacs、Notepad++、Sublime、Atom等工具,在后面章节的案例中我们使用的是VIM编辑器。新建文件时推荐使用.sh作为文件的扩展名,让人一看便知该文件是一个Shell脚本文件。
脚本文件又有哪些书写格式要求呢?首先,脚本文件第一行要求使用shebang(#!)符号指定一个脚本的解释器,如#!/bin/bash、#!/bin/sh、#!/usr/bin/env python等,该行被#注释,所以不会被当作命令来执行,但计算机通过该注释信息得知应该使用什么解释器来解释整个脚本文件中的所有有效代码(本书案例中使用的解释器是/bin/bash)。其次,脚本文件使用#或<<符号实现单行或多行注释,被注释的关键词或代码将不被执行,注释主要是给人看的!通过阅读注释我们可以快速了解脚本文件的功能、版本、作者联系方式等,核心作用还是对脚本文件或代码块的功能进行说明。最后,最重要的内容就是代码部分,一般一行代码是一条命令,按从上往下的顺序执行脚本文件中所有有效的代码命令。
下面我们来编写第一个脚本文件,看看脚本文件的构成。
注意
<<符号后面的关键词可以是任意字符串,但前面使用什么关键词,结束注释时必须使用相同的关键词。如果从<<ABC开始注释,则结束注释信息时也必须使用ABC(字母区分大小写)。
1.2 脚本文件的各种执行方式
编写好脚本文件后,接下来就是执行了。执行脚本文件的方式有很多种,有需要执行权限的方式、有不需要执行权限的方式、有开启子进程的方式、有不开启子进程的方式。
1)脚本文件自身没有可执行权限
如果暂时还没有给脚本文件可执行的权限,那么默认脚本是无法直接执行的,但bash或sh这样的解释器,可以将脚本文件作为参数(读取脚本文件中的内容)来执行脚本文件。
通过以上3条命令的输出信息,我们可以看到,在没有执行权限的情况下,执行./(当前目录)下的first.sh脚本文件会出现报错信息,而使用bash和sh将first.sh脚本作为参数执行,就可以输出正确的信息“hello the world”。
2)脚本文件具有可执行权限
通过chmod命令可以给脚本文件分配执行权限,脚本文件一旦有了执行权限,就可以使用绝对路径或相对路径执行了。以下假设某个脚本文件,绝对路径为/root/first.sh,则执行脚本文件效果如下。
3)开启子进程执行的方式
关于是否开启子进程,我们首先要了解什么是子进程,一般可以通过pstree命令来查看进程树,了解进程之间的关系。
通过以上输出,我们可以看到计算机启动的第一个进程是systemd,然后在这个进程下启动了N个子进程,如NetworkManager、atd、chronyd、sshd这些都是systemd的子进程。而在sshd进程下又有2个sshd的子进程,在2个sshd子进程下又开启了bash解释器子进程,而且在其中一个bash进程下面还执行了一条pstree命令。对于刚才我们说的不管是直接执行脚本,还是使用bash或sh这样的解释器执行脚本,都是会开启子进程的。下面通过一个脚本文件演示效果。
首先,打开一个命令终端,在该命令终端中编写脚本文件,并执行脚本文件。
然后,开启一个命令终端,在这个终端中通过pstree命令观察进程树。
通过输出可以看到,在bash终端下开启了一个子进程脚本文件,通过脚本文件执行了一条sleep命令。
回到第一个终端,使用Ctrl+C组合键终止前面执行的脚本文件,使用bash命令再次执行该脚本。
最后,在第二个终端上使用pstree命令观察实验结果。
结果类似,在bash进程下开启了一个bash子进程,在bash子进程下执行了一条sleep命令。
4)不开启子进程的执行方式
下面我们来看看不开启子进程的执行方式的案例,与之前的实验类似,我们需要开启两个命令终端。
首先,打开第一个终端,这次使用source或.(点)命令来执行脚本文件。
或者
然后,我们再打开第二个终端,通过pstree命令观察结果。
通过实验结果可以看到,脚本文件中的sleep命令是直接在bash终端下执行的。
最后,我们编写一个特殊的脚本文件,内容如下。
对于这个脚本文件,分别使用开启子进程和不开启子进程的方式执行。
你可能已经发现了,source命令不开启子进程执行脚本文件会导致整个终端被关闭,而bash命令开启子进程的方式执行脚本文件却不受任何影响,为什么呢?希望大家可以自己思考这个问题!
1.3 如何在脚本文件中实现数据的输入与输出
在Linux系统中使用echo命令和printf命令都可以实现信息的输出功能,下面我们分别看这两个命令的应用案例。
1)使用echo命令创建一个脚本文件菜单
功能描述:echo命令主要用来显示字符 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » Linux Shell核心编程指南 - (EPUB全文下载)