來表示。0、1和2分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤信息輸出,可以用來指定需要重定向的標(biāo)準(zhǔn)輸入或輸出,比如2>a.txt表示將錯誤信息輸出到文件a.">
linux shell(bash) 重定向技巧

linux shell(bash) 重定向技巧

ID:6722948

大小:35.00 KB

頁數(shù):4頁

時間:2018-01-23

linux shell(bash) 重定向技巧_第1頁
linux shell(bash) 重定向技巧_第2頁
linux shell(bash) 重定向技巧_第3頁
linux shell(bash) 重定向技巧_第4頁
資源描述:

《linux shell(bash) 重定向技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、LinuxShell(bash)重定向技巧linux環(huán)境中支持輸入輸出重定向,用符號<和>來表示。0、1和2分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤信息輸出,可以用來指定需要重定向的標(biāo)準(zhǔn)輸入或輸出,比如2>a.txt表示將錯誤信息輸出到文件a.txt中。同時,還可以在這三個標(biāo)準(zhǔn)輸入輸出之間實現(xiàn)重定向,比如將錯誤信息重定向到標(biāo)準(zhǔn)輸出,可以用2>&1來實現(xiàn)。Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。這一點非常有用,當(dāng)我們不需要回顯程序的所有信息時,就可以將輸出重定向到/dev/null。如果想要正

2、常輸出和錯誤信息都不顯示,則要把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤都重定向到/dev/null,例如:#ls1>/dev/null2>/dev/null還有一種做法是將錯誤重定向到標(biāo)準(zhǔn)輸出,然后再重定向到/dev/null,例如:#ls>/dev/null2>&1注意:此處的順序不能更改,否則達不到想要的效果,此時先將標(biāo)準(zhǔn)輸出重定向到/dev/null,然后將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出,由于標(biāo)準(zhǔn)輸出已經(jīng)重定向到了/dev/null,因此標(biāo)準(zhǔn)錯誤也會重定向到/dev/null.1.標(biāo)準(zhǔn)輸入的控制語法:命令<文件將文件做為命令的輸入。例如:mail-s“mailtest”we

3、songzhou@hotmail.com文件將命令的執(zhí)行結(jié)果送至指定的文件中。例如:ls-l>list將執(zhí)行“l(fā)s-l”命令的結(jié)果寫入文件list中。語法:命令>!文件將命令的執(zhí)行結(jié)果送至指定的文件中,若文件已經(jīng)存在,則覆蓋。例如:ls-lg>!list將執(zhí)行“l(fā)s-lg”命令的結(jié)果覆蓋寫入文件list中。語法:命令>&文件將命令執(zhí)行時屏幕上所產(chǎn)生的任何信息寫入指定的文件中。例如:ccfile1.c>&error將編譯file1.c文件時所產(chǎn)

4、生的任何信息寫入文件error中。語法:命令>>文件將命令執(zhí)行的結(jié)果附加到指定的文件中。例如:ls-lag>>list將執(zhí)行“l(fā)s-lag”命令的結(jié)果附加到文件list中。語法:命令>>&文件將命令執(zhí)行時屏幕上所產(chǎn)生的任何信息附加到指定的文件中。例如:ccfile2.c>>&error將編譯file2.c文件時屏幕所產(chǎn)生的任何信息附加到文件error中。關(guān)于輸入、輸出和錯誤輸出在字符終端環(huán)境中,標(biāo)準(zhǔn)輸入/標(biāo)準(zhǔn)輸出的概念很好理解。輸入即指對一個應(yīng)用程序或命令的輸入,無論是從鍵盤輸入還是從別的文件輸入;輸出即指應(yīng)用程序或命令產(chǎn)生的一些信息;與Windows系

5、統(tǒng)下不同的是,Linux系統(tǒng)下還有一個標(biāo)準(zhǔn)錯誤輸出的概念,這個概念主要是為程序調(diào)試和系統(tǒng)維護目的而設(shè)置的,錯誤輸出于標(biāo)準(zhǔn)輸出分開可以讓一些高級的錯誤信息不干擾正常的輸出信息,從而方便一般用戶的使用。在Linux系統(tǒng)中:標(biāo)準(zhǔn)輸入(stdin)默認(rèn)為鍵盤輸入;標(biāo)準(zhǔn)輸出(stdout)默認(rèn)為屏幕輸出;標(biāo)準(zhǔn)錯誤輸出(stderr)默認(rèn)也是輸出到屏幕(上面的std表示standard)。在BASH中使用這些概念時一般將標(biāo)準(zhǔn)輸出表示為1,將標(biāo)準(zhǔn)錯誤輸出表示為2。下面我們舉例來說明如何使用他們,特別是標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出。輸入、輸出及標(biāo)準(zhǔn)錯誤輸出主要用于I/O的重定

6、向,就是說需要改變他們的默認(rèn)設(shè)置。先看這個例子:$ls>ls_result$ls-l>>ls_result上面這兩個命令分別將ls命令的結(jié)果輸出重定向到ls_result文件中和追加到ls_result文件中,而不是輸出到屏幕上。">"就是輸出(標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出)重定向的代表符號,連續(xù)兩個">"符號,即">>"則表示不清除原來的而追加輸出。下面再來看一個稍微復(fù)雜的例子:$find/home-namelost*2>err_result這個命令在">"符號之前多了一個"2","2>"表示將標(biāo)準(zhǔn)錯誤輸出重定向。由于/home目錄下有些目錄由于權(quán)限限制不能

7、訪問,因此會產(chǎn)生一些標(biāo)準(zhǔn)錯誤輸出被存放在err_result文件中。大家可以設(shè)想一下find/home-namelost*2>>err_result命令會產(chǎn)生什么結(jié)果?如果直接執(zhí)行find/home-namelost*>all_result,其結(jié)果是只有標(biāo)準(zhǔn)輸出被存入all_result文件中,要想讓標(biāo)準(zhǔn)錯誤輸出和標(biāo)準(zhǔn)輸入一樣都被存入到文件中,那該怎么辦呢?看下面這個例子:$find/home-namelost*>all_result2>&1上面這個例子中將首先將標(biāo)準(zhǔn)錯誤輸出也重定向到標(biāo)準(zhǔn)輸出中,再將標(biāo)準(zhǔn)輸出重定向到all_result這個文件中。這樣我

8、們就可以將所有的輸出都存儲到文件中了。為實現(xiàn)上述功能,還有一種簡便的寫法如下:$

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。