ls.out 2> ls.err # cat ls.out fileA.tar.bz2 # ca。對(duì)話 UNIX: !$#@*%( 三 )。" />

日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

對(duì)話 UNIX: !$#@*%( 三 )


清單 4. 列出文件 fileA.tar.bz2 和 fileC.tar.bz2
# ls
fileA.tar.bz2fileAA.tar.bz2 fileB.tar.bz2fileBB.tar.bz2
# ls fileA.tar.bz2 fileC.tar.bz2 1> ls.out 2> ls.err
# cat ls.out
fileA.tar.bz2
# cat ls.err
ls: 0653-341 The file fileC.tar.bz2 does not exist.
在 AIX 中,對(duì) stdout 和 stderr 使用 > 和 >> 時(shí)應(yīng)用相同的規(guī)則 。例如,以后的測(cè)試可以使用相同的輸出文件,見 清單 5 。
清單 5. 使用輸出文件進(jìn)行以后的測(cè)試
# ls fileB.tar.bz2 fileD.tar.bz2 1>> ls.out 2>> ls.err
# cat ls.out
fileA.tar.bz2
fileB.tar.bz2
# cat ls.err
ls: 0653-341 The file fileC.tar.bz2 does not exist.
ls: 0653-341 The file fileD.tar.bz2 does not exist.
有時(shí)候,可能需要把 stdout 和 stderr 寫到同一個(gè)文件或設(shè)備 。這有兩種方法 。第一種方法是把 1> 和 2> 重定向到同一個(gè)文件:
# ls fileA.tar.bz2 fileC.tar.bz2 1> ls.out 2> ls.out
# cat ls.out
fileA.tar.bz2
ls: 0653-341 The file fileC.tar.bz2 does not exist.
第二個(gè)方法更簡(jiǎn)單更快速,有經(jīng)驗(yàn)的 Unix 用戶更喜歡采用這種方法:
# ls fileA.tar.bz2 fileC.tar.bz2 > ls.out 2>&1
# cat ls.out
fileA.tar.bz2
ls: 0653-341 The file fileC.tar.bz2 does not exist.
我們分解這個(gè)語句 。首先,執(zhí)行 ls fileA.tar.bz2 fileC.tar.bz2 。然后使用 > ls.out 把 stdout 重定向到 ls.out,使用 2>&1 把 stderr 重定向到前面重定向的 stdout(ls.out) 。
請(qǐng)記住,可以把輸出重定向到文件和其他設(shè)備 ??梢园褦?shù)據(jù)重定向到打印機(jī)、軟盤、終端類型(TTY)以及各種其他設(shè)備 。例如,如果希望把一個(gè)消息發(fā)送給所有會(huì)話(或 TTY)上的某個(gè)用戶,那么只需循環(huán)處理 who 并把一個(gè)消息重定向到 TTY(如果您有足夠的權(quán)限的話),見 清單 6 。
清單 6. 把消息重定向到一個(gè) TTY
# for _TTY in 'who | grep "cormany" | awk '{print $2}''
> do
>_TTY="/dev/${_TTY}"
>echo "Sending message to cormany on ${_TTY}"
>echo "Test Message to cormany@${_TTY}" > ${_TTY}
> done
Sending message to cormany on /dev/pts/13
Test Message to cormany@/dev/pts/13
Sending message to cormany on /dev/pts/14
stdin 而不是 stdout
盡管使用 > 和 >> 對(duì)于大多數(shù)人是一個(gè)相當(dāng)容易掌握的概念,但是有的人在使用小于號(hào)(< 和 <<)時(shí)常常有困難 。在考慮 > 和 >> 時(shí),認(rèn)為它們把左邊命令的輸出數(shù)據(jù)流移動(dòng)到右邊的目標(biāo)文件中,這樣最容易理解 。同樣的方法也適用于 < 和 << 。在使用 < 時(shí),本質(zhì)上是用一個(gè)已經(jīng)提供的 stdin 執(zhí)行一個(gè)命令 。也就是說,把已經(jīng)提供的數(shù)據(jù)提供給左邊的命令作為 stdin(即 <- ) 。
例如,假設(shè)希望把一個(gè)包含 ASCII 文本文件的電子郵件發(fā)送給另一個(gè)用戶 ??梢允褂霉艿腊?cat 的 stdout 重定向到 mail 的 stdin(即 cat mail_file.out | mail –s "Here's your E-mail!" acormany@yahoo.com),也可以把文件的內(nèi)容重定向到 mail 命令的 stdin:
# mail –s "Here's your E-mail!" acormany@yahoo.com < mail_file.out
使用 <<(也稱為 here-document)可以節(jié)省格式化時(shí)間,并且使命令執(zhí)行的處理更容易 。通過使用 <<,文本字符串被重定向到執(zhí)行的命令作為 stdin,但是可以繼續(xù)輸入信息,直到到達(dá)終止標(biāo)識(shí)符 。只需輸入命令,輸入 << 和終止標(biāo)識(shí)符,然后輸入需要的任何內(nèi)容,最后在一個(gè)新行上輸入終止標(biāo)識(shí)符 。通過使用 here-document,可以保留空格、換行等 。
例如,Unix 必須單獨(dú)處理下面五個(gè) echo 語句:
# echo "Line 1"
Line 1
# echo "Line 2"
Line 2
# echo "Line 3"
Line 3
# echo "Line 4"
Line 4
# echo "Line 5"
Line 5
可以用以下代碼替換多個(gè) echo 語句,UNIX 只需處理一次執(zhí)行:

推薦閱讀