bash (Bourne-Again SHell) 是當前衆多Linux系統的默認shell,擁有強大的功能,便於人們操縱使用Linux系統。 html
bash中使用的一些特殊符號有: shell
符 號 | 內 容 |
---|---|
# | 批註符號,這個最常被使用在script當中,視爲說明。其後的數據均不執行 |
|
轉義符號,將特殊字符或通配符還原成通常字符 |
| | 管道 (pipe),分隔兩個管道命令的界定 |
; | 連續命令執行分隔符,連續性命令的界定 |
$ | 適用變量前導符,便是變量以前須要加的變量替代值 |
& | 做業控制 (job control),將命令轉到後臺工做 |
>與>> | 數據流重定向,輸出嚮導,分別是「替換」與「累加」 |
<與<< | 數據流重定向,輸入嚮導,分別是「鍵盤輸入」與「結束輸入」 |
' ' | 單引號,不具備變量置換的功能 |
" " | 雙引號,具備變量置換的功能 |
` ` | 能夠先執行的命令,也可以使用$() |
( ) | 子shell的起始與結束 |
{ } | 命令塊的組合 |
舉例說明: bash
#屏幕本應該顯示的標準輸出(stdout)內容重定向轉存到test.txt文件中 #若是test.txt文件已存在,則覆蓋 $ ls -al ~ > ~/test.txt #屏幕本應該顯示的標準輸出內容重定向轉存到test.txt文件中 (數據累加而不覆蓋) $ ls -al ~ >> ~/test.txt #將標準輸出內容重定向到test.txt中,標準錯誤輸出則重定向到test2.txt中,均爲累加方式而非覆蓋 $ ls -al /test/ >> ~/test.txt 2>> ~/test2.txt #將標準輸出內容與標準錯誤輸出內容均重定向至test.txt中,累加方式 $ find /home/ -name "test.txt" &>> ~/test.txt #正確寫法 $ find /home/ -name "test.txt" >> ~/test.txt 2>>&1 #正確寫法 $ find /home/ -name "test.txt" >> ~/test.txt 2>> ~/test.txt #錯誤寫法 #將標準錯誤輸出內容丟棄,只在屏幕上顯示標準輸出內容 $ find /home/ -name "test.txt" 2> /dev/null
<的做用:用文本文件內容或設備來源代替鍵盤輸入 less
<<的做用:結束輸入 (不經常使用) spa
舉例說明: code
#建立一個文本文件test3.txt,內容爲 /home/lsy/,以 end 爲結束輸入 $ cat > test3.txt << "end" > /home/lsy/ > end 在此處按下回車 $ 查看當前目錄下,存在test3.txt文件 #下面這條命令的執行效果同 ls -al /home/lsy/ $ ls -al < test3.txt
管道|用於鏈接兩個命令,即以「|」左邊命令的標準輸出,做爲右邊命令的標準輸入,以下所示: htm
command1 | command2 | command3 stdout1 => stdin2 stdout2 => stdin3
管道命令只會處理標準輸出,而對於標準錯誤輸出則會忽略。並且,管道右邊的命令,必需可以接收標準輸入,如less、more、grep、cut等命令,而ls、cp、mv等命令不能接收標準輸入,於是不能放在管道右邊。 ip
舉個例子: get
rpm -qa --last | less #用less來查看顯示結果
命令tee能夠截獲標準輸出 (不能截獲標準錯誤輸出),傳給一個文件或設備,同時保留做爲標準輸出繼續交給下一步處理。用法以下: 博客
tee [-a] file/device -a : 以累加的方式,將數據流加入file中 #將 ls -al 的執行結果以累加方式保存至test.txt中,並顯示在屏幕上 $ ls -al | tee -a test.txt #將 ls -al 的執行結果以累加方式保存至test.txt中,並顯示在屏幕上(用less命令查看) $ ls -al | tee -a test.txt | less #將 ls -al 的執行結果分別保存至test.txt、test2.txt中,均以累加方式寫入 $ ls -al | tee -a test.txt >> test2.txt