那些我自己了解的重定向

2021-06-08 20:24:43 字數 2746 閱讀 3056

那些我自己了解的重定向

**:在學習shell的時候,重定向真的很重要,但是複雜一點的重定向就是太難搞懂了,我good 朋友在看《shell學習指南》161頁的時候,問了我如下**的意思:(以及書上的解釋)

exec 5>&2                 把原來的標準錯誤輸出儲存到檔案描述符5上

exec 2> /tmp/test.log   重定向標準錯誤

...

exec 2>&5            將原始檔案複製到檔案描述符2

exec 5>&-            關閉檔案描述符5

在這裡我就想,當有如下語句的時候:注意shell在處理重定向的時候都是由左至右

(1)make > res 2>&1,> res標準輸出重定向到了res檔案,標準錯誤沒有處理,2>&1標準錯誤重定向到了標準輸出,但是此時標準輸入以及重定向到了res,所以標準錯誤也重定向到檔案;

標準輸出=標準錯誤=終端,標準輸出=res,標準錯誤=標準輸出,所以:標準輸出=標準錯誤=res

(2)make 2>&1 > res ,2>&1標準錯誤輸出到標準輸出,所以標準錯誤輸出,但是標準輸入沒有處理,> res標準輸出重定向了到res檔案中,因此,標準錯誤輸出和標準輸出不在同乙個檔案

標準輸出=標準錯誤=終端,標準錯誤=標準輸出,標準輸出=res,所以:錯誤資訊在終端,標準輸出在res

既然make > res 2>&1 是將標準錯誤重定向標準輸出,那麼我想exec 5>&2也是將檔案描述符5重定向到標準輸出,但是實際上這麼理解是錯誤的,我們來看如下執行的命令順序:

$exec 5>&2    #作用現在未知

$exec 3>/tmp/test.log    #以檔案描述符3開啟檔案

$echo 『test1』1>&5      #將標準輸出重定向到檔案描述符5,

test1 #我們可以發現直接輸出到了終端上,由於標準錯誤和標準輸出都會輸出到終端上,我們#這裡可以知道,』test1』輸出到檔案描述符5上就是輸出到了檔案描述符2上

$echo 『test2』1>&3   #沒有輸出到終端上,』test2』輸出到了檔案/tmp/test.log中

$cat /tmp/test.log

test2

$echo 『test3』 3>&1 #由於echo是列印到標準輸出的,所以重定向3到1想到於沒有作用

test3

$cat /tmp/test.log #測試/tmp/test.log,結果正如上而言,檔案/tmp/test.log內是原內容

test2

$echo 『test4』>&5    #檔案描述符5為標準錯誤

test4

$exec 『test5』>&2    #檔案描述符2為標準錯誤

test4

$exec 2> /tmp/test1.log #以檔案描述符2開啟檔案,注意這樣開啟會在終端卡死,請在指令碼測試

$echo 『test』 >&2    #輸出』test』到檔案描述符2,沒有輸出到終端,說明檔案描述符2已經改變

$cat /tmp/test1.log #/tmp/test1.log的檔案內是寫到檔案描述符2的內容

test

$echo 『test』 >&5 #輸出到終端,現在檔案描述符5就是標準錯誤

test

通過測試可以知道:

(1)  exec 5>&2,檔案描述符5以只寫的方式開啟檔案描述符,並且將原來標準錯誤的輸出也輸出到檔案描述符5上,我們可以將它看作以檔案描述符5開啟了標準錯誤檔案,所以echo 『test』 >&2和echo 『test』 >&5的作用一樣;

(2)  exec 2> /tmp/test1.log,檔案描述符2以只寫的方式開啟檔案,那麼檔案描述符2不再是標準錯誤,而是開啟/tmp/test1.log的檔案描述符;

(3)  exec 2>&5,以檔案描述符2以只寫的方式開啟了檔案描述符5所指代的檔案,當前檔案描述符5是指向標準錯誤的,所以檔案描述符2重新得到了標準錯誤的檔案描述符;

(4)  make > res 2>&1,重定向,將標準錯誤的輸出輸出到標準輸出;

(5)  exec 5>&-和exec 5<&-將檔案描述符讀寫端都關閉;

重選 重定向 盲重定向 切換的區別

前言 網上定義是 重選 重定向 盲重定向 切換在網上能夠找到非常明確的定義,比如 重選 一般是空閒模式下,小區更新進行的,可能是同頻,異頻 異系統,當然臨區漏配的重選也是存在的。重定向 通常是為不支援切換的ue準備的一種過渡手段。重定向分為盲重定向和測量重定向,一般都是高優先順序系統回落到低優先順序...

JMeter中的跟隨重定向自動重定向

自動重定向 httpclient 接受到請求後,如果請求中包含重定向請求,httpclient是可以自動跳轉的,但是只是針對get與head請求,勾選此項 跟隨重定向 失效 自動重定向可以自動跳轉到最終目標頁面,jmeter不記錄重定向過程內容,只有乙個最終結果,不能對相應內容做關聯。跟隨重定向 h...

JSP的重定向

jsp的重定向主要可用以下四種方式 2.修改http header的location屬性 3.使用forword 此種方式在重定向網頁編輯器 kindeditor 編輯器載入不了 4.jsp中實現在某頁面停留若干秒後,自動定向到另一頁面 在html檔案中,下面的 它的含義 在5分鐘之後正在瀏覽的頁面...