linux 重定向命令linux
標準輸入,輸出和錯誤
---------------------------------
文件文件 描述符
---------------------------------
輸入文件—標準輸入 0
輸出文件—標準輸出 1
錯誤輸出文件—標準錯誤 2
---------------------------------shell
1.重定向app
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.67890
102 # 隨機訪問.
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 <&- 把關閉標準輸入排序
2.雙向重定向ip
即在重定向數據到目標文件的同時,還要保證數據可以正常處理,使用tee命令。字符串
tee [-a] fileit
-a 往文件尾添加內容ast
last | tee last_backup | cut -d " " -f 1 #tee至關於對last的結果備份了一次file