001 初识shell
第一节 shell
一、shell的含义
首先shell的英文含义是“壳”;它是相对于内核来说的,因为它是建立在内核的基础上,面向于用户 的一种表现形式,比如我们看到一个核桃,见到的是它的壳,而非核。Linux中的Shell,是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息。
二、shell能做什么?
- 自动批量系统初始化程序 (update,软件安装,时区设置,安全策略…)
- 自动化批量软件部署程序 (LAMP,LNMP,Tomcat,LVS,Nginx)
- 应用管理程序 (KVM,集群管理扩容,MySQL,DELLR720批量RAID)
- 日志分析处理程序(PV, UV, 200, !200, top 100, grep/awk)
- 自动化备份恢复程序(MySQL完全备份/增量 + Crond)
- 自动化管理程序(批量远程修改密码,软件升级,配置更新)
- 自动化信息采集及监控程序(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP -Status,Apache,MySQL)
- 配合Zabbix信息采集(收集系统/应用状态信息,CPU,Mem,Disk,Net,TCP Status,Apache,MySQL)
- 自动化扩容(增加云主机——>业务上线)
zabbix监控CPU 80%+|-50% Python API AWS/EC2(增加/删除云主机) + Shell S-cript(业务上线) - 俄罗斯方块,打印三角形,打印圣诞树,打印五角星,运行小火车,坦克大战,排序算法实现
- Shell可以做任何事(一切取决于业务需求)
第二节 bash
一、bash的特性
1.命令和文件自动补齐
Linux命令自动补全需要安装bash-completion
[root@lwb~]#yum -y install bash-completion*
退出终端等待一会即可使用
2.快捷键
Ctrl+u | 删除或剪切光标之前的命令 |
---|---|
Ctrl+k | 删除或剪切光标之后的命令 |
3.前后台作业控制
几个常见的作业命令
- command & 直接让作业进入后台运行
- jobs 查看后台作业状态
- fg %n 让后台运行的作业n切换到前台来
- kill %n 移除指定作业n
4.作业脱机管理
- 主要针对终端异常断开的情形
- 使用nohup命令来执行job,终端在脱机或注销之后,job依旧可以继续运行。
- 使用nohup后,原job的输出会自动被nohup重定向到缺省的nohup.out日志文件。
- 日志文件可以指定,如下:
[root@lwb ~]#nohup ./a.sh >a.log 2>&1 &
第三节 Shell变量
一、变量类型
1、自定义变量
- 定义变量:如 a=1
- 引用变量:如 $a
- 取消变量:如 unset a
- 作用范围:仅在当前shell中有效
2、环境变量
- 定义环境变量:export a #将a从自定义变量转换为环境变量
- 引用,取消环境变量同上
- 作用范围:在全局中有效
3、位置变量
- 在启动程序的同时给它赋予变量。
4、预定义变量
- $0 脚本名(自己本身)
- $* 代表命令行中所有的参数(把所有的参数当做一个整体)
- $@ 代表命令行中的所有参数(把每个参数区分对待)
- $# 代表命令行中所有参数的个数
- $? 代表上个命令的返回码
- $$ 当前进程的pid
- $! 上一个进程的pid
二、输入、输出语句
1.输入语句
read -p "请输入" a #a为变量值
# read参数
# -p 提示语句
# -n 字符个数
# -t 计时器
# -s 不回显
2.输出语句
echo "输入的值为$a"
# -n 不换行