linux shell特殊字元詳解彙總
# 註釋
1、在shell檔案的行首,作為include標記:#!/bin/bash。
2、在其他地方使用,作為註釋,#後面的內容不會執行。
3、在單引號/雙引號中間,或\#等表示#本身,不是註釋。
一個#表示從左邊擷取掉最短的匹配。
兩個#表示從左邊擷取掉最長的匹配。
echo ${PATH#*:} 引數替換,不是一個註釋。
echo $((2#101011)) 數制轉換,不是一個註釋。
; 分隔
1、命令分隔,在一行中寫多個命令。
ls;date;pwd
2、在條件中的if和then如果放在同一行,也用;分隔。
;; 連續分號
case條件的結束。
. 點號
1、相當於source命令。
2、檔名的字首,隱藏檔案。
3、.當前目錄,..父目錄。
4、正規表示式:匹配任意單個字元。
"" 雙引號
1、部分引用,雙引號包圍內容,允許變數擴充套件,支援萬用字元擴充套件,也允許轉義字元。
2、如果字串內部出現雙引號,需要轉義。
' 單引號
1、全引用,禁止變數擴充套件,不進行萬用字元擴充套件,所有字元都作為字元本身。
2、單引號必須成對出現 。
\ 反斜槓
1、放在特殊符號前,作為轉義符。
2、放在一行指令最末端,表示緊接著的回車失效,後續新行依然是指令的一部分。
/ 斜槓
1、目錄分隔符,僅有一個斜槓表示根目錄,以斜槓開頭的路徑表示從根目錄開始的絕對路徑。
2、除法運算子
, 逗號
1、用在一連串數學表示式中,所有表示式都被執行,但只有最後一個結果被返回。
2、用於引數替換中,表示首字母小寫,如果兩個逗號,則表示全部小寫。
str="GOOD"
echo ${str,} #輸出gOOD
echo ${str,,} #輸出good
` 後引用
命令替換,後引號包圍內容作為命令執行,可將執行結果賦值給變數。
: 冒號
1、空命令,但有返回值(0:true)。
2、可做while死迴圈的條件。 while :
3、在if/then中表示什麼都不做,引出分支
4、設定預設引數。 : ${username=`whoami`}
5、變數替換: : ${HOSTNAME?} ${USER?} ${MAIL?}
6、在和 > (重定向操作符)結合使用時,把一個檔案截斷到0 長度,沒有修改它的許可權;如果檔案在之前並不存在,那麼就建立它.
如:
: > data.xxx #檔案"data.xxx"現在被清空了. 與 cat /dev/null >data.xxx 的作用相同 然而,這不會產生一個新的程式,因為":"是一個內建命令.
7、在和>>重定向操作符結合使用時,將不會對想要附加的檔案產生任何影響.如果檔案不存在,將建立.
8、作為域分隔符,比如環境變數$PATH,或者passwd檔案中,都有冒號作為域分隔符的存在。
9、作為註釋,#後面的內容不會被檢查,但:後面的內容會被檢查。
! 感嘆號
1、表示一個反邏輯,比如!=表示不等於。
2、取反,比如ls ok[!a-z] #表示ok後面不是緊接其他字元。
3、在不同的環境裡,感嘆號也可以出現在間接變數引用裡面。
4、命令列中,可以用於歷史命令機制的條件。
* 星號
1、作為萬用字元,匹配0個或多個字元。
2、數學乘法。
** 雙星號
冪運算
? 問號
1、條件測試。
2、萬用字元,匹配任意一個字元。
3、正規表示式中,表示通配前面的規則0次或者1次。
4、表示c語言中的三目運算(a>b?a:b)
$ 美元符號
1、取變數的值 echo $PATH
2、正規表示式中表示行的結尾
${}
引數替換 ${PAHT}
$'...'
引用內容展開,執行單引號內的轉義內容,這種方式會將引號內的一個或者多個[\]轉義後的八進位制,十六進位制值展開到ASCII或UNICODE字元。
$*
所有引數作為一個整體返回(字串)
$@
將每個引數作為單元返回一個引數列表。
$#
引數個數
$$
執行當前指令碼的程式ID。
$?
返回最後一次執行命令、函式或指令碼的結果狀態。執行正確為0,有錯則非0.
( ) 圓括號
1、命令組,其中的命令在子Shell中執行 (a=3;echo $a) 其中的變數不可被父shell獲取,但子shell可以使用父shell中變數。
2、陣列初始化: array=(a,b,c)
{ } 花括號
程式碼塊,即一個匿名函式,但其中定義的變數在後面依然可用。
{ } \;
用在find的-exec中 $find -name *.txt -exec cat {} \;
[ ] 中括號
1、測試 [-z $1]
2、陣列元素 a[1]='test'
3、表示字符集的範圍,在正規表示式中,方括號表示該位置可以匹配的字符集範圍。
[[]]
表示測試 使用[[ ... ]]條件判斷結構, 而不是[ ... ], 能夠防止指令碼中的許多邏輯錯誤. 比如, &&, ||, <, 和> 操作符能夠正常存在於[[ ]]條件判斷結構中, 但是如果出現在[ ]結構中的話, 會報錯.
$[...]
表示整數擴充套件,在方括號裡面執行整數表示式。
x=1
y=2
echo $[$x+$y]
(( ))
表示整數擴充套件,和上面的$[]差不多,但上者返回表示式的值,而本符號不返回值。
>
重定向: ls -a > a.txt #重定向ls -a的輸出到a.txt,如果檔案存在則覆蓋
&>
重定向:ls -a &> a.txt #重定向ls -a的標準輸出(stdout)和標準錯誤(stderr)到檔案a.txt
>&
重定向:ls -a >&2 #重定向ls -a的標準輸出(stdout)到標準錯誤(stderr)中。
>>
重定向: ls -a >> a.txt #重定向ls -a的輸出(同>)追加到a.txt,如果檔案不存在則建立。
<>
重定向: [1]<>a.txt #開啟a.txt,並且指定1位檔案描述符,檔案不存在則建立。
<<
重定向: 用來將後續的內容重定向到左側命令的stdin中。
<<<
重定向: 和<<類似。
>|
強制重定向(即使設定了noclobber 選項--就是-C 選項).這將強制的覆蓋一個現存檔案.
|
管道:將管道前的命令產生的輸出(stdout)作為管道後的命令的輸入(stdin)。
ls -a|grep ok
>,<
大/小於號:用於變數的 ASCII比較。
if [[ "$veg1" < "$veg2" ]]
\<,\>
正規表示式中的單詞邊界.
如: bash$grep '\<the\>' textfile
&
命令後跟 &,則在後臺執行
||
邏輯或,用在兩個命令之間的時候,表示在前一個命令結束時,若返回值為 false,繼續執行下一個命令
&&
邏輯與,用在兩個命令之間的時候,表示在前一個命令結束時,若返回值為 true,繼續執行下一個命令
-
1、引數選項
2、減號
3、重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
4、先前的工作目錄 cd -
注:使用-開頭的檔名和變數名可能會出現一些問題
+
1、一個命令或者過濾器的選項標記。
2、加法。
3、正規表示式中,表示的是其前的這個匹配規則匹配最少一次。
4、引數替換中,+字首表示替代值。
=
1、賦值操作
2、在比較測試中作為比較符出現,這裡要注意,如果在中括號中作為比較出現,需要有空格符在等號左右兩側。
%
1、算術運算中求模操作符,即除法運算後的餘數
2、引數替換中,可以作為模式匹配
3、一個%表示從右邊擷取最短的匹配
4、兩個%表示從右邊擷取最長的匹配
~
home目錄,和$HOME一樣的。
~+
當前工作目錄,這個和內建變數$PWD一樣。
~-
先前工作目錄,這個和內部變數$OLDPWD一樣。
=~
正規表示式匹配,可用在[[]]測試中。
var="this is so good"
[[ "$var" =~ tf*good ]] && echo "ok" || echo "false"
^
1、正規表示式中表示行首
2、引數替換中,一個^表示第一個字母大寫,兩個^表示全部大寫。
$IFS
用來做一些輸入命令的分隔符, 預設情況下是空格.還包括製表符、空行、或者這幾種組合。
控制字元修改終端或文字顯示的行為. . 控制字元以CONTROL + key這種方式進行組合(同時按下). 控制字元也可以使用8進位制或16進製表示法來進行表示, 但是前邊必須要加上轉義符.
控制字元在指令碼中不能正常使用.
Ctl-B 退格(非破壞性的), 就是退格但是不刪掉前面的字元.
Ctl-C 終結一個前臺作業.
Ctl-D 從一個shell中登出(與exit很相像).
"EOF"(檔案結束). 這也能從stdin中終止輸入.
在console或者在xterm視窗中輸入的時候, Ctl-D將刪除游標下字元. 當沒有字元時, Ctl-D將退出當前會話, 在一個xterm視窗中, 則會產生關閉此視窗的效果.
Ctl-G "嗶" (beep). 在一些老式的打字機終端上, 它會響一下鈴.
Ctl-H "退格"(破壞性的), 就是在退格之後, 還要刪掉前邊的字元.
Ctl-I 水平製表符.
Ctl-J 重起一行(換一行併到行首). 在指令碼中, 也可以使用8進製表示法 -- '\012' 或者16進製表示法 -- '\x0a' 來表示.
Ctl-K 垂直製表符.
Ctl-L 清屏(清除終端的螢幕顯示). 在終端中, 與clear命令的效果相同. 當傳送到印表機上時, Ctl-L會讓印表機將列印紙捲到最後.
Ctl-M 回車.
Ctl-Q 恢復(XON).在一個終端中恢復stdin.
Ctl-S 掛起(XOFF).
在一個終端中凍結stdin. (使用Ctl-Q可以恢復輸入.)
Ctl-U 刪除游標到行首的所有字元. 在某些設定下, 不管游標的所在位置Ctl-U都將刪除整行輸入.
Ctl-V 當輸入字元時, Ctl-V允許插入控制字元.
Ctl-V 主要用於文字編輯.
Ctl-W 當在控制檯或一個xterm視窗敲入文字時, Ctl-W將會刪除當前游標到左邊最近一個空格間的全部字元. 在某些設定下, Ctl-W將會刪除當前游標到左邊第一個非字母或數字之間的全部字元.
相關文章
- Linux Shell程式設計(4)——shell特殊字元(上)Linux程式設計字元
- Linux Shell程式設計(5)——shell特殊字元(下)Linux程式設計字元
- HTML特殊字元的html、js、css寫法彙總HTML字元JSCSS
- Mssql Backup a Shell 突破特殊字元(轉)SQL字元
- Shell命令列中的特殊字元及其轉義(去除特殊含義)命令列字元
- linux shell特殊引數Linux
- Excel 特殊分組彙總示例Excel
- 特殊字元字元
- Linux的Bash Shell詳解Linux
- HTML特殊字元HTML字元
- perl 特殊字元字元
- JDBC下解決特殊字元的方式JDBC字元
- linux 故障解決方法彙總Linux
- 面試常用的shell命令彙總面試
- Redis4.0 info命令彙總詳解Redis
- mongodb密碼特殊字元的解決方法MongoDB密碼字元
- Bash的特殊字元字元
- 如何去除特殊字元字元
- Oracle 去特殊字元Oracle字元
- html的特殊字元HTML字元
- 【HTML】08特殊字元HTML字元
- Linux Shell 萬用字元、元字元、轉義符使用Linux字元
- shell指令碼之特殊符號總結性梳理指令碼符號
- Linux裡面去掉檔案特殊字元的命令Linux字元
- Linux系統中必須掌握的特殊字元!Linux字元
- Linux shell I/O重定向詳解(zt)Linux
- mount命令詳解及常見問題彙總
- perl替換特殊字元字元
- HTML特殊字元顯示HTML字元
- 特殊字元——反斜槓(\)字元
- mysql替換特殊字元MySql字元
- sql中使用特殊字元SQL字元
- HTML特殊字元大全HTML字元
- java 替換特殊字元Java字元
- Oracle 特殊字元轉義Oracle字元
- 文字中的特殊字元字元
- Linux下刪除亂碼或特殊字元檔案Linux字元
- Linux Shell程式設計(8)——變數詳解Linux程式設計變數