輸入/輸出重定向
Linux系統通常從一個叫標准輸入的地方讀取輸入並且將一個命令的結果以寫入到標准輸出反饋給我們;默認情況下,這也是我們使用的終端(命令行)。如果我們想改變輸入和輸出的方式,就需要使用重定向。通常重定向命令有如下幾種方式:
命令 | 說明 |
---|---|
command > file | 將輸出重定向到 file。 |
command < file | 將輸入重定向到 file。 |
command >> file | 將輸出以追加的方式重定向到 file。 |
n > file | 將文件描述符為 n 的文件重定向到 file。 |
n >> file | 將文件描述符為 n 的文件以追加的方式重定向到 file。 |
n >& m | 將輸出文件 m 和 n 合並。 |
n <& m | 將輸入文件 m 和 n 合並。 |
<< tag | 將開始標記 tag 和結束標記 tag 之間的內容作為輸入。 |
需要注意的是:
文件描述符 0 通常是標准輸入(STDIN)
1 是標准輸出(STDOUT)
2 是標准錯誤輸出(STDERR)
例1:輸出重定向
!/bin/bash echo "stdout redirection" > myfile #將標准輸出 "stdout redirection" 重定向的文件 “myfile” echo "stdout redirection again" >> myfile # ">>" 表示將重定向的內容附加到文件,不會覆蓋掉之前的內容
例2:輸入重定向
!/bin/bash echo < myfile #將輸出“myfile” 文件的內容
Here Document
它的作用是將兩個 EOF 之間的所有內容當成一個整體文本進行處理,語法:
command << EOF
document
EOF
舉例:
#!/bin/bash cat << EOF my name is Jim, I am 22 years old!! EOF
output: my name is Jim, I am 22 years old!!