在 shell 程式中,最常使用的大概有三個, 分別是:
示例當前目錄只有乙個檔案 a.txt.
[root@redhat box]# ls再接著看a.txt
[root@redhat box]# ls a.txt b.txt
ls: b.txt: no such file or directory 由於沒有b.txt這個檔案, 於是返回錯誤值, 這就是所謂的2輸出 a.txt 而這個就是所謂的1輸出
[root@redhat box]# ls a.txt b.txt 1>file.out 2>file.err總結執行後,沒有任何返回值. 原因是, 返回值都重定向到相應的檔案中了,而不再前端顯示
[root@redhat box]# cat file.out
a.txt
[root@redhat box]# cat file.err
ls: b.txt: no such file or directory
1> : 代表標準正確輸出,即如果命令的執行結果是正確,則執行輸出
2> : 代表標準錯誤輸出,即如果命令的執行結果是錯誤,則執行輸出
&>: 代表標準正確輸出+標準錯誤輸出
補充一般來說, "1>" 通常可以省略成 ">".
即可以把如上命令寫成: ls a.txt b.txt >file.out 2>file.err
2>&1 錯誤返回值傳遞給1輸出通道, 同樣&1表示1輸出通道.
[root@redhat box]# cat b.txt 1>file.out 2>&1假設b.txt不存在,那麼正常來講,這句命令並不會執行,但是在這裡我們在後面加入了2>&1,將錯誤值傳遞給1輸出通道
那麼實際上這句話可等效為 cat b.txt 2>file.out
為什麼我們要用這個東西而不直接使用2>呢?
有的時候我們並不知道檔案存在與否,我們又不想將錯誤資訊輸出到螢幕上,這個時候使用2>&1就可以確保命令執行的成功性
& 是乙個描述符,如果1或2前不加&,會被當成乙個普通檔案。
1>&2 意思是把標準輸出重定向到標準錯誤.
2>&1 意思是把標準錯誤輸出重定向到標準輸出。
&>filename 意思是把標準輸出和標準錯誤輸出都重定向到檔案filename中
問:linux重定向中 >&2 怎麼理解?
問題補充:echo "aaaaaaaaaaaaaaaa" >&2 怎麼理解?
答:>&2 即 1>&2 也就是把結果輸出到和標準錯誤一樣;之前如果有定義標準錯誤重定向到某log檔案,那麼標準輸出也重定向到這個log檔案
如:ls 2>a1 >&2 (等同 ls >a1 2>&1)
把標準輸出和標準錯誤都重定向到a1,終端上看不到任何資訊。
其實也可以寫成ls &>a1 根據情形而定
佇列的簡單理解和基本操作
2.佇列的順序儲存結構 2.2 迴圈佇列 3.佇列的鏈式儲存結構 3.4.2 鏈式隊列入隊 3.4.3 鏈式佇列出隊 4.雙端佇列 4.2 輸出受限的雙端佇列 4.3 輸入受限的雙端佇列 只允許在一端插入,在另一端刪除分配一塊連續的儲存單元存放佇列的元素 define maxsize 100 動態陣...
Linux 許可權的簡單理解
普通使用者 可以進行基本操作。root使用者 為所欲為。切換使用者的命令如下 建立使用者 useradd m 使用者名稱 表示建立乙個使用者並建立它地下的家目錄 m 建立home目錄 修改使用者密碼 passwd username 修改使用者的密碼 1.檔案許可權有 r w x分別表示read 可讀...
簡單理解操作符i 和 i的區別
即自增 無論是x 或者是 x,自增的結果就是x x 1 即自減 無論是x 或者是 x,自減的結果就是x x 1 而x 和 x的區別就在於過程,我們把 x 和 x 看成是過程 看個例項 var i 1 alert i 1 alert i 2 i i 1 var j 1 alert j 2 alert ...