一 shell各种符号
说明: 本文主要讲解'各种符号'的应用场景,尽可能'穷举'
备注: 符号在'不同的场景',含义可能'不一样',主要讲解'shell'中,涉及少量的'regex'
(1){}花括号
① 通配符扩展
备注: 默认是以'逗号'分割
补充:'..'是范围运算符号
"备份"
cp /etc/passwd{,.bak}
② 语句块的构造
说明: 作为一个'整体',不管'报错与否'都会'继续执行' -->除非'exit退出'
特点: 多个命令'写在一块'
备注: 多个命令分行写'等价'命令之间用';'连接
③ 参数扩展
说明: 与'变量'相关
说明: 这里'仅仅'讲了一个'变量初始化'
④ find中的使用
功能: 在'/logs目录'中查找'更改时间'在'5日以前'的'文件'并'交互'确定是否'删除'它们
find /logs -type f -mtime +5 -exec -ok rm {} \;
1)'{}'理解为'占位符',表示find'找到的文件',传递给'rm命令'处理
2)碰巧";"是shell的'命令分隔符','\;'表示不要让shell进行'特殊'处理,只能用'\'来转义,用来'结束命令'
(2) []中括号
① 通配符扩展
特点: 匹配'字符集'中的'一个字符' -->'或'
② 条件判断
实质: test命令的'简写',也是通过'$?'进行'逻辑判断'的
(3).点号
① 命令
等价: 'source' --> '加载文件'并在'当前shell'下执行
② 正则
特点: 匹配除'换行符\n'之外的任何其它'单个字符',若要匹配'文本句点字符',必须在该字符前面加上转义符 --> '\.'
(4)-
① 通配符 连子符
② 切换
cd - -->'返回之前的目录-->OLDPWD'
su - user -->'切换到指定用户',不指定默认是'root'
③ 管道命令
减号"-"就是代表标准'输入(stdin)'/标准'输出(stout)',视命令而定
1)作为标准输出使用
xargs --> 打包
+++++++++++++++'通常网站首页是一个bash可执行文件'+++++++++++++++
1)wget
常见'场景': wget -qO- get.docker.com | bash
-q的含义是:'--quiet','安静模式',无信息输出 -->'多余的信息'
-O的含义是把后面网址下载后,改成一个'指定的名称',如果后面'没有跟着'一个名字,而是"-",则表示将下载后的内容输出到'标准输出'
备注: 标准输出是'屏幕'
-qO-的含义:把下载的内容输出到标准输出,但'并不在'屏幕显示,目的当然是直接'传递给bash进行解析'执行了
2)curl
常见场景: curl -sSL https://get.daocloud.io/docker | bash
-L,'--location':如果服务器报告请求的页面'已移动'到其他位置(用location:header和3xx 响应代码),此选项将使curl在新位置上'重新执行请求'-->'解决重定向' -->'eg:http-->https'
-S,'--show-error':当与-s,--silent一起使用时,它会使curl在'失败时显示错误'消息
-s,'--silent':'安静模式','不'显示'进度表'或'错误信息',使curl静音,它仍然会输出您请求的数据,甚至可能输出到终端stdout,除非您对它进行重定向
-f,'--fail': 连接失败时'不显示http错误'
2)作为标准输入和输出的使用
++++++++++++++'tar'的使用++++++++++++++
场景: 那么我们可以发现'第一条语句的输出'(log.tar) 就是'第二条语句的输入',这种情况下我们可以用 "-" 来'取代'这个输出输入
tar -cvf - /var/log | tar -xvf -
1)前面的'-'是 tar -cf /var/log的输出'传送的地方'
2)后面的'-'则是使用前一个命令的'stdout'
效果: '不需要'使用'文件'了
(5)() 圆括号
① 命令替换
效果: 等价于`cmd`
特性: shell'扫描'一遍命令行,发现了'$(cmd)'结构,便将$(cmd)中的'cmd执行'一次,得到其'标准输出'
备注: 有些'shell'和'unix系统'不支持-->如'tcsh'
② 数组初始化
array=(a b c d)
③ 命令组
特点: 括号中的命令将会'新开一个子shell顺序执行',所以括号中的变量'不能够'被脚本'余下'的部分使用
细节: 括号中多个命令之间用';分号隔开',最后一个命令'可以没有'分号,各命令和括号之间'不必有'空格
常用: umask'临时'修改文件的'权限'
(6)&
① 重定向结合
② 后台运行
把该命令以'后台方式'执行
注意: 如果命令'有输出',默认在'前台'-->'屏幕'
alias ls
③ 逻辑与
猜想'&&'真正完成了'逻辑与'的功能
(7)\ 反斜杠
1)转义
反斜杠的作用是将'特殊符号字符'的特殊含义'屏蔽掉',使其还是'原字符'
2)续行符
(8)(())
备注: 除了可以做'逻辑判断',后者可以还可以做'数值计算'
(9):冒号
1) 空'命令'
2) 参数'扩展'
3) 重定向
4) 当作'注释'
① 总的用法
② 空命令
1. 空命令就是'什么也不做',所以'返回码'永远都是0. -->利用此可以做'长轮询'、'死循环'
2. 虽说是空命令,但'仍是命令',就具备一般命令'应有'的特征,可以像'一般命令'一样使用
1)死循环
2)占位符
应用场景:
1) 比如在编写脚本的过程中,某些语法结构需要'多个部分'组成,但'开始阶段并没有想好'或完成相应的代码
2) 这时就可以利用:来做'占位符',先把整体的框架'勾勒'出来,'起占位符(TODO)'作用,否则执行时就会'报错'
3)变量初始化
1) 格式--> ": ${VAR:=DEFAULT}"
2) 当变量VAR'没有声明'或者'为NULL'时,将VAR设置为'默认值'DEFAULT
备注:如果'不在'前面加上:命令,那么就会把'${VAR:=DEFAULT}本身'当做'一个命令'来执行,"报错"是肯定的
4)注释
使用"冒号:"还可以"用作注释行"的开始,但是如果有'语法错误',仍将'报错',这一点与使用#号不同
补充:单行注释、多行注释
说明:了解即可,'不建议'使用
5)清空文件
(10)常用shell符号汇总
'{}'、'`'、'..'、'.'、'\'、'&'、'-'、';'、'|'、'!'、'$'、'*'、':'、'[]'、'[[]]'