Linux 萬用字元與特殊符號的使用


 
 
 
 

# 註解符號:這個最常被使用在 script 當中,視為說明!在後的資料均不執行
\ 跳脫符號:將『特殊字元或萬用字元』還原成一般字元
| 管線 (pipe):分隔兩個管線命令的界定
; 連續指令下達分隔符號:連續性命令的界定 (注意!與管線命令並不相同)
~ 使用者的家目錄
$ 取用變數前置字元:亦即是變數之前需要加的變數取代值
& 工作控制 (job control):將指令變成背景下工作
! 邏輯運算意義上的『非』 not 的意思!
/ 目錄符號:路徑分隔的符號
>, >> 資料流重導向:輸出導向,分別是『取代』與『累加』
<, << 資料流重導向:輸入導向 (這兩個留待下節介紹) ' ' 單引號,不具有變數置換的功能 ($ 變為純文字) " " 具有變數置換的功能! ($ 可保留相關功能) 兩個『 ` 』中間為可以先執行的指令,亦可使用 $( )
( ) 在中間為子 shell 的起始與結束
{ } 在中間為命令區塊的組合!
!! 重複執行最後一條命令
!$ 顯示系統最近的一條參數
 
* 代表『 0 個到無窮多個』任意字元
? 代表『一定有一個』任意字元
[ ] 同樣代表『一定有一個在括號內』的字元(非任意字元)。例如 [abcd] 代表『一定有一個字元, 可能是 a, b, c, d 這四個任何一個』
[ – ] 若有減號在中括號內時,代表『在編碼順序內的所有字元』。例如 [0-9] 代表 0 到 9 之間的所有數字,因為數字的語系編碼是連續的!
[^ ] 若中括號內的第一個字元為指數符號 (^) ,那表示『反向選擇』,例如 [^abc] 代表 一定有一個字元,只要是非 a, b, c 的其他字元就接受的意思。

 
 
 
 
特殊符號 ; && ||
 
cmd ; cmd (不考慮指令相關性的連續指令下達)
在某些時候,我們希望可以一次執行多個指令,例如在關機的時候我希望可以先執行兩次 sync 同步化寫入磁碟後才 shutdown 電腦,那麼可以怎麼作呢?這樣做呀:
 
sync; sync; shutdown -h now
 
那麼我們怎麼透過這個回傳值來判斷後續的指令是否要執行呢?這就得要藉由『 && 』及『 || 』
 
指令下達情況
cmd1 && cmd2 1. 若 cmd1 執行完畢且正確執行($?=0),則開始執行 cmd2。
2. 若 cmd1 執行完畢且為錯誤 ($?≠0),則 cmd2 不執行。
 
cmd1 || cmd2 1. 若 cmd1 執行完畢且正確執行($?=0),則 cmd2 不執行。
2. 若 cmd1 執行完畢且為錯誤 ($?≠0),則開始執行 cmd2。
 
| 管線命令 (pipe)
管線命令與『連續下達命令』是不一樣的
其實這個管線命令『 | 』僅能處理經由前面一個指令傳來的正確資訊
管線『 | 』用來隔開兩個命令,管線左邊命令的輸出會作為管線右邊命令的輸入
 
tee
tee 用來向多個目標發送輸出內容。它可以將輸出複製一份到一個文件,並複製另外一份到屏幕上(或一些其它程序)
 
~$ ll /etc | nl | tee /tmp/ll.out
在以上例子中,從ll輸出可以到 /tmp/ll.out 文件中,並且同樣在屏幕上顯示了出來。

R0012436

Tags: ,