自學Linux Shell14.1-理解輸入輸出

點擊返回 自學Linux命令行與Shell腳本之路html

14.1-理解輸入輸出(點擊這裏得到更多)

兩種顯示腳本輸出的方法:linux

  • 在顯示器屏幕上顯示輸出
  • 將輸出重定向到文件中

1. 標準文件描述符

linux系統將每一個對象當作文件處理,這包括輸入和輸出進程。
linux系統用文件描述符來標示每一個文件對象。
文件描述符是一個非負整數,能夠惟一標識會話中打開的文件。
每個進程一次最多能夠有9個文件描述符,處於特殊的目的,bash shell保留了前3個文件描述符(0,1,2),以下:shell

文件描述符 縮寫 描述
0 STDIN 標準輸入
1 STDOUT 標準輸出
2 STDERR 標準錯誤輸出
  • <:    從文件中讀取內容。
  • >:    將內容插入到文件,每次插入前都會清空文件內容。
  • >>:  將內容插入到文件, 將內容追加到現有文件的末尾

1.1 STDIN bash

對於終端界面來講,標準輸入就是鍵盤。
shell從STDIN文件描述符對應的鍵盤得到輸入,在用戶輸入時處理每一個字符。
使用輸入重定向符號<時,linux會用重定向指定的文件來替代標準輸入文件描述符,它會讀取文件並提取數據,如同在鍵盤輸入的。
舉例1:
cat命令處理STDIN輸入的數據,輸入一個就顯示一個,按ctrl+c便可結束。
spa

舉例2:
也可經過使用輸入重定向符號 < 時,強制cat命令接受來自另外一個非STDIN文件的輸入,Linux會重寫向指定的文件來替換文字的輸入文件描述符。命令行

1.2 STDOUT 3d

在終端界面上,標準輸出就是終端顯示器。
shell的全部輸出會被定向到標準輸出中,也就是顯示器htm

舉例1:
使用輸出重定向 > 來改變輸出
對象

舉例2:
使用輸出重寫向 >> 能夠追加某個文件。blog

1.3 STDERR

Shell經過特殊的STDERR文件描述符來處理錯誤消息。標準的錯誤輸出。
shell或shell中運行的程序或腳本出錯時聲稱的錯誤消息都會發送到這個位置。
默認狀況下,錯誤信息的輸出也會顯示到顯示器的輸出中。

2. 重定向錯誤

有幾種辦法實現:
第一種: 只重定向錯誤。STERR文件描述符被設成2,ls 查看一個/home目錄不存在的文件將錯誤輸出到file文件,屏幕上不會顯示錯誤。

第二種:重寫向錯誤和數據,若是想重寫向錯誤和正常輸出,必須用兩個重寫向符號。STDOUT文件描述符被設爲1,STERR文件描述符被設成2。

第三種:  使用 &>  也能夠將STDOUT STDERR的輸出重定向到同一個輸出文件,且輸出的錯誤數據在最前面以便最近瀏覽錯誤信息

3. 重定向輸出

兩種方法在腳本中重定向輸出:

  • 臨時重定向行輸出
  • 永久重定向腳本中的全部輸出 exec命令

3.1 臨時重定向行輸出

默認狀況下,linux會將STDERR導向STDOUT。可是若是你在運行腳本時重定向了STDERR,腳本中全部導向STDERR的文本會被重定向。

3.2 永久重定向腳本中的全部輸出 exec命令

若是腳本中有大量數據須要重定向,那重定向echo語句就會很繁瑣,因此可使用exec命令,它告訴shell在腳本執行期間重定向某個特定文件描述符。

exec命令會啓動一個新shell將STDOUT文件描述符重定向到文件testout中。

相關文章
相關標籤/搜索