Linux Shell重定向介紹

2021-10-02 10:58:17 字數 1275 閱讀 4319

可以理解為linux跟蹤開啟檔案,而分配的乙個數字,這個數字類似c語言操作檔案時候的控制代碼,通過控制代碼就可以實現檔案的讀寫操作。使用者可以自定義檔案描述符範圍:3-num     (ulimit -n) 

linux啟動後,會預設開啟3個檔案描述符,分別是:

以後開啟檔案,新增檔案繫結描述符可以一次增加

一條shell命令執行,都會繼承父程序的檔案描述符。因此,所有執行的shell命令,都會有預設3個檔案描述符。

對於任何一條linux命令執行的過程: file(key board) --standard input --> command --standard output--> file/device

--standard error-->  file/device

command-line1 [1-n] > file或檔案操作符或裝置   -> 將一條命令執行結果(stdout,stderrr本來要列印到螢幕上面的)重定向到其它輸出裝置

ls test.sh test1.sh   ----ls:test1.sh: 沒有這個檔案和目錄

ls test.sh test1.sh 1>suc.txt 2>err.txt

ls test.sh test1.sh 2>&- test.sh  ---&[n]代表已經存在的檔案描述符,&1代表輸出,&2代表錯誤輸出,&-代表關閉與它繫結的描述符

ls test.sh test1.sh 2>/dev/null test.sh  ---- /dev/null 即為空,黑洞:吞噬一切資訊

ls test.sh test1.sh 2>/dev/null 1>/dev/null 

ls test.sh test1.sh /dev/null 2>&1  ---將錯誤輸出2繫結給正確輸出1,然後將正確輸出傳送給 /dev/null裝置 *******

ls test.sh test1.sh &>/dev/null   ----&代表所有輸出

#   shell遇到'>'操作符,會先判斷右邊檔案是否存在,如果存在先刪除,並建立新檔案

#   ">>"操作符,判斷右邊檔案,如果不存在則建立。如存在則以新增方式開啟檔案

#   一條命令在執行前,會先檢查裝置輸出是否正確,如果輸出裝置錯誤,將不會進行命令執行

shell:   ret=$?

if [ $ret -eq 0 ] ; then

...

-> $?是shell變數,表示最後一次執行命令的退出狀態,0為成功,非0為失敗

'' : 單引號中巢狀單引號可使用變數  'echo '$var' is ...'

linux Shell的重定向

在網上搜尋一圈,清楚明了的解釋還是 1 command file 不覆蓋,追加 debian69 algoandsturct ls l test debian69 algoandsturct cat test 總用量 384 drwxr xr x 12 4096 12月 25 14 41 algo ...

linux shell重定向總結

command line1 1 n file或檔案操作符或裝置 command line1 1 n file或檔案操作符或裝置 ls test.sh test1.sh 1 suc.txt 2 err.txt ls test.sh test1.sh 1 suc.txt 2 err.txt exec 3...

Linux Shell之IO重定向

一 io裝置 io是指資料的 端與資料的目的端,分別稱為標準輸入 標準輸出 及標準錯誤輸出。程式不必關心裝置的問題,無論是檔案 終端 磁帶機等。在linux預設情況下,會讀取標準輸入 寫入標準輸出,並將錯誤傳遞到標準錯誤輸出。預設情況下標準輸入 輸出 錯誤都是終端。通過下面可知 cat input ...