Linux 資料重定向

劉合棟發表於2019-02-07
名稱 描述 程式碼 表示
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 的意思是,將 stdoutstderr 輸出到指定位置,那麼是不是可以用 cmd >a 2>a代替?不!雖然cmd >a 2>&1cmd >a 2>a 非常相似,但是這兩種是有區別的,前者只會開啟檔案一次,而後者會開啟兩次,在第二次開啟的時候,stderr 會覆蓋 stdout,所以注意,這兩種是不一樣的。






---

相關文章