linux 重定向 exec實現訪問百度主頁

2021-09-29 09:43:44 字數 1821 閱讀 9898

檔案描述符

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.有這麼乙個文字檔案 這個好解決,事先建立好乙個文字檔案,...