linux之資料重定向

2022-08-15 04:15:15 字數 1358 閱讀 8508

標準輸入  (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....