• 简单介绍shell


    1. 为什么学习Shell
    1)减少重复性工作
    2)减少出错
    3)批量管理服务器
    4)提高工作效率
    5)懒
    6)安装系统
    7)初始化操作(优化SSHD、禁止开机服务启动、安装基础软件,iptables,selinux等等)
    8)安装服务、LNMP LAMP (nginx、PHP、MySQL、Tomcat、Keepalived、NFS、Rsync、Zabbix、redis等等)
    9)服务的配置和启动,Python服务启停方式 python3.5 test.py IP 域名
    10)代码上线
    11)监控(框架、端口、进程、流量 cacti)
    12)日志切割、日志分析(三剑客 grep sed awk)、安全(ELK)
    2. 学习Shell需要的基础知识
    1) 熟练掌握基础命令
    2)编程思维
    3)熟练掌握VIM
    4)三剑客sed grep awk *****

    3. 如何学好Shell(包含了哪些东西)
    1)环境变量
    2)条件表达式
    3)if判断语句
    4)for循环语句
    5)while循环语句
    6)case语句
    7)循环控制命令 continue break exit
    8)读懂编程-框架-思考-自己练习-总结-编程思路(积累)
    注意事项:不能拿别人的来用

    二、初步认识Shell
    1. 什么是Shell
    1)Shell是命令解释器、解释我们输入的命令和程序
    2)Shell交互式模式 Shell等待我们的输入、会执行我们的命令反馈结果
    3)Shell非交互模式 Shell不与我们交互、直接读取我们文件内或程序内的命令
    2. 什么是Shell脚本
    1)就是把Shell可执行命令放入文件里,条件表达式、判断循环等等
    3. 创建Shell脚本(规范)
    1)路径统一(自动化)(log存放的位置、程序安装位置)
    /server/scripts/
    2)开头写解释器注释
    顶头写注释#!/bin/bash,不能写在后面,下面的注释是不执行,是给我们看的,注释还可以写在命令行的后面与命令同行
    3)脚本名以.sh结尾
    4)脚本内写作者版本
    #Version V1.0
    #Author Lizhenya
    #Create Time 2018-11-05
    #QQ:5555555
    #count

    5)每个段的注释
    6)注释尽量不用中文
    7)成对的符号要一次性书写
    8)循环语句一次性书写完毕
    三、环境变量
    1.什么是环境变量
    1)x=1 y=x+10 y=? x 变量 等号是赋值 等号右边的变量的值
    2)等号后面一堆的内容,用一个名字来代替叫做变量
    3)环境变量以生存周期来分类
    1. 临时性环境变量 export,关闭shell、变量失效
    export lizhenya=test
    echo $lizhenya
    exit
    echo $lizhenya
    2. 永久环境变量 需要更改配置文件/etc/profile、永久生效
    4)环境变量生效的顺序
    1. /etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc

    2.定义环境变量
    1) 变量名字的写法 字母 数字 下划线的组合,尽量以字母开头、不能以数字开头,等号两边不能有空格,名字的写法
    1. lizhenya=test
    2. LizhenYa=test 大驼峰语法
    3. lizhenYa=test 小驼峰语法

    3.环境变量三种定义方式
    1)数字变量如何定义 lizhenya=123 # 数字必须是连续的
    2)字符串变量如何定义 lizhenya="I am lizhenya teacher" # 默认就加双引号
    lizhenya='I am lizhenya teacher' # 所见即所得、定义什么值输出什么值
    [root@m01 ~]# lizhenya=I am lizhenya
    -bash: am: 未找到命令
    [root@m01 ~]# lizhenya="I am lizhenya"
    [root@m01 ~]# echo $lizhenya
    I am lizhenya

    3)命令变量如何定义 lizhenya=`date` # 反引号 解析命令

    4.Shell特殊位置环境变量
    $0 # 脚本名称、如果你的脚本全路径执行,带全路径脚本名
    $n # 代表了传参的参数 $0 脚本名称,大于9的数字用{10}括起来
    $# # 代表了脚本所有传参的个数
    $* # 脚本中所有传参的参数,不加双引号和$@一样,加了双引号把所有的参数作为一个整体输出
    $@ # 脚本中所有传参的参数,不加双引号和$*一样,加了双引号把传参的参数作为单个字符串输出
    set -- "I am" lizhenya teacher
    [root@m01 ~]# for i in "$*";do echo $i;done
    I am lizhenya teacher
    [root@m01 ~]# for i in "$@";do echo $i;done
    I am
    lizhenya
    teacher
    -------
    $* 为 “1 2 3”(一起被引号包住)
    $@ 为 “1” “2” “3” (分别被包住)
    $? # 代表了上一次命令执行的结果,0为成功,非零为失败
    $$ # 获取当前脚本的PID
    $! # 获取上一个脚本的PID
    5.变量子串
    1. # # 获取字符串的长度
    [root@m01 ~]# echo ${#oldboy}
    2. : # 字符串切片
    3. 扩展题:如何取字符串的长度?
    1.echo ${#oldboy}
    2.echo $oldboy|wc -L
    3.expr length "${oldboy}"
    4.echo $oldboy|awk '{print length($0)}'
    4. 取小于3的字符串

  • 相关阅读:
    以太网数据帧最小64字节
    网络基础协议之ARP
    Windows FAT32转换NTFS
    Java面试红宝书(尼恩编著)
    死磕设计模式1:Builder (构建者模式)
    Zookeeper 分布式锁 (图解+秒懂+史上最全)
    TCP/IP协议 (图解+秒懂+史上最全)
    Java高并发核心编程(卷2):多线程、锁、JMM、JUC、高并发设计模式
    Java高并发核心编程(卷1):NIO、Netty、Redis、ZooKeeper
    ThreadLocal(史上最全)
  • 原文地址:https://www.cnblogs.com/fangdecheng/p/9915374.html
Copyright © 2020-2023  润新知