Shell入门
1.什么是Shell
- Shell是个命令解释器,用于解释用户输入的命令。
- Shell存在于操作系统的最外层,负责与最终用户对话,把用户的输入解释给系统内核,接着内核再去支配计算机硬件去执行各种操作。
如图:
2.什么是Shell脚本
- linux命令、变量和流程控制语句等有机的结合起来,就成了一个功能强大的Shell脚本
3.Shell脚本在运维工作中的作用
Linux系统中所有的配置文件,日志文件(如MySQL、Httpd、Rsync服务)、以及绝大多数的启动文件都是纯文本文件。而Shell脚本很适合处理纯文本类型的数据。
4.Shell的类型
查看系统支持的shell
cat /etc/shell
查看系统当前使用的是哪个shell
方法1:
echo $SHELL
方法2:
grep root /etc/passwd
注意:ubuntu默认使用的shell为dash,如何切换,以及与bash的区别?
5.Shell脚本的建立和执行
推荐使用linux中自带的vim编辑器来编辑Shell,因为linux中除了vim外还有vi,为了方便,建议做一个别名alias vi="vim",并使其永久有效,这样习惯输入vi的用户也可以直接调用vim。
方法如下:
echo 'alias vi="vim"' >> /etc/profile
检查:
tail -1 /etc/profile
使其立即生效(原理查看后面的shell执行的几种方式)
source /etc/profile
或
. /etc/profile
5.1 脚本的建立
1.第一行Shbang.作用是告诉解释器用哪个程序来解释这个脚本
#!/bin/bash
或
#!/bin/sh
- bash和sh的区别
ls -l /bin/bash
ls -l /bin/sh
sh是bash的软链接。
2.脚本注释 - 在shell脚本中,跟在#后面的内容表示注释,注释不会被执行
- 注释可以自成一行,也可以跟在命令的后面,与命令同一行
- 写注释是一个良好的习惯,注释不光是为了别人,也为了方便自己。
- 注释尽量不要用中文
5.2 脚本的执行
Shell脚本执行前会先加载环境变量文件,加载顺序为:/etc/profile->~/.bash_profile->~/.bashrc->/etc/bashrc。加载上述环境变量后,就会开始执行shell脚本。
1.执行顺序:
从上向下,从左到右。依次执行。如果遇到子shell,会先执行子shell,执行完子shell后再返回执行父shell.
2.执行方式
- 方法1:适用于脚本没有可执行权限后没有指定解释程序
bash 脚本名.sh 或 sh 脚本名.sh - 方法2:适用于脚本有执行权限
通过绝对路径和相对路径执行脚本 - 方法3:source 和 . 的方式
与之前2种方式区别:不会启用新的进行执行脚本,脚本执行结束后会将执行脚本的变量和函数传递到当前脚本中,相当于配置文件中的include功能,修改/etc/profile中的变量,使其立即生效也是这个原因。
6.Shell脚本书写规范和习惯
6.1 规范
1.脚本命令以.sh结尾
2.脚本中第一行为:#!/bin/bash
3.脚本中尽量不要使用中文
4.脚本尽量放在统一目录中。
6.2 习惯
1.代码缩进
2.常规变量字符串定义变量值应加双引号,并且等号前后不能有空格,需要强引用的,则要用单引号'',如果是命令引用的则用反引号。