Posted on 2010-04-26 16:23
S.l.e!ep.¢% 閱讀(390)
評論(0) 編輯 收藏 引用 所屬分類:
DOS
重定向操作符 ( 管道命令 ):|、>、>> 、<、>&、<&
重定向操作符 |
說明
|
>
|
將命令輸出寫入到文件或設備(例如打印機)中,而不是寫在命令提示符窗口中。 |
<
|
從文件中而不是從鍵盤中讀入命令輸入。 |
>>
|
將命令輸出添加到文件末尾而不刪除文件中的信息。 |
>&
|
將一個句柄的輸出寫入到另一個句柄的輸入中。 |
<&
|
從一個句柄讀取輸入并將其寫入到另一個句柄輸出中。 |
|
|
從一個命令中讀取輸出并將其寫入另一個命令的輸入中。也稱作管道。 |
1、|
help | more
回車后會發現顯示滿一屏幕后就自動暫停,等候繼續顯示其他信息。當按寫回車時,變成一個一個的出現;按下空格鍵時一屏幕一屏幕顯示,直到全部顯示完為止;按其他鍵自動停止返回DOS。為什么會出現上述現象?答案很簡單,這里結合了管道命令|和DOS命令more來共同達到目的的。這里先簡單介紹一下help命令和more命令,對理解|命令的用法有很大幫助。
?
1.1、help命令。
其實這個命令是不需要多說的,但在上述例子中help命令的用法比較特殊,直接在DOS提示符下輸入help命令,結果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方用help命令,如輸入net help回車,則是顯示net命令的幫助信息。
1.2、more命令。
可能很多朋友以前就沒有接觸過這個命令,這個命令在Linux下的用處非常廣泛,也是管道命令之一。大家可以找一篇比較長的文章(a.txt)在DOS提示符下輸入如下兩個命令去比較一下差別:more a.txt和type a.txt。利用more命令,可以達到逐屏或逐行顯示輸出的效果,而type命令只能一次把輸出顯示完,最后的結果就是只能看到末尾的部分。在例十三里,more命令的作用就是讓輸出的信息逐屏或逐行顯示。看到這里,你是否已經能隱約感受到了|命令的作用了?沒錯,它的作用,就是把前一命令的輸出當后一命令的輸入來用的。在例十三里,前一命令的輸出,就是help命令執行后顯示的DOS所支持的所有非隱含命令,而這個結果剛好做了后一命令more的輸入。所以例十三和下面的例十四是等效的:
help > a.txt
more a.txt
del a.txt
這里利用另一管道命令>生成了一個a.txt文件作為中間環節,在用more命令查看a.txt文件后再刪除a.txt文件(例十三的所有好啊作是在內存中進行的,不生成文件)。可以看出,正確使用管道命令|可以帶來事半功倍的效果。結合例十三和例十四,以及前面的例九再體會一遍:|命令的作用,就是讓前一命令的輸出當做后一命令的輸入。
2、>、>>
這兩個命令的效果從本質上來說都是一樣的,他們都是輸出重定向命令,說的通俗一點,就是把前面命令的輸出寫入到一個文件中。這兩個命令的唯一區別是,>會清除掉原有文件中的內容后把新的內容寫入原文件,而>>只會另起一行追加新的內容到原文件中,而不會改動其中的原有內容。例十五:
echo @echo off > a.bat
echo echo This is a pipeline command example. >> a.bat
echo echo It is very easy? >> a.bat
echo echo Believe your self! >> a.bat
echo pause >> a.bat
echo exit >> a.bat
依次在DOS提示符下輸入以上各行命令,一行一個回車,將在當前目錄下生成一個a.bat文件,里面的內容如下:
@echo off
echo This is a pipeline command example.
echo It is very easy?
echo Believe your self!
pause
exit
看到這里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的寫入功能編輯一個文本,而不需要專門的文本編輯工具;2、管道命令>和>>的區別如上所述。如果這里只用>命令來完成上面好啊作,最后也會生成一個a.bat,但里面的內容就只剩下最后一行exit了。所以>和>>一般都聯合起來用,除非你重定向的輸出只有一行,那么就可以只用>了。結合例一再仔細體會輸出重定向管道命令>和>>的用法。
3、<、>&、<&
這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當然如果想仔細研究的話,可以自己查一下資料。
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。
>&,將一個句柄的輸出寫入到另一個句柄的輸入中。
<&,剛好和>&相反,從一個句柄讀取輸入并將其寫入到另一個句柄輸出中。
關于這三個管道命令的舉例,在后面批處理腳本的精妙應用中還將涉及到。
技術來源:http://hi.baidu.com/weishui123/blog/item/807acb00e7988d84e950cdd7.html