Linux中Shell重定向解析
在Linux系統(tǒng)下,默認(rèn)有三個(gè)文件定向描述符:標(biāo)準(zhǔn)輸入(standard input)、正確輸出(standard output)和錯(cuò)誤輸出(error output)。默認(rèn)情況下,輸入設(shè)備為鍵盤,輸
在Linux系統(tǒng)下,默認(rèn)有三個(gè)文件定向描述符:標(biāo)準(zhǔn)輸入(standard input)、正確輸出(standard output)和錯(cuò)誤輸出(error output)。默認(rèn)情況下,輸入設(shè)備為鍵盤,輸出設(shè)備為顯示器。而重定向則是指改變其默認(rèn)位置。
1. 輸出重定向
輸出重定向使用符號(hào)gt;表示覆蓋輸出。具體的命令方式為:COMMAND gt; POSITION。例如:
```
cat /etc/issue(默認(rèn)文件內(nèi)容輸出到顯示器上)
cat /etc/issue gt; /tmp/issue.txt(將其輸出重定向到/tmp文件下的issue.txt文件中,則屏幕上并不會(huì)顯示內(nèi)容)
cat /tmp/issue.txt(查看issue.txt文件內(nèi)容,默認(rèn)輸出到屏幕)
```
如果我們多次執(zhí)行`cat /etc/issue gt; /tmp/issue.txt`,但是issue.txt中只有一份信息,并沒有多余重復(fù)信息。這是因?yàn)間t;表示覆蓋輸出,每次執(zhí)行都會(huì)擦除原有內(nèi)容。
2. 追加輸出重定向
追加輸出重定向使用符號(hào)gt;gt;表示追加輸出。具體的命令方式為:COMMAND gt;gt; POSITION。例如:
```
我們多次執(zhí)行命令cat /etc/issue gt; /tmp/issue.txt,則在issue.txt中能看到多次追加的內(nèi)容。
```
3. 錯(cuò)誤重定向
錯(cuò)誤重定向也可以分為覆蓋輸出和追加輸出。具體的命令方式為:COMMAND 2gt; POSITION和COMMAND 2gt;gt; POSITION。例如:
```
普通狀態(tài)下錯(cuò)誤命令caat /etc/issue 2gt; 將輸出到顯示器上。
重定向后的錯(cuò)誤命令caat /etc/issue 2gt; 則被重定向至文件中。但是這種情況下,如果命令執(zhí)行正確了,那么將會(huì)被輸出到顯示器上。
```
4. 合并重定向
合并重定向可以使用符號(hào)amp;gt;表示。使用合并重定向時(shí),無論命令輸入正確與否,其輸入內(nèi)容都會(huì)被保存到指定位置。例如:
```
命令在運(yùn)行過程中,不管運(yùn)行是否正確,均被輸出到指定文件。
cat /etc/issue amp;gt; /tmp/issue.out
caat /etc/issue amp;gt; /tmp/issue.out
當(dāng)然,此處我們也可以使用COMMAND gt; POSITION 2amp;1來表示錯(cuò)誤輸出按照1的輸出方式輸出。
```
5. 分別重定向
分別重定向可以使用命令:COMMAND gt; POSITION1 2gt; POSITION2。如果命令執(zhí)行正確,則被輸出到POSITION1;如果執(zhí)行錯(cuò)誤,則被輸出至POSITION2。例如:
```
cat /etc/issue gt; /tmp/issue1 2gt; issue2
caat /etc/issue gt; /tmp/issue1 2gt; issue2
通過分別cat獲取其內(nèi)容后發(fā)現(xiàn)不同的執(zhí)行結(jié)果被定向到不同的輸出文件。
```