看以前的日誌的指令碼都會有command > log.log 2>&1
一直都不知道後面的2>&1
是什麼意思
最近在看《shell指令碼學習指南》,看到檔案描述符一章的時候,再次看到了這個,一時沒有想明白2>&1
這個符號是什麼意思。
檔案描述符0,1,2 是shell 預設的值
描述符含義
0標準輸入
1標準輸出
2標準錯誤輸出
為了更直接的了解2>&1
下面舉幾個例子
ls not-exist-dir
#螢幕輸出:ls: cannot access not-exist-dir: no such file or directory
ls not-exist-dir > err.log
#螢幕輸出:ls: cannot access not-exist-dir: no such file or directory
#檢視err.log 為空
ls not-exist-dir > err.log 2>&1
#螢幕沒有輸出
#檢視err.log ls: cannot access not-exist-dir: no such file or directory
咦為什麼ls not-exist-dir > err.log
並沒有把ls: cannot access not-exist-dir: no such file or directory
這句錯誤輸出到err.log中
原因是這樣的
ls not-exist-dir > err.log = ls not-exist-dir 1> err.log
把標準輸出(檔案描述符1)重定向 err.log 檔案中
但是ls: cannot access not-exist-dir: no such file or directory
這句走的是標準錯誤輸出(檔案描述符2)
所以不會輸出到err.log中去
2>&1
把標準錯誤輸出重定向到檔案描述符1中去也就是err.log檔案
最後command > err.log 2>&1
就能把標準的輸出和標準錯誤輸出都輸出到err.log中去了
mysql 檔案描述符 檔案描述符
toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...
檔案描述符
檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...
檔案描述符
作業系統程序表中存放各個檔案進行檔案描述 核心 kernel 利用檔案描述符 file descriptor 來訪問檔案。檔案描述符是非負整數。開啟現存盤案或新建檔案時,核心會返回乙個檔案描述符。讀寫檔案也需要使用檔案描述符來指定待讀寫的檔案。目錄檔案描述符概述 如何建立檔案描述符 使用的好處 缺點...