概述
首先,为什么我们要学习shell?
- 需要看懂运维人员编写的shell程序
- 日常需要自己编写一些简单的shell程序来管理集群配置、提高开发效率
Shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDGhR5Gc-1606198088921)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\1605495037542.png)]
通过上图说明:
- 外层应用程序发布指令
cd
`ls`等 shell
接收到指令并解析后调用系统内核- 通过内核控制硬件
shell还是一个功能相当强大的编程语言,易编写、易调试、灵活性强。
解析器
- 通过命令:
sudo cat /etc/shells
可以查看shell的解析器,包括下面得到几种/bin/sh
(常用)/bin/bash
(常用)/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
- bash和sh的关系
cd /bin
ll | grep bash
##############################################################
-rwxr-xr-x 1 root root 6964 4月 1 2020 bashbug-64
lrwxrwxrwx 1 root root 4 6月 28 18:08 sh -> bash
###############################################################
可以看出,这是一个软连接,其实还是使用的bash
- 查看默认的解析器:
CentOS
默认使用:/bin/bash
echo $SHELL
######################
/bin/bash
######################
脚本入门
1)脚本格式
脚本以#!/bin.bash
开头(指定解析器)
2)第一个实例:输出hellword
touch helloword.sh
vim helloword.sh
#####################
#!/bin/bash
echo "helloword"
#####################
3)执行脚本
-
采用
bash
/sh
+ 脚本的相对[绝对]路径,此方式不需要赋予脚本+x
权限sh helloword.sh bash helloword.sh
-
采用**./脚本路径**方式执行,需要脚本具有可执行权限
chmod 777 helloword.sh #赋予脚本可执行权限 ./helloword.sh ./home/helloword.sh
4)第二个脚本:多命令处理
touch batch.sh
vim batch.sh
############################
#!/bin/bash
cd /home/data
touch batch.txt
echo "batch cmd" >>batch.txt
############################