美文网首页
自动化运维快速学习笔记(一)

自动化运维快速学习笔记(一)

作者: python小智 | 来源:发表于2018-12-07 19:59 被阅读0次

    自动化运维

    一天半---》shell语法  运行机制  常见应用

    一天半---》实现一个代码发布的案例

    1 shell

    1运维简介:

    除了功能开发之外的所有活动都跟运维有关

    2 自动化运维:

    自动化实现运维活动

    一般用shell脚本实现自动化

    3 shell就是命令解释

    位于应用程序和操作系统之间

    4 shell分类:

    一般而言:shell就是命令行shell(linux下shell(bash))

    5 查看当前系统shell版本

    echo $SHELL

    6 查看系统兼容性支持的shell类型们:

    cat /etc/shells

    7 shell脚本:

    命令放到文件中执行,该文件称为shell脚本

    8 脚本创建

    1 用记事本写(要求用vim)

    2 脚本命名:1 名称有意义 2 .sh结尾

    3 脚本内容:首行要指定脚本解释器

    4 注释:单行注释和python一样,多行注释::<<字符 ... 字符(将注释内容重定向到啥都不干)

    9 脚本执行

    1 bash 脚本名(启动子shell,在子shell中执行脚本内命令)

    2 ./脚本名 (启动子shell(名字叫脚本名), 在子shell中执行脚本内命令)

    3 source 脚本名(类似python import 模块) (直接在当前shell内执行脚本内命令)

    10 开发规范

    1 不要用中文注释

    2 成对内容一次性写

    3 适当缩进(仿照python风格)

    11 变量定义

    普通变量

    1 变量名=变量值 (变量值不能有特殊字符)

    2 变量名='变量值' (变量值作为整体赋值)

    3 变量名="变量值" (变量套变量)

    命令变量(将命令的输出作为变量值赋给变量名)

    变量名=`命令`

    变量名=$(命令)

    变量值不会随着命令输出的改变而改变

    12 变量访问

    1 ​ $变量名

    2 ​ "$变量名" (保证变量值是字符串)

    3 ${变量名} (限定变量名访问)

    4  "${变量名}" (推荐形式)

    unset 变量名 (删除变量)

    13 变量分类:

    本地变量(哪里定义哪里访问)

    全局变量(环境变量)

    1 查看当前全局变量:

    env

    2 定义:

    变量名=值

    export 变量

    (先定义后转换)

    export 变量名=值 (二合一)

    3 生效范围

    当前shell和子shell(子shell继承父shell的全局变量)

    若想让所有环境生效:

    1 修改~/.bashrc (只对当前用户生效,source执行该文件或重新打开新shell生效)

    2 修改/etc/profile (所有用户都生效,source执行该文件或重启生效)

    内置变量

    1脚本相关

    $0 当前脚本名

    $$ 指向该脚本的进程号

    $n 脚本的第n个参数(脚本传参:脚本名  s g b )

    $# 参数个数

    $? 上一条命令是否执行成功(0-成功,非0-失败,,若上一条命令是执行脚本,则获取脚本最后一条命令的返回值)

    2 字符串截取

    ${变量名:起始位置:截取长度}

    (倒着截要写0-X)

    3 默认值

    ${变量名:-默认值} (若变量不存在则输出默认值)

    ${变量名:+提示信息} (若变量存在则输出提示信息)

    14 表达式

    逻辑转成控制

    1 测试语句

    test 条件

    [ 条件 ] (括号内侧两边各有一个空格)

    1 数值比较 (比较操作符两边各有一个空格)

    n1 -eq n2 相等

    n1 -gt n2 大于

    n1 -ge n2 大于等于

    n1 -lt n2 小于

    n1 -le n2 小于等于

    n1 -ne n2 不等于

    2 字符串比较

    == != (两边有空格)

    2 逻辑表达式

    命令1 && 命令2 (1成功则执行2)

    命令1 || 命令2 (1失败则执行2)

    3 文件表达式

    -f 判断是否是文件

    -d 判断是否是目录

    -x 判断是否有可执行权限(目录可执行)

    4 计算表达式

    $((计算过程))

    let 等式

    15 常见符号

    1 重定向

    应用程序的输出:

    1标准输出(正常执行时的输出)

    2标准错误(异常执行时的输出)

    分别重定向:

    bash 6-chongdingxiang.sh > res.log 2> err.log

    合并重定向:

    bash 6-chongdingxiang.sh > res.log 2>&1

    丢弃:

    bash 6-chongdingxiang.sh > /dev/null 2>&1

    2 管道符

    命令1 | 命令2

    (命令1的输出作为命令2的输入)

    3 后台展示符

    命令 &

    (命令放到终端后台运行)

    16 常用命令

    1 grep(搜索命令)

    grep -rn  bash .

    (递归当前目录以及子目录下所有文件,搜索包含bash的行以及行号)

    2 find (查找文件)

    find . -name *chong*

    (在当前目录以及子目录查找名称大概是chong的文件)

    3 sed

    -i参数代表修改源文件

    替换:

    sed -i  "2s#sed#SED#1" sed.txt

    ("2(第二行)s替换#sed(原内容)#SED(替换后内容)#1(第1个找到的做替换---》g代表全部替换)")

    增加:

    sed "2a\hello" sed.txt

    "2(第二行)a(下方增加)\hello(增加的内容)"

    sed "4i\world" sed.txt

    "4(第四行)i(上方增加)\world(增加的内容)"

    删除:

    sed "3(第三行)d(删除)" sed.txt

    4 awk

    awk '{print $1,$3}' awk.txt

    打印awk.txt文件中每一行的第1列和第3列,并且用空格分割

    内置变量:

    FILENAME:文件名

    NR:行号

    awk 'NR==2 {print $2}' awk.txt

    (只处理第2行)

    NF:列数

    awk '{print $NF}' awk.txt

    (打印最后一列)

    FS:指定行分隔符

    awk 'BEGIN{FS="awk"} {print $3}' awk.txt

    (指定行分隔符为awk)

    awk -F "awk" ' {print $3,$1}' awk.txt

    (-F 更常用)

    OFS:指定多个输出的连接符

    awk -F "awk" 'BEGIN{OFS="->"} {print $3,$1}' awk.txt

    (指定第三列和第一列直接的连接符是->)

    相关文章

      网友评论

          本文标题:自动化运维快速学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/vcuxhqtx.html