天天看點

Linux中的通配符與特殊符号

Linux中的通配符與特殊符号

一、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}           

繼續閱讀