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

2022-02-08 02:58:26 字數 2467 閱讀 4329

1 輸入輸出重定向

標準輸入:從終端得到命令,對於計算機來說,是從終端獲得了命令,執行完了以後,結果和執行狀態或者錯誤提示又會發回終端,這叫標準輸出。

輸入輸出重定向就是從終端以外的別的地方得到輸入,或者向終端以外的別的地方輸出。

命令和說明

command > file 將輸出重定向到 file。

command < file 將輸入重定向到 file。

command >> file 將輸出以追加的方式重定向到 file。

n > file 將檔案描述符為 n 的檔案重定向到 file。   #檔案描述符,可以理解為核心給開啟的檔案的標識,它和檔案不是一一對應的,0標準輸入,1標準輸出,2標準錯誤

n >> file 將檔案描述符為 n 的檔案以追加的方式重定向到 file。

n >& m 將輸出檔案 m 和 n 合併。

n <& m 將輸入檔案 m 和 n 合併。

<< tag 將開始標記 tag 和結束標記 tag 之間的內容作為輸入。

下面是詳解:

2 輸出重定向

輸出重定向一般在終端命令列裡的比較多,在指令碼比較少。

例項1:echo "hello linux!">t3.sh    (hello linux就跑到t3,.sh裡去了)想看的話需要cat t3.sh

例項2:

demofun()

demofun >t3.sh #這是我的第乙個 shell 函式! 就跑到t3.sh裡去了

3 輸入重定向

本來需要從鍵盤獲取輸入的命令會轉移到檔案讀取內容。

command < filename  意思是把c o m m a n d命令以f i l e n a m e檔案作為標準輸入

例項1:wc -l例項2:commed < infile > outfile,從檔案infile讀取內容,然後將輸出寫入到outfile中。

比如:sort name.out,

從name.txt中獲取檔案內容,排序以後輸出到name.out中

補充:重定向操作符

例子1:cat >> myfile 《例子2:

$ sort << el    #任意字元都可以,常見的是eof    #該命令的意思是把el和el之間的內容輸入重定向到sort

heredoc> 345

heredoc> 123

heredoc> ndj

heredoc> abd

heredoc> el

#輸出結果如下

123345

abdndj

4 重定向的原理

一般情況下,每個 unix/linux 命令執行時都會開啟三個檔案:

預設情況下,command > file 將 stdout 重定向到 file,command < file 將stdin 重定向到 file。

如果希望 stderr 重定向到 file,可以這樣寫:command 2>file

如果希望標準錯誤和標準輸出都重定向到乙個檔案中,可以這樣寫:

command >file 2>&1  #理解為把標準錯誤先重定向到標準輸出中,再把標準輸出重定向到file中。

5 /dev/null約等於黑洞

任何重定向到這個檔案:/dev/null的輸出,都不會有結果,因為它禁止輸出。

如果指令碼中有大量的輸出需要重定向,使用上面的臨時重定向方式就非常繁瑣,可以採用exec命令指定指令碼生命週期內的重定向檔案描述符,如下例子。

#!/bin/bash

# 在指令碼執行期間所有的標準輸出都會儲存到檔案syslog

exec

1>syslog #把所有的標準輸出全都輸出到syslog去

dir=/home/yarn/bash01

forfile

in $dir

/*do

if [ -d "$file" ]

then

echo "$file is a directory!"

fi

7 在指令碼中重定向輸入

#!/bin/bash

exec 0< filename #標準輸入來自filename,filename的內容是:hehe \n haha \n

while read line

do echo "from file parameter is $line"

done

#得到結果:

hehe

haha

通過exec命令把標準輸入裝置鍵盤重定向到檔案,將配置資訊寫入到檔案,在指令碼中迴圈讀取檔案中的資訊並賦值給變數並在指令碼執行期間引用。通過read命令可以從命令列讀取使用者輸入到的引數,當標準輸入重定向到檔案後,read命令同樣可以從檔案中讀取記錄。

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

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

Shell 輸入 輸出重定向

大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...

Shell 輸入 輸出重定向

大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...