1`這樣的命令。這條命令的作用是將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都重定向到/dev/null中,即將所有生成的信息丟棄。接下來(lái)我們?cè)敿?xì)解釋一下`co" />

成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

在Shell中理解/dev/null 2 > 1命令

在編寫(xiě)Shell腳本時(shí),經(jīng)常會(huì)遇到`/dev/null 2 > 1`這樣的命令。這條命令的作用是將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都重定向到/dev/null中,即將所有生成的信息丟棄。接下來(lái)我們?cè)敿?xì)解釋一下`co

在編寫(xiě)Shell腳本時(shí),經(jīng)常會(huì)遇到`/dev/null 2 > 1`這樣的命令。這條命令的作用是將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都重定向到/dev/null中,即將所有生成的信息丟棄。接下來(lái)我們?cè)敿?xì)解釋一下`command > file 2 > file`與`command > file 2 > 1`之間的區(qū)別。

`command > file 2 > file`的工作原理

首先,`command > file 2 > file`表示將命令產(chǎn)生的標(biāo)準(zhǔn)輸出信息和錯(cuò)誤輸出信息都發(fā)送到file文件中。使用這種寫(xiě)法時(shí),stdout和stderr都直接發(fā)送到file中,導(dǎo)致file被打開(kāi)兩次,stdout和stderr會(huì)互相覆蓋,實(shí)際上使用了FD1和FD2兩個(gè)管道同時(shí)去占用file。

`command > file 2 > 1`的效果及優(yōu)勢(shì)

而`command > file 2 > 1`這條命令則直接將stdout發(fā)送到file,然后stderr繼承了FD1管道后再被發(fā)送到file,這樣file只被打開(kāi)一次,也只使用一個(gè)管道FD1,包含了stdout和stderr的內(nèi)容。從IO效率上看,前一條命令的效率要低于后一條命令,因此在編寫(xiě)Shell腳本時(shí),我們更傾向于使用`command > file 2 > 1`這樣的寫(xiě)法。

深入分析shell中的`> /dev/null 2 > 1`命令

在Shell中,經(jīng)常會(huì)遇到類(lèi)似`> /dev/null 2 > 1`這樣的命令,通過(guò)`>`符號(hào)來(lái)定義輸出分解組合。具體來(lái)說(shuō),“> /dev/null 2 > 1”可以分為五部分:

1. `>`代表重定向到哪里,例如:`echo "123" > /home/123.txt`

2. `/dev/null`代表空設(shè)備文件

3. `2 > 1`表示標(biāo)準(zhǔn)錯(cuò)誤

4. ``表示等同于的意思,`2 > 1`表示2的輸出重定向等同于1

5. `1`表示標(biāo)準(zhǔn)輸出,默認(rèn)值是1,因此`> /dev/null`等同于`1 > /dev/null`

因此,`> /dev/null 2 > 1`也可以寫(xiě)成`1 > /dev/null 2 > 1`。這條命令的執(zhí)行過(guò)程如下:

- `1 > /dev/null`表示標(biāo)準(zhǔn)輸出重定向到空設(shè)備文件,即不輸出任何信息到終端,不顯示任何信息

- `2 > 1`表示標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出,因?yàn)橹皹?biāo)準(zhǔn)輸出已經(jīng)被重定向到了空設(shè)備文件,所以標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到空設(shè)備文件。

通過(guò)以上分析,我們更加深入地理解了`> /dev/null 2 > 1`這個(gè)Shell命令在實(shí)際應(yīng)用中的作用和效果。

標(biāo)簽: