2 1 的廬山真面目

2021-10-16 05:56:30 字數 2064 閱讀 2729

如果我們想儲存程式的列印資訊,為了儲存完整的列印資訊,通常我們會使用以下命令。那這個該怎麼理解呢?

command 2>&1 | tee log

command > log 2>&1

『2>&1』的意思是將command**過程中列印的標準輸出標準錯誤**一併重定向至log檔案中。

q:那什麼是標準輸出和標準錯誤,什麼是重定向,標準輸出和標準錯誤又有什麼區別呢?下面一一揭曉:

1. 標準輸出和標準錯誤:

2. 檔案描述符

在linux shell執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名:

檔案檔案描述符

c++對應實現

標準輸入

0(預設是鍵盤,為0是檔案或者其他命令的輸出)

std::cin

標準輸出

1(預設是螢幕,為1時是檔案)

std::cout

標準錯誤

2(預設是螢幕,為2時是檔案)

std::cerr

3. 重定向

signal

means

>

將標準輸出重定向至指定檔案

>>

將標準輸出追加到指定檔案後面

2>

標準錯誤重定向至指定檔案

2 >>

標準錯誤追加到指定檔案後面

&無實際意義,表明重定向的是乙個檔案描述符,而不是乙個檔案

2>&1

將標準錯誤重定向至標準輸出,即將標準錯誤放進標準輸出的緩衝buffer中,一併輸出到指定檔案

栗子:下面是標準輸出與標準錯誤的乙個小demo

#includeint main()
輸出至螢幕:./t

螢幕輸出:######hello, this is standard cerr      ######hello, this is standard cout      ######hello, this is standard cout

// 注意到cerr輸出先於cout,因為cerr是沒有緩衝的,

'>'重定向: ./t > log

螢幕輸出:######hello, this is standard cerr      

log檔案:######hello, this is standard cout ######hello, this is standard cout

'2>'重定向: ./t 2> log

螢幕輸出:######hello, this is standard cout      ######hello, this is standard cout

log檔案:######hello, this is standard cerr

『2>&1』 重定向: ./t > log 2>&1

螢幕輸出:無

log檔案(保序):######hello, this is standard cout ######hello, this is standard cerr ######hello, this is standard cout

5)'2>&1』重定向: 『command 2>&1 | tee log』

螢幕輸出:######hello, this is standard cout      ######hello, this is standard cerr      ######hello, this is standard cout

log檔案(保序):######hello, this is standard cout ######hello, this is standard cerr ######hello, this is standard cout

不識廬山真面目

那時候,公司的研發組織結構是矩陣式的。也就是說,存在乙個研發中心這樣的組織,來管理所有的研發資源,資源分為三類 需求 開發 測試。而在其下面,又分n個專案組,每個專案組,會從研發中心,借調需求 開發 測試若干人等,組織成乙個對市場提供產品的專案組。公司做的產品,所以很多專案組的存在時間會比較長。而有...

揭開AssetBundle廬山真面目 一

1 常用打包api public static bool buildassetbundle object mainasset,object assets,string pathname,out uint crc,buildassetbundleoptions assetbundleoptions,b...

揭開AssetBundle廬山真面目(二)

昨天的分享揭開assetbundle廬山真面目 一 我們主要剖析了4.x版本下的assetbundle管理機制,那5.x版本究竟有些什麼變化呢?今天我們來一 竟。1 唯一api public static assetbundlemanifest buildassetbundles string ou...