https://www.jb51.net/article/54488.htm

什么是Shell?

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序
简单来讲,Shell是连接用户与内核的桥梁,是用户与内核交流的工具

⚠️开发注意

  • 1)开头加解释器:#!/bin/bash
  • 2)语法缩进,使用四个空格;多加注释说明
  • 3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用
  • 4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域
  • 5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程
  • 6)写脚本一定先测试再到生产上

Shell Variable(变量)

  • 变量赋值:
    • 不能使用保留字
    • for 循环变量赋值:
      • for filename in ls -l /etc
      • for filename in $(ls -l /etc)
  • 删除变量:unset $var
  • 变量类型

    • 局部变量
    • 环境变量
    • shell变量

      Shell String(字符串)

      单双引号的区别
  • 不同点

    • 单:原样输出,变量无效
    • 双:可饮用变量,可转义字符
  • 相同点
    • 两者皆可拼接字符串
  • 获取字符串长度
    • 全部长度
      • echo ${string}
    • 指定长度
      • echo ${string:1:4}

        Shell 数组

        只支持一维数组,数组元素之间用空格表示 ```shell

        获取所有数组

        echo ${arrayname[@]} # 0-n echo ${arrayname[*]}

取得数组单个元素的长度

echo ${arraynaem[n]}

  1. <a name="XQ9EZ"></a>
  2. ### 多行注释
  3. ```shell
  4. :<<EOF
  5. 注释内容。。。。
  6. EOF
  7. :<<'
  8. zhushiniernong.....
  9. '

shell 进阶命令

  • grep abc *.pc 文件内容中查找abc
  • grep –c abc *.txt 查找内容abc,并统计
  • grep –i abc *.txt 查找内容abc,大小写不敏感
  • diff abc.txt /usera/def.txt 比较文件
  • find . –name “abc*” 目录中查找文件
  • ps –ef|grep UserA 列出某用户的进程
  • shellABC.sh > abc.log 覆盖输出
  • shellABC.sh >> abc.log 追加输出
  • netstat –i 查看网卡
  • netstat –r 查看路由
  • netstat –an|grep 52 查看包含52的端口网络状态
  • ctrl r 在命令历史中查找
  • du -s * | sort -n -r 当前目录里的文件和文件夹按大小排序排列
  • ls –l|grep ‘^d’ 列出目录
  • ls –l|grep ‘^[^d]’ 列出非目录

vi 命令

  • Kjhl 上下左右
  • i 进入插入模式, r 进入替代模式
  • A 到行尾并Append,
  • a 进入Append输入模式
  • O 在本行上新增一行
  • o在本行下新增一行
  • :%d 删除所有文本
  • :sh 执行外部shell
  • :389 跳到389行, :1 跳至文件头 shift+g,跳至页尾
  • :set nu 打印行号
  • Ctrl+f 向下翻页, Ctrl+b 向上翻页
  • ^ 移动至行首 $ 移动至行末
  • / 向下查找,? 向上查找 (继续按则查找下一个)
  • // 重复上次查找
  • Esc 退出编辑或插入模式
  • X 删除后一个,x 删除前一个
  • :1,%s/abc/def/g 替换abc为def
  • :1,$s/^M//g (转换控制字符^M, 用Ctrl+V, Ctrl+M输入)
  • dd删除一行
  • J 删除一行带回车
  • Yy 复制一行, p粘贴


🔗参考博客

https://www.jianshu.com/p/9eadd8d80d03
https://www.cnblogs.com/Mainz/articles/1027168.html