2016-11-21 24 views
2

在此以下bash腳本我有什麼不明白的2種手段:什麼是2 2>/dev的意義/空

function kill_process() 
{ 
    kill -9 $(lsof -i:$1 -t) 2> /dev/null 
} 

我可以看到,它是將輸出重定向到null設備,但是2是什麼意思?

回答

4

Bash中的N>語法表示將文件描述符重定向到其他位置。 2stderr的文件描述符,此示例將其重定向到/dev/null

這是什麼意思,簡單來說:忽略命令的錯誤輸出。例如,如果kill無法停止進程,因爲它不存在,或者因爲當前用戶沒有權限執行此操作,則它將在stderr上打印消息。通過將stderr重定向到/dev/null,可以有效地抑制這些消息。

-1

我認爲是對STDERR的重定向。 所有錯誤都重定向到/ dev/null

+1

它不是一個重定向到「STDERR」。 – janos

3

>前面的一個數字告訴文件描述符重定向到文件其中殼。如果關閉該數字,則默認爲1 - 與標準輸出,標準輸出相同,其中大多數命令都將輸出寫入其中。但是,終端中的程序實際上默認有兩個輸出通道,另一個是標準錯誤stderr的作用是允許即使將標準輸出重定向到文件或管道時也能將錯誤發送到終端;他們都默認去終端。但是如果你願意的話,你可以重定向stderr,這就是這個代碼所做的事情,因爲stderr的文件描述符號是2.