shell通常表明两个层面的意思,一个是命令解释器,好比BASH,另一个就是shell脚本。本节咱们站在命令解释器的角度来阐述shell。nginx
命令的优先级:shell
命令分为:浏览器
==> alias #别名
==> Compound Commands #指的是 if while for
==> function #函数
==> build_in #内置命令
==> hash
==> $PATH #环境变量
==> error: command not found缓存
man builtin 查看内置命令bash
function test () {read -p 'please input your hostname:' name;hostnamectl set-hostname $name;hostname} #将这个语句打印出来,将输入的值赋值给name函数
hash -r 清除hash命令ui
hash 缓存经常使用的命令路径spa
unalias test = ‘ls -l’建立别名firefox
unalias test 去除别名 3d
set 查看定了哪些义的函数
bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义,强调一点:元字符是被shell解释的
~ 家目录 cd ~ 返回家目录
`` 命令替换 取命令的执行结果
[root@MiWiFi-R3-srv ~]# ls
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
[root@MiWiFi-R3-srv ~]# res=`ls` #取命令的运行结果,赋值给变量res res=$(ls)命令同样,之后用这个,``这个嵌套会出错
[root@MiWiFi-R3-srv ~]# echo $res #查看变量res的值
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz
! 取非 同^
!666 执行历史命令
# 注释
$
echo $? 判断上一条命令执行是否成功 0 为成功
echo $[1+10] 求和
% 杀后台进程 jobs号; 取模
&后台执行
firefox & 后台运行火狐浏览器
&&与运算
||或
* 匹配任意长度字符串;计算乘法
() 在子进程中执行
[root@MiWiFi-R3-srv ~]# x=1
[root@MiWiFi-R3-srv ~]# (x=666)
[root@MiWiFi-R3-srv ~]# echo $x
1
[root@MiWiFi-R3-srv ~]#
[root@MiWiFi-R3-srv ~]# (x=666;echo $x)
666
- 减号;区间;cd -;
_ 无特殊含义
= 赋值 == 判断
[] 字符通配,匹配括号内之一
x=1
y=2
[ &y >&x ] 作逻辑判断
echo $?
money = 10
echo $money000 拼接,结果为10000
{}
{ ls; cd /; } 命令列表括号内的开头和结尾必须是空格
touch {1..10}.txt 一次建10个文件
[root@MiWiFi-R3-srv test]# touch {1..3}{a..d}.txt
[root@MiWiFi-R3-srv test]# ls
1a.txt 1b.txt 1c.txt 1d.txt 2a.txt 2b.txt 2c.txt 2d.txt 3a.txt 3b.txt 3c.txt 3d.txt
[]列表
ls [a-Z].txt 筛选第一个字符是字母的文件
\ 转义
"" 软引 ''硬引 #软引用没有特殊意义
[root@MiWiFi-R3-srv test]# x=1
[root@MiWiFi-R3-srv test]# echo "$x" #双引号的表明软引用,引号内特殊字符有特殊意义,好比$,``等 1
[root@MiWiFi-R3-srv test]# echo '$x' #单引号表明硬引用,引号内全部字符都无特殊意义 $x
; 能够接多个命令:ls;pwd;echo 123;不管对错,会一直执行到最后一条命令
/ 目录分隔符
? 单个字符
> 输出重定向
>> 追加