Linux Shell特殊字元

來源:互聯網
上載者:User
特殊字元


# 注釋
  • 表示注釋   #注釋
  • 在引號中間和\#等表示#本身
  • echo ${PATH#*:} # 參數替換,不是一個注釋
  • echo $(( 2#101011 )) # 數制轉換,不是一個注釋

; 分隔
  • 命令分隔,在一行中寫多個命令  echo "aa" ; echo "bb"
  • 在條件中的if和then如果放在同一行,也用;分隔
;; case條件的結束
. 命令相當於source命令
  • 命令:source
  • 檔案名稱的首碼,隱藏檔案
  • 目錄:.目前的目錄,..父目錄
  • Regex:匹配任意單個字元
"" 部分引用 支援萬用字元擴充
'  ‘ 全引用,不進行萬用字元擴充
\ 轉義
/ 目錄分隔字元
,  多個命令都被執行,但返回最後一個
` 後置引用
: 操作符
  • 空操作
  • 死迴圈:    while :
  • 在if/then中表示什麼都不做,引出分支
  • 設定預設參數:   : ${username=`whoami`}
  • 變數替換:    : ${HOSTNAME?} ${USER?} ${MAIL?}
  • 在和 > (重新導向操作符)結合使用時,把一個檔案截斷到0 長度,沒有修改它的許可權;如果檔案在之前並不存在,那麼就建立它.如:       : > data.xxx #檔案"data.xxx"現在被清空了. 與 cat /dev/null >data.xxx 的作用相同 然而,這不會產生一個新的進程,因為":"是一個內建命令.在和>>重新導向操作符結合使用時,將不會對想要附加的檔案產生任何影響.如果檔案不存在,將建立.
* 匹配0個或多個字元;數學乘法;**冪運算
? 匹配任意一個字元;但在((a>b?a:b))表示c語言中的三目運算
  • 取變數的值 echo $PATH
  • Regex中表示行的結尾
  • ${} 參數替換 ${PAHT}
  • $* 所有參數
  • $# 參數個數
  • $$ 進程的ID
  • $? 進程的返回狀態
( )
  • 命令組,在一個子Shell中運行   (a=3;echo $a) 其中定義的變數在後面不可用
  • 數組初始化: array=(a,b,c)
{ } 代碼塊,即一個匿名函數,但其中定義的變數在後面依然可用
{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;
[ ]
  • 測試 [-z $1]
  • 數組元素 a[1]='test'
  • [[]]表示測試 使用[[ ... ]]條件判斷結構, 而不是[ ... ], 能夠防止指令碼中的許多邏輯錯誤. 比如, &&, ||, <, 和> 操作符能夠正常存在於[[ ]]條件判斷結構中, 但是如果出現在[ ]結構中的話, 會報錯.
  • (( ))數學運算
  • 在Regex中表示範圍 [a-z]
< <<  >  重新導向和進程替換  ls -al > a.txt
>  <  還用在ASCII比較 if [[ "$veg1" < "$veg2" ]]

\<,\> Regex中的單詞邊界.如:bash$grep '\<the\>' textfile| 管道>| 強制重新導向(即使設定了noclobber 選項--就是-C 選項).這將強制的覆蓋一個現存檔案.|| 邏輯或操作 ;用在兩個命令之間的時候,表示在前一個命令結束時,若傳回值為 false,繼續執行下一個命令&& 邏輯與;用在兩個命令之間的時候,表示在前一個命令結束時,若傳回值為 true,繼續執行下一個命令& 後台運行-

  • 參數選項
  • 減號
  • 重新導向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
  • 先前的工作目錄 cd -
  • 註:使用-開頭的檔案名稱和變數名可能會出現一些問題
+    一個命令或者過濾器的選項標記.~ home目錄~+ 當前工作目錄~- 先前工作目錄^ Regex中表示行首$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將會刪除當前游標到左邊第一個非字母或數字之間的全部字元.

Ctl-Z暫停前台作業.

參考:《進階Bash指令碼編程指南》
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.