Linux基礎之-元字符


  Bash中的特殊字符,鍵盤上能敲出來的特殊字符都有其特殊意義,強調一點:元字符是被shell解釋的。

1. '',取命令的執行結果

[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
[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

2. $(),同上,但它彌補了''的嵌套缺陷

[root@MiWiFi-R3-srv ~]# res=`echo `ls`` #嵌套使用后無法達到預想的效果:取echo 一堆文件名的效果。

[root@MiWiFi-R3-srv ~]# echo $res
ls

[root@MiWiFi-R3-srv ~]# res=$(echo $(ls)) #替代方案
[root@MiWiFi-R3-srv ~]# echo $res
4.txt anaconda-ks.cfg a.txt B.txt c.txt D.txt nginx-1.10.3 nginx-1.10.3.tar.gz

3. ~, 家目錄

[root@MiWiFi-R3-srv tmp]# cd ~
[root@MiWiFi-R3-srv ~]# pwd
/root

4. !

a !,取非

[root@MiWiFi-R3-srv ~]# ls /dev/sda
sda sda1 sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[0123]
/dev/sda1 /dev/sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[!01]
/dev/sda2

b !,歷史命令調用

[root@MiWiFi-R3-srv ~]# !343
hostname
MiWiFi-R3-srv

c !,匹配最近一次歷史命令

[root@MiWiFi-R3-srv ~]# !ls
ls /dev/sda[!01]
/dev/sda2

d ! ,帶空格 將命令的返回值取反

[root@MiWiFi-R3-srv ~]# echo ok
ok
[root@MiWiFi-R3-srv ~]# echo $? #上一條命令執行的結果,0代表執行成功,非0代表執行失敗
0
[root@MiWiFi-R3-srv ~]# ! echo ok #將結果取反
ok
[root@MiWiFi-R3-srv ~]# echo $?
1

0-255之間,0則為真,非0位假

6. @,無特殊含義

7. # 注釋

8. $

a $,變量取值

b $() 同``

c ${},變量名的范圍

d $[],整數計算 echo $[2+3] - * / % 浮點數用 echo "scale=3; 10/3" | bc -l

[root@MiWiFi-R3-srv ~]# money=10
[root@MiWiFi-R3-srv ~]# echo $money
10
[root@MiWiFi-R3-srv ~]# echo 00000$money
0000010
[root@MiWiFi-R3-srv ~]# echo $money0000

[root@MiWiFi-R3-srv ~]# echo ${money}0000
100000

9. %

a 殺后台進程 jobs號

b 取模

10. ^,

a 取非,和!雷同

[root@MiWiFi-R3-srv ~]# ls /dev/sda[^01]
/dev/sda2
[root@MiWiFi-R3-srv ~]# ls /dev/sda[!01]
/dev/sda2

b 替換

[root@MiWiFi-R3-srv ~]# systemctl restart network
[root@MiWiFi-R3-srv ~]# ^network^sshd^
systemctl restart sshd

11. &

a 后台執行

b &&,邏輯與

12. *

a 匹配任意長度字符串

b 計算乘法

13. (),在子進程中執行

[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

14. -

a 減號

b 區間

c cd -

15. _,無特殊含義

16. +,加號

17. =,賦值

18. |

a |,管道

b ||,邏輯或

19. \,轉義

[root@MiWiFi-R3-srv test]# echo \\
\
[root@MiWiFi-R3-srv test]# echo \'
'
[root@MiWiFi-R3-srv test]# echo "'"
'

20. {},命令列表 #括號內的開頭和結尾必須是空格

# { ls; cd /; }

21. [],字符通配,匹配括號內之一

22. :,

a 空命令

b 真值

[root@MiWiFi-R3-srv ~]# :
[root@MiWiFi-R3-srv ~]# echo $?
0

23. ;,可以接多個命令:ls;pwd;echo 123;無論對錯,會一直執行到最后一條命令

24. "",軟引, '',硬引

[root@MiWiFi-R3-srv test]# x=1
[root@MiWiFi-R3-srv test]# echo "$x" #雙引號的代表軟引用,引號內特殊字符有特殊意義,比如$,``等
1
[root@MiWiFi-R3-srv test]# echo '$x' #單引號代表硬引用,引號內所有字符都無特殊意義
$x

25. <,輸入重定向

26. >,輸出重定向

27. >>,追加

28. <<,here document  ???

29. >&,合並2和1輸出

30. ,逗號,枚舉分隔符

31. .點,source ,當前目錄

32. /,目錄分隔符

33. ?,通配符,任一字符

34. 回車符,命令執行

35. *,通配符,任意字符

 

 

 

 

參考資料

1. http://www.cnblogs.com/linhaifeng/p/6592572.html#_label3

2. http://jingyan.baidu.com/article/3052f5a1f4486797f31f86e1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM