15- Shell腳本基礎(三)重定向

在了解重定向之前,我們先來看看linux 的文件描述符。

linux文件描述符:可以理解為linux跟蹤打開文件,而分配的一個數字,這個數字有點類似c語言操作文件時候的句柄,通過句柄就可以實現文件的讀寫操作。 用戶可以自定義文件描述符范圍是:3-num,這個最大數字,跟用戶的:ulimit –n 定義數字有關系,不能超過最大值。

linux啟動后,會默認打開3個文件描述符,分別是:標準輸入standard input 0,正確輸出standard output 1,錯誤輸出:error output 2

標準輸入、輸出、錯誤輸出

  • 標準輸入:從鍵盤輸入數據,即從鍵盤讀入數據。 0

  • 標準輸出:把數據輸出到終端上。1

  • 標準錯誤輸出:把標準錯誤輸出到終端上。2
    默認的標準輸入指的是鍵盤,默認的標準輸出與標準錯誤輸出指的是屏幕或者是終端。
    在Linux系統下,一切皆是文件,對文件的操作,一般要用到文件標識符。它們的文件標識符,分別為0,1,2.

重定向

  1. 輸出重定向
    輸出重定向比較好理解,標準輸出是輸出到屏幕上,我們可以把輸出寫入到一個指定的文件中。
    下面的命令就是把輸出重定向到file文件中,這里需要注意 > 和>>的區別,如果file中有內容,使用>會把file中的內容覆蓋,>>會在file的后面追加
ls -l > file
ls -a >> file
  1. 輸入重定向
    下面的命令是一個輸入重定向的例子,把file文件的內容作為wc -l命令的輸入。
wc -l < file

這里我有一個疑問就是,如果不使用重定向的話和使用重定向有啥區別呢

重定向

看上面的圖片
不使重定向的 輸出 5 file,重定向的輸出 5
這是因為,不使用重定向,命令可以獲取到輸入的文件,使用重定向之后,它僅僅知道從標準輸入讀取內容。

  1. Here document用法
    這表示一種寫法,也算是重定向的一種,還是使用wc命令來演示
here document
cat

這里的test叫做delimitor,這個意思就是把兩個delimitor之間的內容通過重定向傳給命令。當然這個delimitor可以使任意字符,只要是首尾相同就可以。

  1. Linux下輸出重定向的典型分析
# &1  &2  分別表示標準輸出和 標準錯誤輸出
ls -l > out 2>&1

意思是把命令 ls -l的標準輸出重定向到out文件中,另外標準錯誤輸出重定向到標準輸出中,因為標準輸出已經重定向到out文件了,所以錯誤輸出也輸出到out文件中。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數據革命閱讀 12,228評論 2 33
  • Ubuntu的發音 Ubuntu,源于非洲祖魯人和科薩人的語言,發作 oo-boon-too 的音。了解發音是有意...
    螢火蟲de夢閱讀 99,571評論 9 467
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • 本文筆記源自這里——[實驗樓]歡迎大家在下面交流其中有問題的地方喜歡請點收藏,每日更新(全部已親自實踐). 一. ...
    東皇Amrzs閱讀 4,043評論 7 54
  • 上周三(四月二十七日)早上,我聽「得到」專欄《馬徐駿·世界名刊速讀》。本期介紹了《大西洋月刊》4月刊的一篇文章,標...
    紫筠散思閱讀 818評論 0 2