1. 管道(|):將一個命令的輸出傳遞給另一個命令作為輸入。例如:
command1 | command2
在這個命令中,command1
的輸出會作為 command2
的輸入,直接將一個命令的輸出傳遞給另一個命令進行處理.?你可以使用 grep
來查找關鍵詞,然后使用 wc -l
來統計行數:
grep "keyword" test_file.txt | wc -l
2. 重定向(>、>>、<):用于將命令的輸出重定向到文件或從文件讀取輸入。例如:
command > file.txt # 將輸出寫入文件
command >> file.txt # 將輸出追加到文件
command < file.txt # 從文件中讀取輸入1. >: 將命令的標準輸出重定向到文件,如果文件不存在則創建,如果文件存在則覆蓋文件內容。象下面這條命令:echo "Hello, World!" > output.txt
它將創建一個名為 output.txt 的文件,其中包含 "Hello, World!"。
2. >>: 將命令的標準輸出重定向到文件,如果文件不存在則創建,如果文件存在則追加到文件末尾。例如,如果你想將命令的輸出追加到一個已存在的文件:
echo "out hello world text" >> output.txt
這將在 output.txt 文件末尾追加 "out hello world text"。
3. <: 將文件內容作為命令的標準輸入。例如,如果你有一個包含輸入內容的文件,你可以將其傳遞給命令:wc -l < input.txt
這將統計 input.txt 文件中的行數。
3. 組合命令(&&、||):在一行中執行多個命令,根據前一個命令的成功或失敗來決定是否執行后一個命令。例如:
command1 && command2 # 只有在command1成功時才執行command2
command1 || command2 # 只有在command1失敗時才執行command2
&&: 如果前一個命令成功執行(返回退出狀態碼為0),則執行下一個命令。例如,如果你想在成功創建一個文件后輸出成功消息:touch myfile.txt && echo "File created successfully."
上述命令首先嘗試創建文件 myfile.txt,如果成功,則執行 echo 命令輸出成功消息。||: 如果前一個命令未成功執行(返回退出狀態碼不為0),則執行下一個命令。例如,如果你想檢查文件是否存在,如果不存在則創建它:[ -f myfile.txt ] || touch myfile.txt
上述命令使用條件測試 [ -f myfile.txt ] 來檢查文件是否存在,如果文件不存在,則執行 touch 命令創建文件。這些命令組合使得可以根據前一個命令的執行結果來選擇執行下一個命令,從而實現一些靈活的腳本邏輯。
4.?后臺執行(&):將命令放在后臺執行,不阻塞終端,允許你繼續輸入其他命令。例如:
command &
假設你有一個長時間運行的任務 long_running_task.sh,你可以將其放在后臺執行,而不等待它完成:./long_running_task.sh &
這樣,你可以繼續在終端中輸入其他命令,而不必等待 long_running_task.sh 完成。需要注意的是,一旦你在后臺執行一個命令,它將不再在當前終端中顯示輸出。如果你希望查看后臺任務的輸出,可以將輸出重定向到文件中:./long_running_task.sh > output.log &
這將把任務的輸出寫入名為 output.log 的文件中。
5.?命令替換 $(command):將一個命令的輸出嵌入到另一個命令中。例如:
echo "Today is $(date)"
在這個例子中,date
命令的輸出將被嵌入到 echo
命令中,從而顯示包含當前日期的文本。
6.?反斜杠轉義(\):用于在命令中轉義特殊字符,使其不被解釋。例如:
echo "This is a line with a \n newline character."
在這個例子中,\n 表示一個新行字符。但是由于反斜杠的存在,Shell 不會將其解釋為一個新行,而是將其作為普通字符輸出。因此,上述命令將輸出:This is a line with a \n newline character.
而不是在字符 \n 處換行。這種轉義機制允許你在命令中使用特殊字符,而不讓Shell將其解釋為其原始含義。其他常見的需要轉義的字符包括空格、$、*等