首頁 > 軟體

Linux基礎之-元字元

2020-06-16 17:18:40

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

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

[root@linuxidc ~]# 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@linuxidc ~]# res=`ls` #取命令的執行結果,賦值給變數res
[root@linuxidc ~]# 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@linuxidc ~]# res=`echo `ls`` #巢狀使用後無法達到預想的效果:取echo 一堆檔名的效果。

[root@linuxidc ~]# echo $res
ls

[root@linuxidc ~]# res=$(echo $(ls)) #替代方案
[root@linuxidc ~]# 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@linuxidc tmp]# cd ~
[root@linuxidc ~]# pwd
/root

4. !

a !,取非

[root@linuxidc ~]# ls /dev/sda
sda sda1 sda2
[root@linuxidc ~]# ls /dev/sda[0123]
/dev/sda1 /dev/sda2
[root@linuxidc ~]# ls /dev/sda[!01]
/dev/sda2

b !,歷史命令呼叫

[root@linuxidc ~]# !343
hostname
linuxidc

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

[root@linuxidc ~]# !ls
ls /dev/sda[!01]
/dev/sda2

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

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

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

6. @,無特殊含義

7. # 注釋

8. $

a $,變數取值

b $() 同``

c ${},變數名的範圍

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

[root@linuxidc ~]# money=10
[root@linuxidc ~]# echo $money
10
[root@linuxidc ~]# echo 00000$money
0000010
[root@linuxidc ~]# echo $money0000

[root@linuxidc ~]# echo ${money}0000
100000

9. %

a 殺後台進程 jobs號

b 取模

10. ^,

a 取非,和!雷同

[root@linuxidc ~]# ls /dev/sda[^01]
/dev/sda2
[root@linuxidc ~]# ls /dev/sda[!01]
/dev/sda2

b 替換

[root@linuxidc ~]# systemctl restart network
[root@linuxidc ~]# ^network^sshd^
systemctl restart sshd

11. &

a 後台執行

b &&,邏輯與

12. *

a 匹配任意長度字串

b 計算乘法

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

[root@linuxidc ~]# x=1
[root@linuxidc ~]# (x=666)
[root@linuxidc ~]# echo $x
1
[root@linuxidc ~]#
[root@linuxidc ~]# (x=666;echo $x)
666

14. -

a 減號

b 區間

c cd -

15. _,無特殊含義

16. +,加號

17. =,賦值

18. |

a |,管道

b ||,邏輯或

19. ,跳脫

[root@linuxidc test]# echo

[root@linuxidc test]# echo '
'
[root@linuxidc test]# echo "'"
'

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

# { ls; cd /; }

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

22. :,

a 空命令

b 真值

[root@linuxidc ~]# :
[root@linuxidc ~]# echo $?
0

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

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

[root@linuxidc test]# x=1
[root@linuxidc test]# echo "$x" #雙引號的代表軟參照,引號內特殊字元有特殊意義,比如$,``等
1
[root@linuxidc test]# echo '$x' #單引號代表硬參照,引號內所有字元都無特殊意義
$x

25. <,輸入重定向

26. >,輸出重定向

27. >>,追加

28. <<,here document  ???

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

30. ,逗號,列舉分隔符

31. .點,source ,當前目錄

32. /,目錄分隔符

33. ?,萬用字元,任一字元

34. 回車符,命令執行

35. *,萬用字元,任意字元

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-03/142093.htm


IT145.com E-mail:sddin#qq.com