DOS重定向與管道

2021-06-06 09:44:11 字數 2745 閱讀 3578

我所知道的重定向和管道就這些了,寫了一早晨終於寫完了,現在接著睡,希望對大家有用。

這是我學習之中知道的一些關於重定向和管道的知識,並積累的資料,在這裡和大家分享。如果說的有不足和錯誤的地方,請指出。畢竟是交流資訊。我這裡是從dos和c語言方面看它,沒有太多涉及linux中所說的。我想從以下幾個方面敘述:

一、     重定向:

所謂重定向,就是不使用系統的標準輸入埠、標準輸出埠或標準錯誤埠,而進行重新的指定,所以重定向分為輸出重定向、輸入重定向和錯誤重定向(注:

stdin   0   標準輸入   鍵盤     命令在執行時所要的輸入資料通過它來取得  

stdout   1   標準輸出   顯示器   命令執行後的輸出結果從該埠送出  

stderr   2   標準錯誤   顯示器   命令執行時的錯誤資訊通過該埠送出   )。

通常情況下重定向到乙個檔案。重定向命令又稱轉向命令。其中錯誤重定向和輸出重定向有些類似,就不多說,學過c++可能會明白的多些。

所 謂輸出重定向指把執行相應dos命令時本應在螢幕上顯示的內容輸出到重定向命令所指向的檔案或裝置中去。輸出重定向命令 > 、>>。它們的區別是:如果你使用的是 > ,原檔案會被刪除,重新生成新的檔案,其內容如上所述;如果你使用的是 >> ,它以追加的方式,將命令的輸出寫入檔案的末尾,原檔案內容會被保留,新的內容會新增到原檔案件的內容的後面。主要用在某個命令的輸出很多,在螢幕上不能 完全顯示,就可把它重定向到乙個檔案中,稍後再用文字編輯器來開啟這個檔案。

輸入重定向使輸入資訊來自檔案。如果乙個名為file.com的檔案 c:>file 之後,執行file時所需的處理資訊就改為由檔案file讀入,這就是輸入重定向。小於號《是輸入重定向操作符,在《之後的檔名或裝置名是 重定向的輸入源。如果乙個程式時需要輸入較多資料,使用輸入重定向可以提高效率。在這裡要說一些過濾命令 more 、sort 和 find 。其中more進行分屏顯示;find 查詢符合條件的內容;sort(按行)排序。

例如:(我是在windows命令提示符中用的)

例1:  

more < f:\turboc2\readme 

more的輸入來自 c:\tc\readme 檔案內容多。這個命令與 

type f:\turboc2\readme | more 

作用相同,但更簡潔,效率也更高。

例2:(注cmd重定向進入後用exit返回原目錄)

cmd > file 把 stdout 重定向到 file 檔案中 

cmd >> file 把 stdout 重定向到 file 檔案中(追加) 

cmd 1> file 把 stdout 重定向到 file 檔案中 

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 檔案中 

cmd 2> file 把 stderr 重定向到 file 檔案中 

cmd 2>> file 把 stderr 重定向到 file 檔案中(追加) 

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 檔案中 

cmd < file >file2 cmd 命令以 file 檔案作為 stdin,以 file2 檔案作為 stdout

注:>&n 使用系統複製檔案描述符 n 並把結果用作標準輸出 

<&n 標準輸入複製自檔案描述符 n 

<&- 關閉標準輸入(鍵盤) 

>&- 關閉標準輸出 

n<&- 表示將 n 號輸入關閉 

n>&- 表示將 n 號輸出關閉

&> 同時實現輸出重定向和錯誤重定向

用 途:dos的標準輸入輸出通常是在標準裝置鍵盤和顯示器上進行的, 利用重定向,可以方便地將輸入輸出改向磁碟檔案或其它裝置。如在批處理命令執行期間為了禁止命令或程式執行後輸出資訊而擾亂螢幕, 可用dos重定向功能把輸出改向nul裝置(nul不指向任何實際裝置): c:\>copy a.txt b.txt > nul。命令執行結束不顯示"1 file(s) copied"的資訊。有的互動程式在執行時要求很多鍵盤輸入, 但有時輸入是固定不變的, 為加快執行速度, 可預先建立乙個輸入檔案,此檔案的內容為程式的鍵盤輸入項, 每個輸入項佔一行。假如有乙個程式cx 其輸入項全部包括在檔案in.dat中, 執行 c:\>cx nul 程式就自動執行。

二、     管道:

進 程從「管道」的一端傳送另一端接收,也就是說將若干命令用輸入輸出「管道」串接在一起,這就是管道;管道在某種程度上是輸入和輸出重定向的結合,前乙個命 令的輸出,作為下乙個命令的輸入,而不需要經過任何中間檔案。豎線字元「|」是管道操作符,管道命令經常與上面講的過濾命令聯合使用。dos的管道功能是 使乙個程式或命令的標準輸出用做另乙個程式或命令的標準輸入。如把debug的輸入命令寫入檔案aaa, 用type命令通過管道功能將aaa的內容傳輸給debug, 在debug執行期間不再從控制台索取命令引數, 從而提高了機器效率。命令為: c:\>type aaa|debug >bbb。

例如,這是我以前看到的例子。命令dir|more使得當前目錄列表在螢幕上逐屏 顯示。dir的輸出是整個目錄列表,它不出現在螢幕上而是由於符號「|」的規定,成為下乙個命令more的輸入,more命令則將其輸入,more命令則 將其輸入一屏一屏地顯示,成為命令列的輸出。再如命令dir|find」hello」>file,其中 dir的輸出是當前目錄列表,不出現在螢幕上而是成為find命令的輸入。find命令在輸入檔案中尋找指定字串"hello"並輸出包含這個字串的 行,由於輸出重定向符號》的規定,最後的輸出已存入檔案file,不出現在螢幕上。命令dir|find"< dir >file則是將當前目錄項中的子目錄項尋找出來並存入檔案file中。

管道與重定向

目錄 重定向 轉換和刪除字元 tr 從檔案中匯入 stdin 把多行傳送給 stdin 管道 重定向到多個目標 先說什麼是標準輸入輸出,我們從鍵盤上敲擊,然後輸入到我們的電腦中,這是標準的輸入,那麼什麼是標準輸出呢,我們在經過一系列正確的操作得到的能在螢幕上顯示出來的輸出是標準輸出。那不正確的操作產...

管道與》重定向

命令 可以將乙個命令的輸出作為另乙個命令的輸入。rpm qa grep licq 這條命令使用乙個管道符 建立了乙個管道。管道將rpm qa命令的輸出 包括系統中所有安裝的rpm包 作為grep命令的輸入,從而列出帶有licq字元的rpm包來。命令 提供了兩個程序之間通訊的途徑。表示將結果輸入到乙個...

管道與重定向

在linux中大多數命令都很簡單,為了完成複雜的操作,我們需要將這些命令組合使用。linux中絕大多數的命令都是返回純文字格式的資料,而命令的輸入格式也是純文字,這就讓命令的組合呼叫成為可能。管道和重定向機制就是為了多命令的協作工作。命令列shell的資料流有如下定義 名稱說明 編號預設 stdin...