一 相關(guān)知識 1)默認地,標準的輸入為鍵盤(pán),但是也可以來(lái)自文件或管道(pipe |)。 2)默認地,標準的輸出為終端(terminal),但是也可以重定向到文件,管道或后引號(backquotes `)。 3) 默認地,標準的錯誤輸出到終端,但是也可以重定向到文件。 4)標準的輸入,輸出和錯誤輸出分別表示為STDIN,STDOUT,STDERR,也可以用0,1,2來(lái)表示。 5)其實(shí)除了以上常用的3中文件描述符,還有3~9也可以作為文件描述符。3~9你可以認為是執行某個(gè)地方的文件描述符,常被用來(lái)作為臨時(shí)的中間描述符。 二 實(shí)例 1)command 2>errfile : command的錯誤重定向到文件errfile。 2)command 2>&1 | ...: command的錯誤重定向到標準輸出,錯誤和標準輸出都通過(guò)管道傳給下個(gè)命令。 3)var=`command 2>&1`: command的錯誤重定向到標準輸出,錯誤和標準輸出都賦值給var。 4)command 3>&2 2>&1 1>&3 | ...:實(shí)現標準輸出和錯誤輸出的交換。 5)var=`command 3>&2 2>&1 1>&3`:實(shí)現標準輸出和錯誤輸出的交換。 6)command 2>&1 1>&2 | ...???? (wrong...) :這個(gè)不能實(shí)現標準輸出和錯誤輸出的交換。因為shell從左到右執行命令,當執行完2>&1后,錯誤輸出已經(jīng)和標準輸出一樣的,再執行1>&2也沒(méi)有意義。 三 "2>&1 file"和 "> file 2>&1"區別 1)cat food 2>&1 >file :錯誤輸出到終端,標準輸出被重定向到文件file。 2)cat food >file 2>&1 :標準輸出被重定向到文件file,然后錯誤輸出也重定向到和標準輸出一樣,所以也錯誤輸出到文件file。 四 注意 通常打開(kāi)的文件在進(jìn)程推出的時(shí)候自動(dòng)的關(guān)閉,但是更好的辦法是當你使用完以后立即關(guān)閉。用m<&-來(lái)關(guān)閉輸入文件描述符m,用m>&-來(lái)關(guān)閉輸出文件描述符m。如果你需要關(guān)閉標準輸入用<&-; >&- 被用來(lái)關(guān)閉標準輸出。 五 同時(shí)輸出到終端和文件 copy source dest | tee.exe copyerror.txt
發(fā)表評論