shell程式設計之重定向

2022-02-03 15:22:02 字數 2209 閱讀 7495

一、重定向簡介

1.重定向基本概念:

計算機最基礎的功能是可以提供輸入輸出操作,常見的輸入輸出有鍵盤、滑鼠、掃瞄器等,對於linux系統來說,通常以鍵盤為預設輸入裝置,又稱標準輸入裝置;計算機常見的輸入裝置有顯示器、蜂鳴器、印表機等,而linux系統則以顯示器為預設輸出裝置,又稱標準輸出裝置。所謂「重定向」,就是將原本應該從標準輸入裝置(鍵盤)輸入的資料,改由其他檔案或裝置輸入;或將原本應該輸出到標準輸出裝置(顯示器)的內容,改而輸出到其他檔案或裝置上。、

2.檔案識別符號和標準輸入輸出

檔案識別符號是重定向中很重要的乙個概念,linux使用0到9的整數指明了與特定程序相關的資料流,系統在啟動乙個程序的同時會為該程序開啟三個檔案:標準輸入、標準輸出、標準錯誤輸出,分別用檔案識別符號0、1、2來標識。如果要為·程序開啟其他的輸入輸出,則需要從整數3開始標識。預設情況下,標準輸入為鍵盤,標準輸出和錯誤為顯示器。

i/o重定向

i/o重定向是重定向中的乙個重要部分,在shell程式設計中會有很多機會用到這個功能。簡單來說,i/o從重定向可以將任何檔案、命令、指令碼、程式或指令碼的輸出重定向到另外乙個檔案、命令、程式或指令碼。

i/o重定向常見符號和功能描述:

符號        含義

>     標準輸出覆蓋重定向:將命令的輸出重定向輸出到其他檔案

>>     標準輸出追加重定向:將命令的輸出重定向輸出到其他檔案中,同時會覆蓋檔案中的已有檔案

>&     標識輸出重定向:將乙個標識的輸出重定向到另乙個標識的輸入

<     標準輸入重定向:命令將從指定檔案中讀取輸入而不是從鍵盤輸入

|      管道:從乙個命令中讀取輸出並作為另乙個命令的輸入

1.標準輸出覆蓋重定向:>

使用標準輸出覆蓋重定向符號可以將原本輸出到顯示器上的內容重定向到乙個檔案中,比如使用ls -l可以列出指定目錄中檔案的詳細資訊,但是如果想把結果儲存檔案中以便日後檢視,則可以使用標準輸出覆蓋重定向符。

[root@cfhost-170820-ucnk ~]# ls -l /usr/ > ls_user.txt

#注意到回車後並沒有任何輸出,因為輸出被重定向到檔案中

[root@cfhost-170820-ucnk ~]# cat ls_user.txt#此檔案內容和ls -l /usr/命令輸出一致

total 68

dr-xr-xr-x 2 root root 20480 nov 26 16:32 bin

drwxr-xr-x 2 root root 4096 sep 23 2011 etc

drwxr-xr-x 2 root root 4096 sep 23 2011 games

drwxr-xr-x 33 root root 4096 nov 26 16:18 include

dr-xr-xr-x 12 root root 4096 nov 26 16:18 lib

dr-xr-xr-x 29 root root 12288 nov 26 16:18 lib64

drwxr-xr-x 7 root root 4096 nov 26 16:18 libexec

drwxr-xr-x 12 root root 4096 jun 9 2012 local

dr-xr-xr-x 2 root root 4096 nov 26 16:18 sbin

drwxr-xr-x 59 root root 4096 jun 9 2012 share

drwxr-xr-x 4 root root 4096 jun 9 2012 src

lrwxrwxrwx 1 root root 10 nov 26 14:25 tmp -> ../var/tmp

2.標準輸出追加重定向:>>

使用exec

exec是shell的內建命令,執行這個命令時系統不會啟動新的shell,而是用要被執行的命令替換當前的shell程序。因此假設在乙個shell中執行exec ls,則在列出當前目錄後該shell程序將會主動退出--如果使用ssh進行遠端連線,則當前連線也會在執行完這個命令後斷開。除此之外,exec還可以用於i/o重定向

exec < file 將file檔案種1的內容作為exec的標準輸入

exec >file 將file檔案作為標準輸出

exec3exec3 <&- 關閉檔案識別符號

exec3>file 將寫入指定檔案識別符號的內容寫入指定檔案(這裡的檔案是file)

exec4<&3 建立檔案識別符號3的拷貝4

shell程式設計 之 輸入輸出重定向

1 輸入輸出重定向 標準輸入 從終端得到命令,對於計算機來說,是從終端獲得了命令,執行完了以後,結果和執行狀態或者錯誤提示又會發回終端,這叫標準輸出。輸入輸出重定向就是從終端以外的別的地方得到輸入,或者向終端以外的別的地方輸出。命令和說明 command file 將輸出重定向到 file。comm...

網路程式設計之重定向

1 使用c r e a t e f i l e這個a p i函式,應用程式向本地作業系統提交乙個請求,要求開啟 m y s e r v e r m y s h a r e s a m p l e m p 3。2 根據從u n c路徑描述中獲得的資訊,本地 本機 作業系統的檔案系統判斷出該i o 輸入...

shell程式設計之輸入輸出重定向篇

command file 將輸入重定向到 file。command file 將輸出以追加的方式重定向到 file。n file 將檔案描述符為 n 的檔案重定向到 file。n file 將檔案描述符為 n 的檔案以追加的方式重定向到 file。n m 將輸出檔案 m 和 n 合併。n m 將輸入...