名稱 | 描述 | 程式碼 | 表示 |
---|---|---|---|
stdin | 標準輸入 | 0 | < 或 << |
stdout | 標準輸出 | 1 | > 或 >> |
stderr | 標準錯誤輸出 | 2 | 2> 或 2>> |
1>
- 以覆蓋
的方式將正確輸出輸出到指定位置(等同於>
)1>>
- 以追加
的方式將正確輸出輸出到指定位置(等同於>>
)2>
- 以覆蓋
的方式將錯誤輸出輸出到指定位置2>>
- 以追加
的方式將錯誤輸出輸出到指定位置&>
- 以覆蓋
的方式將正確輸出和錯誤輸出同時輸出到指定位置&>>
- 以追加
的方式將正確輸出和錯誤輸出同時輸出到指定位置2>&1
- 將錯誤輸出以正確輸出的形式輸出到指定位置<
- 將檔案裡的內容取代鍵盤作為新的輸入裝置<<EOF
- Here document
例子
將正確輸出重定向到檔案
[root@www ~]$ ls /etc > file
[root@www ~]$ ls /etc/ 1> file
將正確輸出追加重定向到檔案
[root@www ~]$ ls /etc >> file
[root@www ~]$ ls /etc/ 1>> file
將錯誤輸出重定向到檔案
[root@www ~]$ ls /etC 2> file
將錯誤輸出追加重定向到檔案
[root@www ~]$ ls /etC 2>> file
將正確輸出和錯誤輸出重定向到檔案
[root@www ~]$ ls /etc /etC &> file
[root@www ~]$ ls /etc /etC > file 2>&1
[root@www ~]$ ls /etc /etC 1> file 2>&1
將正確輸出和錯誤輸出追加重定向到檔案
[root@www ~]$ ls /etc /etC &>> file
[root@www ~]$ ls /etc /etC >> file 2>&1
[root@www ~]$ ls /etc /etC 1>> file 2>&1
輸入重定向
[root@www ~]$ cat test
date
[root@www ~]$/bin/bash test
2019年 02月 07日 星期四 09:14:10 CST
Here document
[root@www ~]$ cat << EOF >> test
Hello World.
EOF
注意
我們已知cmd >2 2>&1
的意思是,將 stdout
和 stderr
輸出到指定位置,那麼是不是可以用 cmd >a 2>a
代替?不!雖然cmd >a 2>&1
與 cmd >a 2>a
非常相似,但是這兩種是有區別的,前者只會開啟檔案一次,而後者會開啟兩次,在第二次開啟的時候,stderr
會覆蓋 stdout
,所以注意,這兩種是不一樣的。
---