<p align="left">Shell为命令解释器,把用户命令解释为内核可识别的机器语言,然后翻译命令结果给用户,其也是一个强大的编程语言,是解释执行的脚本语言,无编译,与python机制基本相同。
<p align="left">Shell内部可以直接调用Linux系统命令
<p align="left">
<h2 align="left"><span style="font-size: 15px;">echo命令的基本使用
<p align="left">【echo “内容“ 】输出命令
<p align="left">【echo -e “内容“ 】输出,并支持转义字符
<p style="margin-left: 30px;" align="left">转义符:
<p style="margin-left: 60px;" align="left">【\t】制表符,tab键
<p style="margin-left: 60px;" align="left">【\a】警告音,
<p style="margin-left: 60px;" align="left">【\b】退格,删除左边一个字符、
<p style="margin-left: 60px;" align="left">【\c】取消最后的换行,与-n效果一致、
<p style="margin-left: 60px;" align="left">【\f】换页符,横向占位
<p style="margin-left: 60px;" align="left">【\v】与上相同
<p style="margin-left: 60px;" align="left">【\n】换行
<p style="margin-left: 60px;" align="left">【\r】回车,光标回到行首
<p style="margin-left: 60px;" align="left">【<a href="file://xn--66j/">\】
<p align="left">【echo -e "\e[1;31m 输出内容 \e[0m"】红色输出abd
<p align="left">其中:【\e[1;】表示开始标志,【[0m】为结束标志,【31m】表示颜色,可有(黑色 30m)(红色 31m)(绿色 32m)(黄色 33m)(蓝色 34m)(洋红 35m)(青色 36m)(白色 37m)
<p align="left">
<h2 align="left"><span style="font-size: 15px;">输入输出重定向
<p align="left">标准输入:键盘(/dev/stdin)
<p align="left">标准输出:显示器(/dev/stdout)
<p align="left">标准错误输出:显示器(/dev/stdout)
<p align="left">输出重定向:
<p style="margin-left: 30px;" align="left">【命令 > 文件】以覆盖的方式把正确输出重定向到文件中
<p style="margin-left: 30px;" align="left">【命令 >> 文件】以追加的方式把正确的输出重定向到文件中
<p style="margin-left: 30px;" align="left">【命令 2> 文件】标准错误输出重定向,覆盖
<p style="margin-left: 30px;" align="left">【命令 2>> 文件】标准错误输出重定向,追加
<p style="margin-left: 30px;" align="left">【命令 >>正确文件 2>>错误文件】对命令判断,分别保存命令结果
<p align="left">
<h2 align="left"><span style="font-size: 15px;">多命令顺序执行
<p align="left">【命令1; 命令2;命令3】执行命令1到3,错误不影响下一个命令执行
<p align="left">【命令1 && 命令2 && 命令3】前面的命令必须正确执行,才能执行后面的命令
<p align="left">【命令1 || 命令2】命令1正确执行,就不会执行命令2,命令1错误时才会执行命令2
<p align="left">【命令 && echo yes || echo no】判断命令是否正确执行
<p align="left">【命令1 | 命令2】命令1的正确输出作为命令2的操作对象,管道符
<p style="margin-left: 30px;" align="left">如:【ls -lh /usr/bin | grep -i --color=auto pip3】查看pip3的执行文件
<p align="left">
<h2 align="left"><span style="font-size: 15px;">通配符
<p align="left">匹配文件名,对于命令:ls 、find、cp
<p align="left">【?】匹配任意一个字符
<p align="left">【】匹配任意0个或多个字符,如【rm -r 】删除目录下所有文件和文件夹
<p align="left">【[字符1字符2字符3]】匹配字符1到字符3的其中一个字符
<p align="left">【[a-z]】表示匹配小写字母a到z的任意一个字符
<p align="left">【[^123]】表示不匹配括号内的字符
<p align="left">
<h2 align="left"><span style="font-size: 15px;">正则表达式
<p align="left">匹配字符串,对于命令:grep、awk、sed
<p align="left">基本支持标准的正则表达式
<p align="left">特殊:
<p style="margin-left: 30px;" align="left">【{n,m}】n到m次,需要加斜线
<p style="margin-left: 30px;" align="left">Shell中无【()】、【+】、【?】
<p align="left">
<h2 align="left"><span style="font-size: 15px;">特殊字符
<p align="left">【‘内容’】单引号的内容仅仅表示字符串
<p align="left">【“内容”】双引号的内容会解释特殊符号,如(\)转义、($)调用变量、(
)反引号等</p> <p align="left">【
命令`】反引号,内容为引用的命令,可用【$(命令)】代替<p align="left">【#】表示注释当前行之后的内容
<p align="left">【$变量】引用变量的值时
<p align="left">
<h2 align="left"><span style="font-size: 15px;">变量
<p align="left">变量的值全部以字符串保存
<p align="left">【set】查看系统所有变量
<p align="left">【unset 变量名】删除变量
<p align="left">
<p align="left">用户自定义变量
<p align="left">本地变量,只在当前shell中生效
<p align="left">声明:namex=”wo sh”
<p align="left">调用:$namex
<p align="left">追加:namex=“$namex”” dongxiaodong” 或者 namex=${namex}” dongxiaodong”
<p align="left">
<p align="left">环境变量
<p align="left">父子shell的共享变量
<p align="left">【pstree】查看当前所属shell位置
<p align="left">通过ssh连接的客户端有3个,其中1是root,2是当前普通用户,3是另一个普通用户
<p align="left">
<img src="/res/2019/03-02/08/c300ed4e5daaad6768b3c306edc511cc.png" alt="">
<p align="left">【export 变量名="初始值"】定义环境变量
<p align="left">【bash】进入子shell,可直接访问环境变量,可用【exit】返回上一级
<p align="left">【env】查看所有环境变量
<p align="left">【unset 变量名】删除变量
<p align="left">
<p align="left">位置参数变量:
<p align="left">【$n】n可为[0,9],超过时可用{ },${100}
<p align="left">
<img src="/res/2019/03-02/08/f944eca1b2eeb50189685ed2157fe1b1.png" alt="">
<div class="cnblogs_code">
<span style="color: #008000;">#
<span style="color: #008000;">接收第0个参数
echo <span style="color: #800000;">"<span style="color: #800000;">当前程序为:$0<span style="color: #800000;">"<span style="color: #008000;">#<span style="color: #008000;">接收第一个和第二个参数
n1=$1<span style="color: #000000;">
n2=$2<span style="color: #000000;">echo <span style="color: #800000;">"<span style="color: #800000;">结果为:<span style="color: #800000;">"$(( $n1 * $n2 ))