diff --git a/Shell-MD/初始shell.md b/Shell-MD/初始shell.md
new file mode 100644
index 0000000..9480b9f
--- /dev/null
+++ b/Shell-MD/初始shell.md
@@ -0,0 +1,289 @@
+
初始Shell
+
+作者:行癫(盗版必究)
+
+------
+
+## 一:Shell概述
+
+#### 1.计算机编程语言
+
+ 计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言
+
+阶段:
+
+ 机器语言
+
+ 机器语言是用二进制代码表示的、计算机能直接识别和执行的一种机器指令的集合,第一代计算机语言
+
+ 汇编语言
+
+ 用与代码指令实际含义相近的英文缩写词、字母和数字等符号来取代指令代码
+
+ 高级语言
+
+ 自然语言相近并为计算机所接受和执行的计算机语言称高级语言;独立于机器面向过程或对象的语言
+
+分类:
+
+ 命令式语言
+
+ C、C++、Basic、Ada、Java、C#、Shell、Python等,各种脚本语言也被看作是此种类型
+
+ 函数式语言
+
+ 基于数学函数概念的值映射的λ算子可计算模型;Lisp、Haskell、ML、Scheme 、F#等
+
+ 逻辑式语言
+
+ 基于一组已知规则的形式逻辑系统;最著名的逻辑式语言是 Prolog
+
+ 面向对象语言
+
+ 现代语言中的大多数都提供面向对象的支持,纯面向对象语言是 Smalltalk
+
+编译型和解释型语言:
+
+ 解释型
+
+ 解释性语言编写的程序不进行预先编译,以文本方式存储程序代码
+
+ 执行时才翻译执行
+
+ 程序每执行一次就要翻译一遍
+
+ 代表语言:python,JavaScript,Shell等
+
+ 优缺点:跨平台能力强,易于调,执行速度慢
+
+
+
+ 编译型
+
+ 编译型语言在执行之前要先经过编译过程,编译成为一个可执行的机器语言的文件
+
+ 因为翻译只做一遍,以后都不需要翻译,所以执行效率高
+
+ 典型代表:C语言,C++
+
+ 优缺点:执行效率高,缺点是跨平台能力弱,不便调试
+
+#### 2.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)
+
+ 自动化扩容(增加云主机——>业务上线)
+
+ Shell可以做任何事(一切取决于业务需求)
+
+#### 3.shell定义
+
+ Shell 是命令解释器,用于与操作系统交互,用来完成各种任务,如文件操作、系统管理、网络管理等
+
+ Shell 是一种程序设计语言,他有变量,有自己的语法结构等,shell程序设计语言可以编写功能很强、代码简短的程序
+
+#### 4.获取当前支持的Shell
+
+```shell
+[root@xingdiancloud ~]# cat /etc/shells
+/bin/sh
+/bin/bash
+/usr/bin/sh
+/usr/bin/bash
+/bin/tcsh
+/bin/csh
+[root@xingdiancloud ~]# chsh -l
+/bin/sh
+/bin/bash
+/usr/bin/sh
+/usr/bin/bash
+/bin/tcsh
+/bin/csh
+```
+
+ strem9:
+
+```shell
+[root@xingdiancloud ~]# cat /etc/shells
+/bin/sh
+/bin/bash
+/usr/bin/sh
+/usr/bin/bash
+```
+
+## 二.GUN Bash特性
+
+#### 1.命令和文件自动补齐
+
+ 下载bash-completion 补全工具
+
+```shell
+[root@xingdiancloud ~]# yum install bash-completion -y
+```
+
+#### 2.命令历史记忆功能
+
+ 上下键调用历史命令
+
+ 获取历史命令的命令:history
+
+ 获取某一条历史命令:!number 直接执行对应序号的命令
+
+ 快捷键调用历史命令:Ctrl+r 输入关键字调出之前的命令
+
+#### 3.快捷键
+
+ Ctrl+a 切换到命令行开始
+
+ Ctrl+e 切换到命令行末尾
+
+ Ctrl+u 清除剪切光标之前的内容
+
+ Ctrl+k 清除剪切光标之后的内容
+
+ Ctrl+y 粘贴刚才锁删除的字符
+
+ Ctrl+左右键 快速移动光标
+
+#### 4.前后台作业控制
+
+ &:后台运行
+
+ nohup:正在运行一个进程,退出帐户时该进程不会结束
+
+ ^C:终止
+
+ ^Z:暂停
+
+ jobs:查看后台进行
+
+ bg %工作号:将一个在后台暂停的命令,变成继续执行
+
+ fg %工作号:将后台中的命令调至前台继续运行
+
+案例:
+
+```shell
+[root@xingdiancloud ~]# sleep 1000 &
+[1] 7761
+[root@xingdiancloud ~]# jobs
+[1]+ Running sleep 1000 &
+[root@xingdiancloud ~]# jobs
+[1]+ Running sleep 1000 &
+[root@xingdiancloud ~]# kill -19 %1
+
+[1]+ Stopped sleep 1000
+[root@xingdiancloud ~]# jobs
+[1]+ Stopped sleep 1000
+[root@xingdiancloud ~]# bg %1
+[1]+ sleep 1000 &
+```
+
+#### 5.输入输出重定向
+
+```shell
+0,1,2 > >> 2> 2>> 2>&1 &> cat < /etc/hosts cat < /proc/self/fd/2
+lrwxrwxrwx 1 root root 15 Sep 1 2015 /dev/stdin -> /proc/self/fd/0
+lrwxrwxrwx 1 root root 15 Sep 1 2015 /dev/stdout -> /proc/self/fd/1
+```
+
+#### 6.管道
+
+```shell
+[root@xingdiancloud ~]# ip addr |grep 'inet ' |grep eth0
+[root@xingdiancloud ~]# ip addr |grep 'inet ' |tee test |grep eth0 覆盖
+[root@xingdiancloud ~]# ip addr |grep 'inet ' |tee -a test |grep eth0 -a 追加
+```
+
+#### 7.命令排序
+
+ ; 无论前面是否执行成功,分号后的命令都会继续执行
+
+ && 前面执行成功,后面的才继续执行
+
+ || 前面命令不成功,后面的命令也会继续
+
+```shell
+[root@xingdiancloud ~]# ./configure && make && make install (命令返回值 echo $?)
+[root@xingdiancloud ~]# mkdir /var/111/222/333 && echo ok
+[root@xingdiancloud ~]# mkdir -p /var/111/222/333 && echo ok
+[root@xingdiancloud ~]# ls /home/111/222/333/444 || mkdir -p /home/111/222/333/444
+```
+
+#### 8.shell通配符
+
+ * 匹配任意多个字符 ls in*
+
+ ? 匹配任意一个字符 ll l?ve
+
+ [] 匹配括号中任意一个字符 [a-z]
+
+ () 在子shell中执行 (umask 077; touch file1000)
+
+ {} 集合 touch file{1..9}
+
+ \ 转义符,让元字符回归本意
+
+```shell
+[root@xingdiancloud ~]# echo *
+[root@xingdiancloud ~]# echo \*
+[root@xingdiancloud ~]# touch xing\ dian
+```
+
+## 三:编写脚本
+
+ 创建bash脚本: 以.sh结尾的文件 .py结尾的文件是python的脚本
+
+#### 1.创建脚本文件
+
+```shell
+#!/bin/bash #!/usr/bin/env bash
+指定命令解释器:第一行的专门解释命令解释器
+注释 :以#开有的都不生效
+编写bash指令集合
+```
+
+```shell
+#!/bin/bash
+#注释
+#author:blackmed
+#version:0.1
+#功能
+```
+
+#### 2.修改权限
+
+ 注意:改不改权限都可以执行
+
+```shell
+[root@xingdiancloud ~]#./scripts
+[root@xingdiancloud ~]#/shelldoc/scripts
+[root@xingdiancloud ~]#bash scripts
+```
+
+## 四:脚本调试
+
+ sh –x script 这将执行该脚本并显示所有变量的值
+
+ sh –n script 不执行脚本只是检查语法模式,将返回所有错误语法
+
+ sh –v script 执行脚本前把脚本内容显示在屏幕上
diff --git a/Shell-MD/流程控制.md b/Shell-MD/流程控制.md
new file mode 100644
index 0000000..94e4309
--- /dev/null
+++ b/Shell-MD/流程控制.md
@@ -0,0 +1,550 @@
+流程控制
+
+作者:行癫(盗版必究)
+
+------
+
+## 一:条件测试
+
+#### 1.语法格式
+
+```shell
+格式1: test 条件表达式
+格式2: [ 条件表达式 ]
+格式3: [[ 条件表达式 ]]
+```
+
+#### 2.文件测试
+
+```shell
+[ -e dir|file ]
+[ -d dir ]
+[ -f file ] 是否存在,而且是文件
+[ -r file ] 当前用户对该文件是否有读权限
+[ -x file ]
+[ -w file ]
+```
+
+案例
+
+```shell
+[root@xingdian ~]# test -d /home
+[root@xingdian ~]# echo $?
+0
+[root@xingdian ~]# test -d /home11111
+[root@xingdian ~]# echo $?
+1
+[root@xingdian ~]# [ -d /home ]
+[root@xingdian ~]# [ ! -d /ccc ] && mkdir /ccc
+[root@xingdian ~]# [ -d /ccc ] || mkdir /ccc
+```
+
+#### 3.数值比较
+
+```shell
+[ 1 -gt 10 ] 大于
+[ 1 -lt 10 ] 小于
+[ 1 -eq 10 ] 等于
+[ 1 -ne 10 ] 不等于
+[ 1 -ge 10 ] 大于等于
+[ 1 -le 10 ] 小于等于
+```
+
+案例
+
+```shell
+[root@xingdian ~]# disk_use=$(df -P |grep '/$' |awk '{print $5}' |awk -F% '{print $1}')
+[root@xingdian ~]# [ $disk_use -gt 90 ] && echo "war......"
+[root@xingdian ~]# [ $disk_use -gt 60 ] && echo "war......"
+```
+
+```shell
+[root@xingdian ~]# [ $(id -u) -eq 0 ] && echo "当前是超级用户"
+当前是超级用户
+[alice@xingdian ~]$ [ $UID -eq 0 ] && echo "当前是超级用户" || echo "you不是超级用户"
+you不是超级用户
+```
+
+#### 4.字符串比较
+
+```shell
+提示:使用双引号
+[root@xingdian ~]# [ "$USER" = "root" ];echo $?
+0
+[root@xingdian ~]# [ "$USER" == "root" ];echo $?
+0
+```
+
+注意:
+
+```shell
+"":弱引用,可以实现变量和命令的替换
+[root@xingdian ~]# x=*
+[root@xingdian ~]# echo "$x"
+*
+'':强引用,不完成变量替换
+[root@xingdian ~]# x=*
+[root@xingdian ~]# echo '$x'
+ $x
+```
+
+#### 5.扩展
+
+```shell
+[root@xingdian ~]# var1=111
+[root@xingdian ~]# var2=
+[root@xingdian ~]# //var3变量没有定义
+[root@xingdian ~]# echo ${#var1} #显示变量中字符串的个数
+3
+[root@xingdian ~]# echo ${#var2}
+0
+[root@xingdian ~]# echo ${#var3}
+0
+[root@xingdian ~]# [ -z "$var1" ];echo $? //-z 变量字符串为空
+1
+[root@xingdian ~]# [ -z "$var2" ];echo $?
+0
+[root@xingdian ~]# [ -z "$var3" ];echo $?
+0
+[root@xingdian ~]# [ -n "$var1" ];echo $? //-n 变量字符串不为空
+0
+[root@xingdian ~]# [ -n "$var2" ];echo $?
+1
+[root@xingdian ~]# [ -n "$var3" ];echo $?
+1
+```
+
+案例:
+
+```shell
+[root@xingdian ~]# [ "$USER" = "root" ];echo $?
+0
+[root@xingdian ~]# [ "$USER" = "alice" ];echo $?
+1
+[root@xingdian ~]# [ "$USER" != "alice" ];echo $?
+0
+[root@xingdian ~]# [ 1 -lt 2 -a 5 -gt 10 ];echo $?
+1
+[root@xingdian ~]# [ 1 -lt 2 -o 5 -gt 10 ];echo $?
+0
+[root@xingdian ~]# [[ 1 -lt 2 && 5 -gt 10 ]];echo $?
+1
+[root@xingdian ~]# [[ 1 -lt 2 || 5 -gt 10 ]];echo $?
+0
+[root@xingdian ~]# [ "$USER" = "root" ];echo $?
+0
+```
+
+## 二:条件判断
+
+#### 1.流程控制
+
+ 在一个shell脚本中的命令执行顺序称作脚本的流;大多数脚本会根据一个或多个条件来改变它们的流
+
+ 流控制命令:能让脚本的流根据条件而改变的命令称为条件流控制命令
+
+ exit语句:退出程序的执行,并返回一个返回码,返回码为0正常退出,非0为非正常退出
+
+ 条件判断:if代码返回0表示真,非0为假
+
+#### 2.语法结构
+
+单分支结构
+
+```shell
+if 条件测试
+then 命令序列
+fi
+```
+
+双分支结构
+
+```shell
+if 条件测试
+then 命令序列
+else 命令序列
+fi
+```
+
+多分支结构
+
+```shell
+if 条件测试1
+then 命令序列
+
+[elif 条件测试2
+then 命令序列
+
+elif 条件测试3
+then 命令序列]...
+
+else 命令序列
+fi
+```
+
+案例
+
+```shell
+if [ "$USER" = "root" ]
+ then
+ if [ $UID -eq 0 ]
+ then
+ echo "the user is root"
+ fi
+
+ elif
+ echo "……"
+ elif
+ echo "……"
+ else
+ echo "the user is not root"
+ echo "正在给用户授权"
+
+fi
+```
+
+## 三:循环结构
+
+#### 1.for循环
+
+##### 语法结构
+
+```shell
+for i in (取值) 范围{1..20} zhangsan lisi wanger mazi ${array[*]}
+for 变量名 [ in 取值列表 ]
+do
+ 循环体
+done
+```
+
+##### 案例一
+
+```shell
+#!/bin/bash
+# ping主机测试
+for i in {70..100}
+do
+ ping -c1 10.30.161.$i &> /dev/null
+ if [ $? -eq 0 ]
+ then
+ echo "10.30.161.$i is up" |tee -a ipup.txt
+ else
+ echo "10.30.161.$i is down" |tee -a ipdown.txt
+ fi
+
+done
+```
+
+##### 案例二
+
+```shell
+#!/usr/bin/env bash
+#批量添加账户
+for i in {30..40}
+do
+ useradd user$i && echo "123" | passwd --stdin user$i &>/dev/null
+ if [ $? -eq 0 ];then
+ echo "账户 user$i 添加成功"
+ else
+ echo "账户 user$i 添加失败"
+ fi
+done
+```
+
+##### 案例三
+
+```shell
+#!/usr/bin/env bash
+#批量删除账户
+for i in {20..30}
+do
+userdel -r user$i &>/dev/null
+[ $? -eq 0 ] && echo "账户 user$i 删除成功" || echo "账户 user$i 删除失败"
+done
+```
+
+#### 2.while循环
+
+ 不断重复的执行循环体中的语句,直到某个条件成立
+
+ 循环次数不一定是固定的
+
+##### 语法结构
+
+ 当条件测试成立(条件测试为真),执行循环体
+
+```
+while 条件测试
+do
+ 循环体
+done
+```
+
+##### 案例
+
+```shell
+echo "please enter a number between 5 and 10 :"
+read var
+while [[ $var != 0 ]]
+do
+
+ if [ "$var" -lt 5 ]
+ then
+ echo "Too smail , Try again"
+ read var
+ elif [ "$var" -gt 10 ]
+ then
+ echo "Too big , Try again"
+ read var
+ else
+ echo "Congratulation! You are right."
+ exit 0;
+ fi
+done
+```
+
+#### 3.until循环
+
+ 当条件测试成立(条件测试为假),执行循环体
+
+##### 语法结构
+
+```shell
+until 条件测试
+do
+ 循环体
+done
+```
+
+##### 案例
+
+```shell
+#!/bin/bash
+i=1
+until [ "$i" -eq 21 ]
+do
+ userdel -r user$i
+ let i++
+done
+```
+
+## 四:匹配模式
+
+#### 1.语法模式
+
+```shell
+read -p "请输入你的选项:" num
+case num in
+1) 选项
+ 命令序列1 命令/if语句/for循环……
+ ;;
+模式2)
+ 命令序列2
+ ;;
+模式3)
+ 命令序列3
+ ;;
+*)
+ 无匹配后命令序列
+esac
+```
+
+##### 案例一
+
+ 确定要继续删除吗 yes/no: " yes
+
+##### 案例二
+
+ 系统管理工具箱
+
+```shell
+Command action
+ h 显示命令帮助
+ f 显示磁盘分区
+ d 显示磁盘挂载
+ m 查看内存使用
+ u 查看系统负载
+ q 退出程序
+Command (h for help): m
+ total used free shared buffers cached
+Mem: 7628 840 6788 0 29 378
+Swap: 2047 0 2047
+```
+
+#### 2.工具箱
+
+```shell
+#!/usr/bin/env bash
+
+cat <<-EOF
++-------------------------------------------------------------------------+
+| System_tools V1.0 |
++-------------------------------------------------------------------------+
+| a. Stop And Disabled Firewalld. |
+| b. Disabled SELinux Secure System. |
+| c. Install Apache Service. |
+| d. Quit |
++-------------------------------------------------------------------------+
+EOF
+printf "\e[1;31m Please input your select: \e[0m" && read var
+
+case "$var" in
+ "a")
+ systemctl stop firewalld && systemctl disable firewalld
+ ;;
+ "b")
+ sed -ri s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
+ ;;
+ "c")
+ yum -y install httpd httpd-tools
+ ;;
+ "d")
+ exit
+ ;;
+ *)
+ printf "请按照上方提供的选项输入!!!\n"
+ ;;
+esac
+```
+
+## 五:循环控制
+
+#### 1.break
+
+ 关键字用于跳出循环,执行循环后面的语句
+
+案例
+
+```shell
+for i in {1..10}
+do
+ if [ $i -eq 5 ]
+ then
+ break
+ fi
+ echo $i
+done
+# 输出结果为:
+# 1
+# 2
+# 3
+# 4
+```
+
+#### 2.continue
+
+ 跳过当前循环中的剩余语句,直接进入下一次循环
+
+案例
+
+```shell
+for i in {1..10}
+do
+ if [ $i -eq 5 ]
+ then
+ continue
+ fi
+ echo $i
+done
+# 输出结果为:
+# 1
+# 2
+# 3
+# 4
+# 6
+# 7
+# 8
+# 9
+# 10
+```
+
+#### 3.sleep
+
+ sleep 10 等待10秒,再继续下一操作
+
+## 六:格式化打印
+
+ printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等
+
+#### 1.语法格式
+
+```shell
+[root@xingdiancloud ~]# printf format-string [arguments...]
+• format-string: 为格式控制字符串
+• arguments: 为参数列表
+```
+
+```shell
+[root@xingdiancloud ~]# echo "Hello, Shell"
+Hello, Shell
+
+[root@xingdiancloud ~]# printf "Hello, Shell"
+
+[root@xingdiancloud ~]# printf "Hello, Shell\n"
+Hello, Shell
+```
+
+#### 2.案例
+
+```shell
+#!/bin/bash
+printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
+printf "%-10s %-8s %-4.2f\n" 张三 男 66.1234
+printf "%-10s %-8s %-4.2f\n" 李四 男 48.6543
+printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
+```
+
+#### 3.参数解释
+
+%s 字符串
+
+%f 小数
+
+%d 数字
+
+%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐)
+
+%-4.2f 指格式化为小数,其中.2指保留2位小数
+
+\f 换页
+
+\n 换行
+
+\r 回车
+
+## 七:颜色
+
+ shell脚本中echo显示内容带颜色显示,需要使用到-e参数
+
+#### 1.语法格式
+
+```shell
+格式1:echo -e "\033[背景颜色;字体颜色m 要输出的字符 \033[0m"
+格式2:echo -e "\e[背景颜色;字体颜色m 要输出的字符 \e[0m"
+```
+
+#### 2.案例
+
+```shell
+echo -e “\033[30m 黑色字 \033[0m”
+echo -e “\033[31m 红色字 \033[0m”
+echo -e “\033[32m 绿色字 \033[0m”
+echo -e “\033[33m 黄色字 \033[0m”
+echo -e “\033[34m 蓝色字 \033[0m”
+echo -e “\033[35m 紫色字 \033[0m”
+echo -e “\033[36m 天蓝字 \033[0m”
+echo -e “\033[37m 白色字 \033[0m”
+echo -e “\033[40;37m 黑底白字 \033[0m”
+echo -e “\033[41;37m 红底白字 \033[0m”
+echo -e “\033[42;37m 绿底白字 \033[0m”
+echo -e “\033[43;37m 黄底白字 \033[0m”
+echo -e “\033[44;37m 蓝底白字 \033[0m”
+echo -e “\033[45;37m 紫底白字 \033[0m”
+echo -e “\033[46;37m 天蓝底白字 \033[0m”
+echo -e “\033[47;30m 白底黑字 \033[0m”
+
+控制选项:
+\033[0m:关闭所有属性
+\033[1m:高亮显示,加粗
+\033[5m:闪烁
+```