關於》 2 2 1等重定向的詳細解釋!

2021-05-11 08:57:52 字數 2143 閱讀 4614

在posix shell中,命令的結果可以通過%>;的形式來定義(其中%表示檔案描 述符:1為標準輸出stdout、2為標準錯誤stderr)!系統預設%值是1,也就是1>;,而1>;可以簡寫為》;,也就是預設 為》;。而stdout的預設目標是終端(這點不用驗證吧)。另外,stderr的預設目標我個人認為也是終端,比如:

#abcddcba

sh: abcddcba: not found.

錯誤資訊顯示在終端上(對於telnet、dtterm等,那就說虛擬終端了)。

**********====實驗環境**********====

#mkdir redtest

#cd redtest

#mkdir a4

#touch a1 a2 a3 

**********====簡單試驗**********====

#ls >;redout.lst (等同於ls 1>;redout.lst,標準輸出重定向)

系統先執行》;redout.lst,生成乙個空檔案,然後系統執行ls,再把結果重定向到redout.lst。這時在終端看不到任何資訊,但是#more redout.lst可以看到a1、a2、a3、a4和redout.lst。

#./ourgame 2>;rederr.lst (標準錯誤重定向)

因為系統找不到執行指令碼ourgame,產生錯誤,但並不是顯示在終端上,而是把錯誤資訊重定向到了rederr.lst。

#more rederr.lst

sh: ourgame: not found.

**********====組合試驗**********====

#rm rederr.lst

#rm redout.lst

#vi conj

#!/usr/bin/sh

#email:[email protected]

for fn in `ls`

doif [[ -f $fn ]]

then

echo $fn

else

cp $fn $fn.new

fidone

//conj的作用是執行以後產生標準輸出(echo)和標準錯誤(cp)

#chmod 755 conj

看看一下命令的結果:

#./conj 

a1 //stdout

a2 //stdout

a3 //stdout

cp: a4: is a directory. need "-r" option.//stderr

conj //stdout

再試試重定向的結果:

(1)、輸出重定向到檔案a1,終端上只能看到標準錯誤:

#./conj >;a1

#./conj 1>;a1

#more a1 

a1a2

a3conj

(2)、錯誤重定向到檔案a1,終端上只能看到標準輸出:

#./conj 2>;a1

#more a1

cp: a4: is a directory. need "-r" option.

(3)、把標準輸出和標準錯誤都重定向到a1,終端上看不到任何資訊:

#./conf >;a1 2>;&1 (等同於#./conf 1>;a1 2>;&1)

#more a1

a1a2

a3cp: a4: is a directory. need "-r" option.

conj

//其中&的意思,可以看成是「the same as」、「與...一樣」的意思。本例中就是2>;和1>;一樣,都輸出到a1中。

再看乙個例子:

#./conj 2>;&1 >;a1

同樣可以解釋為2>;和1>;一樣,但是這時1>;是系統預設輸出到終端,所以標準錯誤也輸出到終端;然後,系統把標準輸出重定向到檔案a1。

記得unixpianpianmm有個問題:

echo "usage $0 -d" >;&2

那麼可以解釋為echo "usage $0 -d" 1>;&2

也就是把結果輸出到和標準錯誤一樣;之前如果有定義標準錯誤重定向到某log檔案,那麼標準輸出也重定向到這個log檔案。

以上指令碼在hp-ux11.00 l2000通過!所有定義、名詞均建立在本人的實踐和本人所了解的知識上,如有錯誤,請指正,謝謝!!!

關於重定向的問題

1.標準輸入的控制 語法 命令 檔案將檔案做為命令的輸入。例如 mail s mail test wesongzhou hotmail.com file1 將檔案file1 當做信件的內容,主 題名稱為mail test,送給收信人。2.標準輸出的控制 語法 命令 檔案將命令的執行結果送至指定的檔案...

詳細介紹linux重定向的使用

linux重定向是指修改原來預設的一些東西,對原來系統命令的預設執行方式進行改變,比如說簡單的我不想看到 在顯示器的輸出而是希望輸出到某一檔案中就可以通過linux重定向來進行這項工作。linux預設輸入是鍵盤,輸出是顯示器。你可以用重定向來改變這些設定。比如用wc命令的時候本來是要手動輸入一篇文本...

關於cmd命令的重定向輸出

jw72jw 命令通過 的形式來定向輸出,表示檔案描述符 1為標準輸出stdout,1 簡寫為 2為標準錯誤stderr。需要直接與重定向符號結合使用。比如 2 1表示stderr輸出到stdout 應用例項 將結果輸出到result.txt net stop myservices result 2...