Shell编程(1)
大家好呀!今天来简单介绍一下Shell基础,Shell介于内核与用户之间,是一个命令解释器,负责命令的解释。简单理解,Shell既是一个程序也是一种脚本语言。
1、shell介绍
1.1 概述
shell介于内核与用户之间,是一个命令解释器,负责命令的解释。
shell是人机交互的桥梁,通过在终端上输入shell命令来控制linux内核,进而控制系统硬件。
1.2 shell的种类
1 | cat /etc/shells |
终端输入ps命令,可以看到bash的进程。当用户在终端上输入命令后,会由该bash进行解析,所以解析命令的是bash,而不是终端(终端只是一个程序,而真正解析的是bash)
终端可以看做是bash的接口,而bash就是shell的一种类型(bash shell)
2、shell脚本
2.1 概述
1)什么是shell脚本?
简单理解,将需要执行的命令保存到文本中,按照顺序执行
。由于shell是解释型的,所以无需编译。
概括而言,若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本
2)什么时候用到脚本?
对于重复化、复杂化的工作,通过把工作的命令写成脚本,后续只需要执行脚本就能完成这些工作。
常见应用场景如自动化分析处理、自动化备份、自动化批量部署安装等等...
3)学习shell的一些建议
对于初学者,学习shell时建议:多看、多练、多思考
。尽可能记忆更多的命令,掌握脚本的标准的格式(如指定魔法字符、使用标准的执行方式运行脚本)。当然,学习shell还有一个非常重要的一点:必须熟悉并掌握脚本的基本语法
。
2.2 脚本编写与执行
1)脚本基本写法
脚本第一行:
1 | #!/bin/bash |
#!(魔法字符),指定脚本代码执行的程序。即它告诉系统这个脚本需要什么解释器来执行,也就是使用哪一种Shell
对脚本基本信息的描述(注释):
1 | # Name: 名字 |
养成写注释的好习惯,方便以后忘记命令的功能后及时查阅。
描述完成后,下面就是脚本的具体内容
1 | commands |
eg:在/(根目录)下创建一个目录shell01,按照上述写法在该目录下编写一个shell1.sh脚本。
编写完成后,保存退出。
命令按顺序依次执行,同一行编写多条命令,使用 ; 分隔
2)脚本执行方法:
标准脚本执行方法(建议):(魔法字符指定的程序会生效)
标准执行方式:绝对路径执行、相对路径执行。
标准执行方式要求:脚本必须要有可执行权限。
使用chmod +x
增加权限
总结(标准执行方法):
①相对路径:**./shell1.sh**
②绝对路径:**/shell01/shell1.sh**
非标准的执行方法(不建议):(魔法字符指定的程序不会运作)
该方式下脚本不需要有可执行权限。
1 | # 直接使用bash命令 |
总结:-x: 一般用于排错,查看脚本的执行过程;-n: 用来查看脚本的语法是否有问题
注:若脚本没有可执行权限,则不能使用标准的执行方法执行,此时可以使用非标准方法,如 bash shell1.sh
其他非标准方式:
1 | # 使用source |
注:source 和 . 表示读取文件,执行文件里的命令
总结(非标准执行方法):
①bash ②source ③ .
3、bash基本特性
3.1 命令和文件自动补全
使用Tab补全命令和文件
3.2 常见快捷键
常见的快捷键总结如下,以下的 ^表示 ctrl
1 | ^c 终止前台运行的程序 |
3.3 常用通配符(重点)
常用通配符总结如下
1 | *: 匹配0或多个任意字符 |
eg:在/tmp目录下创建如下文件并测试
1 | # 创建文件 |
3.4 bash中的引号(重点)
1)双引号”” :会把引号的内容当成整体来看待,允许通过$符号引用其他变量值
2)单引号’’:会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符
3)反撇号``:反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,使用$(),反撇号不能用
1 | echo $(echo "`hostname`") |
注:使用$符号去调用某个变量的时候,双引号可以,而单引号不可以。