標準輸入 (stdin) :程式碼為 0 ,使用 < 或 << ;
標準輸出 (stdout):程式碼為 1 ,使用 > 或 >> ;
標準錯誤輸出(stderr):程式碼為 2 ,使用 2> 或 2>> ;
根據鳥哥的資料,簡單記錄幾個小例子:
範例二:利用一般身份帳號搜尋 /home 底下是否有名為 .bashrc 的檔案存在[root@www ~]# su - dmtsai <==假設我的系統有名為 dmtsai 的帳號
[dmtsai@www ~]$ find /home -name .bashrc <==身份是 dmtsai 喔!
find: /home/lost+found: permission denied <==standard error
find: /home/alex: permission denied <==standard error
find: /home/arod: permission denied <==standard error
/home/dmtsai/.bashrc <== standard output
範例三:承範例二,將 stdout 與 stderr 分存到不同的檔案去[dmtsai@www ~]$ find /home -name .bashrc > list_right 2> list_error
範例四:承範例三,將錯誤的資料丟棄,螢幕上顯示正確的資料[dmtsai@www ~]$ find /home -name .bashrc 2> /dev/null
/home/dmtsai/.bashrc <==只有 stdout 會顯示到螢幕上, stderr 被丟棄了
範例五:將指令的資料全部寫入名為 list 的檔案中[dmtsai@www ~]$ find /home -name .bashrc > list 2> list <==錯誤
[dmtsai@www ~]$ find /home -name .bashrc > list 2>&1
<==正確
[dmtsai@www ~]$ find /home -name .bashrc &> list <==正確
上述**第一行錯誤的原因是,由於兩股資料同時寫入乙個檔案,又沒有使用特殊的語法, 此時兩股資料可能會交叉寫入該檔案內,造成次序的錯亂。所以雖然最終 list 檔案還是會產生,但是裡面的資料排列就會怪怪的,而不是原本螢幕上的輸出排序。 至於寫入同乙個檔案的特殊語法如上表所示,你可以使用 2>&1 也可以使用 &> ! 一般來說,鳥哥比較習慣使用 2>&1 的語法啦!
linux之資料流重定向
stdin 標準輸入,對應於你在終端的輸入 stdout 標準輸出,對應於終端的輸出 stderr 標準錯誤輸出,對應於終端的輸出 檔案描述符 裝置檔案 說明 0 dev stdin 標準輸入 1 dev stdout 標準輸出 2 dev stderr 標準錯誤檔案描述符 檔案描述符在形式上是乙個...
linux之管道與重定向
在linux作業系統中,輸入和輸出是兩個相對的操作,使用者將資料輸入到系統的暫存器中,cpu呼叫處理,處理後的資料同樣放入暫存器中,當然系統有很多的暫存器,輸入輸出的內容在不同的暫存器中,而後在螢幕上顯示出來。輸入重定向 cat file 檔名 正確的輸出重定向 2 檔名 錯誤的輸出重定向 檔名 全...
Linux基礎之重定向,管道
fd簡介 file descriptors fd,檔案描述符 程序使用檔案描述符來管理開啟的檔案 fd是訪問檔案的標識,即鏈結檔案 0是鍵盤唯讀,1,2是終端可以理解是螢幕,3 是檔案,可讀可寫 示例通過我們非常熟悉的vim程式。來觀察乙個程序的fd資訊。1.通過乙個終端,開啟乙個文字。vim 1....