IO重定向改變标準輸出的位置:分為輸出重定向和輸出重定向。
1.覆寫重定向 >
>:将目标檔案内的源内容覆寫掉。執行不存在的檔案,既可以建立新檔案。
範例:
# cat 1.txt
11111111111111111111
22222222222222222222
# echo -e "aaaaaaaaaaaaa\nbbbbbbbbbbbbb" > 1.txt
aaaaaaaaaaaaa
bbbbbbbbbbbbb
2.追加重定向 >>
>>:在原檔案内容後面追加新内容。
# echo -e "11111111111111111111\n22222222222222222222" >> 1.txt
3.拒絕覆寫重定向 set -C
執行指令:set -C 之後,再執行覆寫重定向到已有檔案,就會報錯。執行追加重定向沒有影響。執行指令:set +C即可取消。
覆寫失敗
# set -C
# echo -e "11111111111111111111\n22222222222222222222" > 1.txt
-bash: 1.txt: cannot overwrite existing file
追加成功。
取消set
# set +C
# echo "aaaaaaa" > 1.txt
aaaaaaa
4.錯誤重定向 2> 2>>
2>:錯誤覆寫重定向。
2>>:錯誤追加重定向。
如果指令執行錯誤,會有錯誤資訊,錯誤重定向可以把錯誤資訊,重定向到其他檔案中。
# cat 3 1.txt
cat: 3: 沒有那個檔案或目錄
# cat 3 1.txt 2> 2.txt
# cat 2.txt
5.标準和錯誤輸出到不同的位置
不管執行的正确與錯誤,都不想在螢幕上顯示内容,可以把标準和錯誤輸出到不同的檔案中去。
錯誤重定向到 2檔案。标準重定向到 2.txt檔案,适用于前面 1到4章符号。
# cat 1 1.txt
cat: 1: 沒有那個檔案或目錄
# cat 1 1.txt 2>2 >2.txt
# cat 2 2.txt
6.标準和錯誤輸出到一個位置
其實在腳本運作中,不需要提示标準輸出和錯誤輸出,隻需要執行指令傳回值 $? 即可。把這些資料量放到"黑洞"裡 /dev/nell 中,如果想保留就指定一個檔案。
&>:合并覆寫重定向 > 加上 2> 等于 &>
&>>:合并追加重定向 >> 加上 2>> 等于 &>>
cmd > file 2>&1:合并覆寫重定向
cmd >> file 2>&1:合并追加重定向
意思就是錯誤輸出和标準輸出一樣的意思。
範例1:
# cat 2 2.txt &>3
# cat 3
# cat 2 2.txt &>>3
範例2:
# cat 2 2.txt >3 2>&1
# cat 2 2.txt >>3 2>&1
7.輸入重定向
<:把資料流遞交給前面的指令處理。
檔案内容:
hello
cat範例1:
# cat < 1.txt
tr範例2:
# tr [he] [HE] < 1.txt
HEllo
8.here document的用法 <<
here document:是一種特殊的重定向方式,他将關鍵字中間的内容作為參數,傳遞給指令。
cat << EOF
> xxxxxx
> EOF
關鍵字EOF是可被替換的。
一定要頂格寫,前面不可以有空格。
關鍵字不會輸出。
cat << EOF >file.txt
會把關鍵字之間的内容寫到file.txt檔案中,常用于腳本裡面建立檔案。
因為第一個關鍵字EOF前面有一個空格。
# cat << EOF
> hello
> HELLO
> EOF
HELLO
EOF
# cat << EEE >1.txt
> EEE