shell基础

shell基础

  • shell:是Linux命令解释器;它是用户与系统内核,之间交互的桥梁
  • shell-script(脚本):一种解释型语言;也是命令式语言;作用:可以批量执行命令.实现一些自动化脚本任务,例如一键安装脚本,自动发送邮件,短信,微信,钉钉,系统巡检,系统优化脚本等,数据库备份脚本,垃圾清理脚本.

开发环境

  • Linux+vim+可选插件
  • VSCCode+插件
    • 本地安装
    • 远程访问(ssh)

学shell脚本学什么

  • 基础语法

    • 变量
    • 输入,输出
    • 判断
    • 循环
    • 函数
    • 数组
  • linux命令,重点三剑客(awk,grep,sed),运算,数据处理,计划任务

  • 写脚本

    • 案例模仿
    • 照着文档改写
    • 复杂任务,需求分析,需求拆分,编写模块

Shell基础语法

变量

数据的别名,创建变量时,会在内存中开辟存储空间,将数据存入内存中,将变量与内存地址绑定;

  • 不要和命令相同,建议使用大写字母;
  • 使用数字,字母,下划线命名,不要以数字开头;
  • Shell变量赋值时,"="的左右不能有空格;
  • 蛇形命名:my_name,
  • 驼峰命名:小驼峰myName,getAge,setMoney
  • MYSQL_PATH,MYYSQL_PROT

三种引号:

  • 单引号:输出的是字符串本身
  • 双引号:如果包含"$变量"时,输出的是变量的值
  • 反引号:引用命令,以字符串方式返回命令的执行结构;```

变量的分类:

  • 普通变量:在shell运行时子shell中生效

  • 全局变量(自定义环境变量):export 变量名

    • bash:在运行脚本时,会启动一个子shell执行脚本中命令
    • source:加载脚本,在当前的父shell中执行
    • chmod +x test.sh ./test.sh
    • .test.sh 等价于source
  • 系统环境变量:env查看PATH,HOME,SHELL,PWD

    • export PATH=$PATH:/usr/local/mysql/bin

    • 所有用户开机生效

    • vim /etc/profile

    • 让当前3用户开机生效

    • vim ~4/.bash_profile | ~/.bashrc | ~/.profile

  • 内置变量(特殊变量)😒?,$1~$9,#!,#*,$#,$@

    • $?上一条命令是否成功,成功0,失败返回其他数字.
    • $0 执行脚本时获取脚本的名称;
    • $1~$9 第1~第9个参数
    • $@ 获取所有参数 $#获取参数的数量
    • echo $! > xxx.pid获取后台运行程序的pid
    • $$获取当前命令的pid
    • $(命令)等价命令获取命令的执行结果
  • 转义字符

    • \n 换行符
    • \t 制表符
    • \a 响铃符
    • \r 回车符,将光标移动到一行的开头

echo -e "hello\nworld!"

换行展示

  • -e 支持转义字符
  • -n 不换行

[]等价于test命令

# test -e /etc/passwd && echo "OK"

等同于

if [ -e /etc/passwd ];then echo "OK" ;fi

exit结束(退出)当前的shell

break退出程序,继续执行循环下方(外部)的代码

continue退出本次循环,继续进行下一次循环

函数

概念:一个代码段,起个函数名,通过函数名可以重复调用该代码:

可以使用$1~$9作为位置参数;

return 0:表示执行成功,1~127表示失败;

nemu(){

}

menu

常用数据处理命令

  • cut 切割字符串 获取部分内容;
    • -d 指定分隔符
    • -f 显示的列 -f1表示第一列 -f1,2,3
    • -c截取每行的某几个字符 -c1-5
  • tr替换字符,删除字符;
    • -d 删除匹配到的字符
    • tr A B (a替换b)
  • sort 排序显示,默认排序规则是字符编码排序.
    • -n按照数字的排序规则排序
    • -k指定列来排序
    • -u 直接去重
    • -r降序
  • uniq 去重
  • tee:双向输出,在屏幕上
  • paste:
    • -d
    • -s
  • xargs:将前一个命令的执行结果作为后一个命令的参数.
  • |:将前一个命令的执行结果作为后一个命令的数据源

特殊符号

符号 功能
!! 自动执行上依次执行的命令
$ 获取变量的值
$(命令) 获取命令的执行结果
&写在命令执行 的结尾 让前台程序在后台执行
&& 与运算
&> 将标准输出和标准错误输出都重定向到一个文件
; 在命令行 中,一行执行多条命令
> 输出重定向,将命令执行结果保存到文件中,会覆盖原文件内容
>> 追加重定向,将内容添加到文件的最后,不覆盖,只追加
< 输入 重定向,将文件的内容,交给命令执行
<< 追加输入重定向,将键盘输入的内容交给命令批量执行

jios进程管理

jobs查看后台进程号

bg编号放到后台继续运行

fg 编号 将进程放到前台运行

sed

read -p "请输入您要修改的IP地址" MYIP

cat << EOF > /etc/netplan/00-installer-config.yaml
network:
  ethernets:
    ens33:
      dhcp4: no
      dhcp6: no
      addresses: [$MYIP/24]
      gateway4: 192.168.8.2
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
  version: 2
EOF

netplan apply

awk

posted @ 2025-09-02 19:57  秀妍泽  阅读(10)  评论(0)    收藏  举报