簡單理解Linux的1和2操作

2022-09-05 18:33:12 字數 1429 閱讀 2519

在 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 ...