bash的特性(study01)
*: 匹配0或多个任意字符
?: 匹配任意单个字符
[list]: 匹配[list]中的任意单个字符,或者一组单个字符
[!list]: 匹配除list中的任意单个字符
{string1,string2,...}: 匹配string1,string2或更多字符串
-
双引号 "" : 会把引号的内容当成整体来看待,允许通过$符号引用其他变量值
-
单引号 ' ' : 会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符
-
反撇号 `` : 反撇号和$()一样,引号或括号里的命令会优先执行,如果存在嵌套,反撇号不能用
[root@shell test]# date +%F
2022-02-24
[root@shell test]# echo "hello world"
hello world
[root@shell test]# echo 'hello world'
hello world
[root@shell test]# echo $(date +%F)
2022-02-24
[root@shell test]# echo "$(date +%F)"
2022-02-24
[root@shell test]# echo '$(date +%F)'
$(date +%F)
[root@shell test]# echo `date +%F`
2022-02-24
[root@shell test]# echo "`date +%F`"
2022-02-24
[root@shell test]# echo `"echo `date +%F`"`
-bash: command substitution:行1: 寻找匹配的 `"' 是遇到了未预期的文件结束符
-bash: command substitution:行2: 语法错误: 未预期的文件结尾
-bash: command substitution:行1: 寻找匹配的 `"' 是遇到了未预期的文件结束符
-bash: command substitution:行2: 语法错误: 未预期的文件结尾
date +%F
3.shell简介
-
shell就是人机交互的一个桥梁
[root@shell test]
/bin/sh #是bash的一个快捷方式
/bin/bash #bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能
/sbin/nologin #表示非交互,不能登录操作系统
/bin/dash #小巧,高效,功能相比少一些
/bin/csh #具有C语言风格的一种shell,具有许多特性,但也有一些缺陷
/bin/tcsh #是csh的增强版,完全兼容csh
4.shell脚本
(1)什么是shell脚本?
-
一句话概括
简单来说就是将 需要执行的命令 保存到文本中,按照顺序执行,从上至下。它是解释型的,意味着不需要编译。
-
准确叙述
若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想 = shell脚本
(2)什么时候用到脚本?
遇到重复化、复杂化的工作,通过把工作的命令写成脚本,以后通过执行脚本就能完成这些工作。
(3)shell脚本能干啥?
①自动化软件部署 LAMP/LNMP/Tomcat
②自动化管理 系统初始化脚本、批量更改主机密码、推送公钥...
③自动化分析处理 统计网站访问量
④自动化备份 数据库备份、日志转储...
⑤自动化监控脚本
(4)如何学习shell脚本?
1.尽可能记忆更多的命令
2.掌握脚本的标准格式(指定魔法字节、使用标准的执行方式运行脚本)
3.必须熟悉掌握脚本的基本语法
(5)学习shell脚本的秘诀
多看(看懂)——> 模仿(多练)——> 多思考(多写)
(6)shell脚本的基本写法
1)脚本第一行,魔法字符 #!指定解析器
#!/bin/bash 表示以下内容使用bash解释器解析
注意:
如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器 的兼容性问题,所以可以使用
#!/bin/env bash
2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】
#!/bin/bash
# Name: 名字
# Desc: 描述
# Path: 存放路径
# Usage: 用法
# Update: 更新时间
#以下脚本具体内容