Shell脚本入门

前言

本专栏是博主在B站自学Shell编程的笔记,由于不想把笔记保存在电脑里占硬盘的空间,所以挂到了CSDN服务器上,仅供个人使用,大家要是感兴趣也可以学习。

这是博主在B站自学的视频链接:【千锋Linux】Shell脚本入门全套教程_哔哩哔哩_bilibili

Shell概述

功能:

1.自动化系统初始化程序(例如:update,软件安装,时区设置,安全策略...)

2.自动化批量软件部署程序(LAMP,LNMP,Tomcat,LVS,Nginx)

3.管理应用程序(KVM,集群管理扩容,MySQL的升级部署,备份等,DELLR720批量RAID)

4.日志分析处理程序(PV(打印出网站的访问量),UV(点击量),200(访问时200的有多少条),!200,top100(访问网站最多的IP前100个),grep/awk)

5.自动化备份恢复程序(MySQL完全备份(无论是周一还是周二都是全部备份,周2包含周1的)/增量备份(周2的不包含周1的,只是周2增加的)+Crond(定时规划))

6.自动化管理程序(批量远程修改密码,软件升级,配置更新)

7.自动化信息采集及监控程序(收集系统/应用状态信息,CPU,内存,磁盘,网络,apache和mysql的健康状态,TCP状态(ss -tunlp))  #会实现实时的网络流量,网络开销,磁盘负载和使用情况,CPU的负载,内存的使用情况,以及TCP各种状态的情况和apache,mysql健康状态的情况

8.配合Zabbix信息采集(收集系统/应用状态信息,CPU,内存,磁盘,网络,apache和mysql的健康状态,TCP状态)

9.自动化扩容(增加云主机→业务上线)  zabbix监控CPU 80% + Python API AWS/EC2 (增加/删除云主机) + Shell Script(业务上线)

10.俄罗斯方块,打印三角形,打印圣诞树,打印五角星....

11.Shell可以做任何事(一切取决于业务需求)


Shell与其他编程语言的对比

C       ------编译 -------二进制机器码 (CPU  CPU架构: x86复杂指令集,Power精简指令集,APM)

java   --------编译 -------字节码(Java虚拟机 JDK)  Tomcat/Hadoop用java开发的

Shell  --------解释   /usr/bin/bash

Python -------解释  /usr/bin/python

            --------编译  -------字节码(Python虚拟机)

程序是由哪些组成:逻辑+数据

Bash中调用python没听懂,隔一段时间再来听吧

bash  shell

Shell是什么: 就是命令解释器

什么是shell命令: 就是能够在shell下执行的命令

红色和蓝色的都是在进Shell之后执行的,而黄色的是在离开Shell执行的 


GNU/bash shell特点

1.命令和文件自动补齐

2.命令历史记忆功能  上下键,!number, !string, !$(上一个命令最后的参数), !!(上一个命令), ^R

3.别名功能  alias(查看别名), unalias cp(取消别名), ~username/.bashrc, cp -rf /etc/hosts

4.快捷键: ^R(搜索一个历史命令), ^D(退出), ^A(将光标移到命令的首位), ^E(将光标移到命令的末位), ^L, ^U(删除光标前面的), ^K(删除光标后面的), ^S(锁屏), ^Q(解锁)

5.前后台作业控制 &(后台),nohup, ^C, ^Z(暂停), bg%1, fg%1(调回), kill%3,screen

6.输入输出重定向 0,1,2  >(输出重定向覆盖)   >>(输出重定向追加)  2>(错误输出)  2>>(追加)  2>&1(描述符为2的内容重定向到1)  &>     cat  < /etc/hosts   cat << EOF  cat>file1 <<EOF

7. 管道 |  tree

8.命令排序

       ;           不具备逻辑判断

       cd; eject

       &&  ||      具备逻辑判断

注意:

        command &        后台执行

        command &> /dev/null     混合重定向(标准输出1,错误输出2)

        command1 && command2    命令排序,逻辑判断


   9.Shell通配符(元字符) 表示的不是本意

问号不常用,其他需要记 


小知识:

echo  输出带颜色文本

printf  格式化输出文本

Shell 变量

Shell变量?用一个特定的字符串去表示不固定的内容

变量的类型:

     1.自定义变量

         定义变量:  变量名=变量值  变量名必须以字母或下划线开头,区分大小写  

         引用变量:  $变量名 或${变量名}

         查看变量:  echo $变量名  set(所有变量: 包括自定义变量和环境变量)

         取消变量:  unset 变量名

         作用范围:  仅在当前shell中有效   ----相当于python中的局部变量

      2.环境变量

         定义环境变量:  方法一 export  back_dir2=/home/backup

                                  方法二 export back_dir1 将自定义变量转换成环境变量

         引用环境变量:  $变量名 或 ${变量名}

         查看环境变量:  echo $变量名    env 例如env  |  grep back_dir2

         取消环境变量:  unset  变量名

         变量作用范围:  在当前shell和子shell有效   -----相当于python中的全局变量

         ====================================================== 

         C语言   局部变量          vs         全局变量

         SHELL  自定义变量       vs         环境变量

         这张图告诉我们可以创建一个存储公共变量的脚本文件,然后再在其余子脚本文件中执行这个脚本文件,也就是如图public.sh和1.sh在当前shell,所以没必要创建环境变量。环境变量只是在系统中用的多一点


         3.位置变量

             $1  $2  $3  $4  $5  $6  $7  $8  $9  ${10}

         4.预定义变量

             $0   脚本名

             $*   所有的参数

             $@  所有的参数

             $#   参数的个数

             $$   当前进程的PID

             $!    上一个后台进程的PID

             $?   上一个命令的返回值0表示成功


变量的赋值方式:

             1.显示赋值

                变量名=变量值

                示例:

                ip=192.168.1.251

                school="Beijing 1000phone"

                today1='date +%F'

                today2=$(date +%F)

             2.read 从键盘读入变量值

                read 变量名

                read  -p  ”提示信息:”  变量名

                read  -t 5  -p "提示信息:" 变量名

                read  -n  2  变量名

变量的运算 

           法二和法四用的最多

         

变量内容的删除 替换 替代                       

 

Shell条件测试

什么是条件测试: 判断某一个对象是不是成立的

文件测试: 主要用于测试文件是不是一个常规文件,设备文件 ,链接文件,管道文件,是否有执行权限,写权限,甚至测试文件是否存在

 

 

   

       

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>