linux 重定向命令


標准輸入,輸出和錯誤
---------------------------------
文件文件                描述符
---------------------------------
輸入文件—標准輸入       0
輸出文件—標准輸出       1
錯誤輸出文件—標准錯誤   2
---------------------------------

 

 

 

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". 
 55 
 56 
 57 
 58       # 重定向stderr, 一次一行. 
 59       ERRORFILE=script.errors
 60 
 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 
 68 
 69 
 70    2>&1
 71       # 重定向stderr到stdout. 
 72       # 將錯誤消息的輸出, 發送到與標准輸出所指向的地方. 
 73 
 74    i>&j
 75       # 重定向文件描述符ij. 
 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 
 89 
 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.67890
102       # 隨機訪問. 
103 
104 
105 
106    |
107       # 管道. 
108       # 通用目的處理和命令鏈工具. 
109       # 與">", 很相似, 但是實際上更通用. 
110       # 對於想將命令, 腳本, 文件和程序串連起來的時候很有用. 
111       cat *.txt | sort | uniq > result-file
112       # 對所有.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 <&-    把關閉標准輸入


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM