無論你是初入Linux殿堂的新手,還是久經沙場的老將,掌握尖括號及其相關用法,都將極大地提升你對這個強大操作系統的理解和運用能力
本文將深入探討Linux尖括號的多種用途,帶你領略其背后隱藏的技術魅力
一、重定向:數據流的魔法操控 提到Linux尖括號,首先不得不提的就是重定向(Redirection)功能
在Linux命令行中,尖括號用于改變標準輸入(stdin)、標準輸出(stdout)和標準錯誤輸出(stderr)的方向
這一特性允許用戶將命令的輸出保存到文件,或者將文件內容作為輸入傳遞給命令,從而實現了數據流的靈活控制
輸出重定向(> 和 ]): ->:將命令的輸出覆蓋寫入到一個文件中
如果文件已存在,其內容會被新輸出替換
-`]`:將命令的輸出追加到文件末尾,保留原有內容
例如,`ls > output.txt` 會將當前目錄下的文件和文件夾列表保存到`output.txt`文件中,而`echo Hello, World! ] output.txt`則會將字符串追加到該文件末尾
輸入重定向(<): -<:將文件內容作為命令的輸入
例如,`wc -l < input.txt`會計算`input.txt`文件中的行數,而無需直接在命令行中鍵入內容
重定向功能極大地增強了Linux命令的靈活性和實用性,使得數據處理和腳本編寫變得更加高效
二、進程替換:臨時文件的優雅替代 進程替換(Process Substitution)是Linux中另一個利用尖括號實現的強大特性
它允許用戶將命令的輸出或輸入視為一個臨時文件或管道,從而在復雜的數據處理場景中避免了創建中間文件的繁瑣
輸出進程替換(>(command)): - 在某些支持此特性的shell(如bash)中,可以將命令的輸出視為一個臨時文件,用于其他命令的輸入
例如,`diff <(sort file1.txt) <(sort file2.txt)`會先對`file1.txt`和`file2.txt`進行排序,然后比較排序后的內容,而無需在磁盤上創建排序后的臨時文件
輸入進程替換(<(command)): - 類似地,可以將命令的輸出作為另一個命令的輸入文件
進程替換不僅簡化了命令鏈的編寫,還提高了腳本的執行效率和可讀性,是現代Linux腳本編程中的一項重要技術
三、命令替換:捕獲命令輸出的藝術 雖然嚴格來說,命令替換使用的是反引號(`` `command```)或美元符號加圓括號(`$(command)`),但這一概念與尖括號密切相關,因為它同樣涉及到命令輸出的捕獲與利用
命令替換允許用戶將一個命令的輸出作為另一個命令的參數或字符串的一部分
反引號(`command`): - 這是早期Unix/Linux中常用的命令替換語法,雖然現在較少使用,但在一些舊腳本中仍可見到
美元符號加圓括號($(command)): - 這是更現代、更推薦的命令替換語法,它提供了更好的可讀性和嵌套支持
例如,`echo Todays date is$(date)`會在終端輸出當前日期,如“Todays date is Mon Oct 9 12:34:56 UTC 2023”
命令替換使得動態生成內容成為可能,極大地豐富了Linux命令行和腳本編程的表達能力
四、Shell腳本中的條件測試與模式匹配 在Shell腳本中,尖括號還出現在條件測試表達式中,用于比較數字或字符串的大小,以及進行模式匹配
數值比較: -`-lt`(小于)、`-le`(小于等于)、`-gt`(大于)、`-ge`(大于等于)等操作符常與雙尖括號`(( ))`一起使用,進行數值比較
例如,`if (( 5 > 3 )); then echo True; fi`會輸出“True”
字符串比較: - 在單中括號`【】`或雙中括號`【【】】`中,可以使用`<`和>進行字符串的字典序比較,但需注意轉義(`<`、>)或在雙中括號中直接使用
例如,`if 【【 apple < banana 】】