通配符与正则表达式不一样,通配符一般用于用户命令行bash环境,正则表达式更多的是在三剑客中使用

* :表示所有
? :任意一个字符
; :两个命令之间的分隔符
# :在文件里是注释
| :管道
~ :当前用户家目录
- :上一次的目录
$ :变量前需要加$
/ :路径分隔符

# 重定向

shell中:

0表示标准输入

1表示标准输出

2表示标准错误输出

>或1> :标准输出重定向
>>或1>> :追加标准输出重定向
2> :标准错误输出重定向
<
<< :标准输入(追加)重定向

> file 2> /dev/ull 标准输出重定向到file,标准错误输出重定向到/dev/ull
> file 2>&1 标准输出重定向到file,标准错误输出重定向到标准输出,即file
&> file 标准输出重定向到file,标准错误输出重定向到标准输出,即file

#引号

'' :单引号不具有变量置换功能,所见即所得

"" :双引号具有变量置换功能【如果是变量或者命令还需要``或者$()】

`` :tab键上面的键,反引号,中间为命令,会先执行,等价于$()

# echo 'date'
date
# echo "date"
date
# echo "`date`"
2018年 04月 08日 星期日 18:40:16 CST
# echo '`date`'
`date`
# echo "$(date)"
2018年 04月 08日 星期日 18:41:06 CST
# echo '$(date)'
$(date)

# ls -l `which mkdir`
-rwxr-xr-x. 1 root root 43788 6月 22 2012 /bin/mkdir
# ls -l $(which mkdir)
-rwxr-xr-x. 1 root root 43788 6月 22 2012 /bin/mkdir
#

不加单引号和双引号
# echo date
date
# echo `date`
2018年 04月 15日 星期日 11:46:27 CST
# echo $(date)
2018年 04月 15日 星期日 11:46:39 CST
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#
# echo '$PATH'
$PATH
# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#

{} :命令序列,区块组合【大括号还可以是字母,而seq只能是数字排序】

# echo ricky{1,2,3}
ricky1 ricky2 ricky3
#
# mkdir /data/{date1,date2}/ori -p
# tree /data/
/data/
├── date1
│   └── ori
└── date2
└── ori

4 directories, 0 files

#逻辑运算

! :取反

&& :并且,两边条件同时满足,相当于and

|| :相当于or,当前执行失败,执行后一个指令