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
浙公网安备 33010602011771号