一、Linux通配符
通配符是bash的内置功能,用以輕松比對,提高效率。
通配符集合:
符号 | 作用 |
* | 比對任意字元或字元串(0個或多個),包括空字元串 |
? | 比對任意1個字元(有且僅有1個)(很少用到)(占位符) |
比對一堆字元或文本: | |
[abcd] | 比對abcd中任何一個,和正則意思一樣 |
[a-z] | 比對a-z中任何一個,和正則意思一樣 |
[!abcd] | 取反,比對除了這幾個的任意一個 |
舉例如下
*
ls *.txt 檢視所有以txt結尾的檔案
cd 到目錄内
rm -f ./* 删除目前目錄下所有内容
[a-z]
[root@localhost olyboy]# touch a.txt b.txt c.txt ac.txt
[root@localhost olyboy]# ls [a-z].txt
a.txt b.txt c.txt
{}
[root@m01 ~]# echo {1..5}
1 2 3 4 5
[root@m01 ~]# echo {a..Z}
a ` _ ^ ] [ Z
[root@m01 ~]# echo {1..10..2} 2:步長
1 3 5 7 9
[root@m01 ~]# echo {1..10..3}
1 4 7 10
[root@m01 ~]# echo {a..z..b}
{a..z..b}
[root@m01 ~]# echo {a..z..2}
a c e g i k m o q s u w y
[root@m01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.abc}
二、Linux特殊符号
1、路徑位置相關
符号 | 含義 |
~ | 代表使用者的家目錄[root@localhost ~]# su - zls [zls@localhost ~]$ |
- | 上次路徑 cd - 即切到上次所在路徑 |
. | 目前目錄 cd . 發現還在目前目錄 |
.. | 上級目錄 |
2、各種引号
符号 | 作用 |
單引号 | 所見即所得(強引用) |
雙引号 | 弱應用,裡面的指令、變量啥的用反引号引起來可以解析出結果 |
無引号 | 與雙引号類似,但沒引号難确定字元串邊界,所有建議用雙引号代替 |
反引号 | 用于引用指令,相當于$(),但反引号不支援嵌套 |
例子:
[root@localhost ~]# echo `date` 反引号,會解析指令
Thu Sep 29 20:17:55 CST 2022
[root@localhost ~]# echo '`date`' 單引号,用反引号引起來也沒用,原樣輸出
`date`
[root@localhost ~]# echo "`date`" 雙引号,弱引用
Thu Sep 29 20:32:24 CST 2022
[root@localhost ~]# echo "date"
date
[root@localhost ~]# echo "today is `date +%F`"
today is 2022-09-29
[root@localhost ~]# echo "today is `date +%F-%T`"
today is 2022-09-29-20:35:50
[root@localhost ~]# echo "today is `date +%F+%T`"
today is 2022-09-29+20:37:04
[root@localhost ~]# echo "today is $(date)"
today is Thu Sep 29 20:37:44 CST 2022
3、重定向相關(見前面相關章節)
4、其他特殊符号
名稱 | 解釋 |
; | 執行多條指令時可用作指令間分隔符 |
| | 管道符 |
# | ①注釋内容,系統不會執行以“#”号開始的内容②root使用者的指令提示符 |
$ | ①字元串前加$,代表變量②普通使用者的指令提示符 |
\ | 将含有特殊含義的字元(通配符或正則表達)還原成其本意 |
{} | ①生成序列②shell裡用的,引用變量 |
例子
$
[root@web01 ~]# sky=1
[root@web01 ~]# echo $ sky
$ sky
[root@web01 ~]# echo $sky
1
{}
# 生成序列
[root@m01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@m01 ~]# echo {a..Z}
a ` _ ^ ] [ Z
[root@m01 ~]# echo {1..10..2} 2:步長
1 3 5 7 9
[root@m01 ~]# echo {1..10..3}
1 4 7 10
[root@m01 ~]# echo {a..z..b}
{a..z..b}
[root@m01 ~]# echo {a..z..2}
a c e g i k m o q s u w y
[root@m01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.abc}
相當于 cp {/etc/sysconfig/network-scripts/ifcfg-eth0,/etc/sysconfig/network-scripts/ifcfg-eth0.abc}