檔案描述符
0 輸入流
1 正確輸出流
2 報錯輸出
重定向和檔案描述符之間不能有空格
輸出流:
重定向(>>,追加模式)
ls -l / 1>>ls.txt 將根目錄輸出到ls.txt檔案
覆蓋重定向(>)
ls -l / 1> ls.txt 將etc中的內容輸出到ls.txt檔案並覆蓋原檔案內容
報錯輸出
ls -l /god 因為沒有這個檔案,會輸出錯誤資訊
ls -l /god 2>ls02.txt 將此錯誤資訊輸出到ls02.txt檔案中,檔案內容為ls: cannot access /god: no such file or directory
將標準輸出和錯誤輸出都輸入到檔案中
方法一: 寫到不同檔案
ls -l / /god 1>ls03.txt 2>ls04.txt 檔案描述符要對應標準輸出和錯誤輸出的檔案,不能打亂順序
方法二: 寫到相同檔案
ls -l / /god 1>ls05.txt 2>>ls05.txt 將一種重定向改為追加模式
方法三:將檔案描述符指向另乙個檔案描述符
檔案描述符有方向性,會從左往右依次執行
ls -l / /god 1>ls07.txt 2>&1 &捨棄,bash會將1解釋成檔案,所以要新增上
ls -l / /god 2>&1 1>ls07.txt 從左到右執行,會先將錯誤輸出指向標準輸出,而此時標準輸出指向螢幕,所以會將錯誤輸出列印到螢幕上
方法四:
ls -l / /god >& ls07.txt 將錯誤輸出和標準輸出都輸出到乙個檔案,也可以將》&變成&>
輸入流(read):
開啟乙個輸入並阻塞,等待使用者輸入(read),對換行符敏感
read sxt 會阻塞,等待輸入到變數sxt中,enter鍵結束
《後接待輸入內容
read sxt 0<<<"hello" 將字串放到程式的輸入流裡
《後接輸入停止符,加了雙引號則以雙引號內的內容為停止符,未加則以該符串未輸入停止符
只會輸入第一次換行前的內容
read sxt 0<兼備輸入輸出流(cat)
cat會將停止符之間的內容輸出到螢幕,對換行符不敏感
cat 0<exec
將乙個程式覆蓋當前程序,即將此程式壓棧,如果程式執行完是退出,則會讓核心觸發,將整個程序銷毀,斷開連線
-8 檔案描述符,可換成其他自定義數字
-<> 重定向操作符,輸入輸出
-/dev/tcp/www.baidu.com/80 虛擬檔案系統
當前bash裡面多了乙個8號檔案描述符,指向了乙個socket, /dev/tcp/www.baidu.com/80為特殊目錄,觸發乙個核心
2、http協議請求頭
echo -e "get / http/1.0\n" -e使得bash能識別換行符
讀取響應資訊
cat 0<&8
Shell重定向與exec
首先我們需要知道exec是什麼,exec是linux下面乙個建立程序的方法,詳情請參考 fd說明 0stdin,標準輸入 1stdout,標準輸出 2stderr,標準錯誤輸出 檢視檔案描述符 ll proc fd 關閉標準輸出 n 表示將 n 號輸出關閉 述所有形式都可以前導乙個數字,此時建立的檔...
Bash內建命令exec和重定向
bash內建命令exec重定向 bash內建命令exec可以替換當前程式而不需要啟動乙個新的程序,可以改變標準輸入和輸出而不需要啟動乙個新的子程序。如果檔案用exec開啟,read命令就會把檔案指標每次指向下一行直到檔案的末尾,如果要重新從檔案開始讀取,則必須把檔案關閉再重新開啟。1 替換當前she...
重定向 C語言實現重定向
本題是c primer plus 5版 第8章程式設計題第一道題,題目如下 從題述來看,有如下幾個關鍵點 有這麼乙個文字檔案 讀入檔案中的文字 統計檔案中字元數 判斷檔案的結尾 以上4點都做到了,此題解完。那麼,這4步的每一步該如何解決呢?1.有這麼乙個文字檔案 這個好解決,事先建立好乙個文字檔案,...