linux重新導向命令 標準輸入,輸出和錯誤---------------------------------檔案檔案 描述符---------------------------------輸入檔案—標準輸入 0輸出檔案—標準輸出 1錯誤輸出檔案—標準錯誤 2--------------------------------- 1.重新導向 COMMAND_OUTPUT > 2 # 將stdout重新導向到一個檔案. 3 # 如果這個檔案不存在, 那就建立, 否則就覆蓋. 4 5 ls -lR > dir-tree.list 6 # 建立一個包含分類樹列表的檔案. 7 8 : > filename 9 # >操作, 將會把檔案"filename"變為一個空檔案(就是size為0). 10 # 如果檔案不存在, 那麼就建立一個0長度的檔案(與'touch'的效果相同). 11 # :是一個預留位置, 不產生任何輸出. 12 13 > filename 14 # >操作, 將會把檔案"filename"變為一個空檔案(就是size為0). 15 # 如果檔案不存在, 那麼就建立一個0長度的檔案(與'touch'的效果相同). 16 # (與上邊的": >"效果相同, 但是某些shell可能不支援這種形式.) 17 18 COMMAND_OUTPUT >> 19 # 將stdout重新導向到一個檔案. 20 # 如果檔案不存在, 那麼就建立它, 如果存在, 那麼就追加到檔案後邊. 21 22 23 # 單行重新導向命令(只會影響它們所在的行): 24 # -------------------------------------------------------------------- 25 26 1>filename 27 # 重新導向stdout到檔案"filename". 28 1>>filename 29 # 重新導向並追加stdout到檔案"filename". 30 2>filename 31 # 重新導向stderr到檔案"filename". 32 2>>filename 33 # 重新導向並追加stderr到檔案"filename". 34 &>filename 35 # 將stdout和stderr都重新導向到檔案"filename". 36 37 M>N 38 # "M"是一個檔案描述符, 如果沒有明確指定的話預設為1. 39 # "N"是一個檔案名稱. 40 # 檔案描述符"M"被重新導向到檔案"N". 41 M>&N 42 # "M"是一個檔案描述符, 如果沒有明確指定的話預設為1. 43 # "N"是另一個檔案描述符. 44 45 #============================================================================== 46 47 # 重新導向stdout, 一次一行. 48 LOGFILE=script.log 49 50 echo "This statement is sent to the log file, \"$LOGFILE\"." 1>$LOGFILE 51 echo "This statement is appended to \"$LOGFILE\"." 1>>$LOGFILE 52 echo "This statement is also appended to \"$LOGFILE\"." 1>>$LOGFILE 53 echo "This statement is echoed to stdout, and will not appear in \"$LOGFILE\"." 54 # 每行過後, 這些重新導向命令會自動"reset". 58 # 重新導向stderr, 一次一行. 59 ERRORFILE=script.errors 61 bad_command1 2>$ERRORFILE # Error message sent to $ERRORFILE. 62 bad_command2 2>>$ERRORFILE # Error message appended to $ERRORFILE. 63 bad_command3 # Error message echoed to stderr, 64 #+ and does not appear in $ERRORFILE. 65 # 每行過後, 這些重新導向命令也會自動"reset". 66 #============================================================================== 67 70 2>&1 71 # 重新導向stderr到stdout. 72 # 將錯誤訊息的輸出, 發送到與標準輸出所指向的地方. 73 74 i>&j 75 # 重新導向檔案描述符i到j. 76 # 指向i檔案的所有輸出都發送到j. 77 78 >&j 79 # 預設的, 重新導向檔案描述符1(stdout)到j. 80 # 所有傳遞到stdout的輸出都送到j中去. 81 82 0< FILENAME 83 < FILENAME 84 # 從檔案中接受輸入. 85 # 與">"是成對命令, 並且通常都是結合使用. 86 # 87 # grep search-word <filename 88 90 [j]<>filename 91 # 為了讀寫"filename", 把檔案"filename"開啟, 並且將檔案描述符"j"分配給它. 92 # 如果檔案"filename"不存在, 那麼就建立它. 93 # 如果檔案描述符"j"沒指定, 那預設是fd 0, stdin. 94 # 95 # 這種應用通常是為了寫到一個檔案中指定的地方. 96 echo 1234567890 > File # 寫字串到"File". 97 exec 3<> File # 開啟"File"並且將fd 3分配給它. 98 read -n 4 <&3 # 唯讀取4個字元. 99 echo -n . >&3 # 寫一個小數點. 100 exec 3>&- # 關閉fd 3.101 cat File # ==> 1234.67890102 # 隨機訪問. 106 |107 # 管道. 108 # 通用目的處理和命令鏈工具. 109 # 與">", 很相似, 但是實際上更通用. 110 # 對於想將命令, 指令碼, 檔案和程式串聯起來的時候很有用. 111 cat *.txt | sort | uniq > result-file112 # 對所有.txt檔案的輸出進行排序, 並且重複資料刪除行. 113 # 最後將結果儲存到"result-file"中. command > filename 把標準輸出重新導向到一個新檔案中command >> filename 把標準輸出重新導向到一個檔案中(追加)command 1 > fielname 把標準輸出重新導向到一個檔案中command > filename 2>&1 把標準輸出和標準錯誤一起重新導向到一個檔案中command 2 > filename 把標準錯誤重新導向到一個檔案中command 2 >> filename 把標準輸出重新導向到一個檔案中(追加)command >> filename 2>&1 把標準輸出和標準錯誤一起重新導向到一個檔案中(追加)command < filename >filename2 把command命令以filename檔案作為標準輸入,以filename2檔案作為標準輸出command < filename 把command命令以filename檔案作為標準輸入command << delimiter 把從標準輸入中讀入,直至遇到delimiter分界符command <&m 把檔案描述符m作為標準輸入command >&m 把標準輸出重新導向到檔案描述符m中command <&- 把關閉標準輸入 2.雙向重新導向 即在重新導向資料到目標檔案的同時,還要保證資料能夠正常處理,使用tee命令。 tee [-a] file -a 往檔案尾新增內容 last | tee last_backup | cut -d " " -f 1 #tee相當於對last的結果備份了一次