2013-10-01 48 views
4
scriptlist=`ls $directory_/fallback_* 2> /dev/null` 

2>部分命令的目的究竟是什麼? 我省略了它並運行命令,它工作正常。2>在Unix命令行中的含義是什麼?

而且,如果ls的輸出存儲在/ dev/null文件中,那麼變量scriptlist將包含什麼內容。 當我執行代碼時,輸​​出在變量中,文件null中沒有任何文件。如果我們刪除2,那麼輸出是在文件而不是變量。 不知道這行代碼究竟在幹什麼?

+1

'$ {script} $ * >> $ logfile 2>&1&1 <'代表什麼? 回答:[在shell中,什麼是「2>&1」?](http://stackoverflow.com/questions/818255/in-the-shell-what-is-21) – Smith

回答

3

任何想法究竟是什麼「2」是做在這裏

這裏2是一個文件描述符引用STDERR

2> /dev/null意味着STDERR被重定向到空設備/dev/null

您提到的完整行將STDOUT(忽略STDERR)的輸出存儲到變量scriptlist中,並將其返回ls $directory_/fallback_*

7

文件描述符2表示標準錯誤。 (其他特殊文件描述符包括用於標準輸入的0和用於標準輸出的1)。

2> /dev/null表示將標準錯誤重定向到/dev/null/dev/null是一種特殊的設備,會丟棄寫入它的所有內容。

放在一起,這行代碼存儲命令ls $directory_/fallback_* 2> /dev/null INT變量scriptlist(和標準錯誤被丟棄)的標準輸出。

5
scriptlist=`ls $directory_/fallback_* 2> /dev/null` 

正如您已經封閉在反引號整行ls $directory_/fallback_* 2> /dev/null, 的ls命令的輸出被存儲在scriptlist變量。

此外,2>redirecting所述的stderr輸出到/dev/null 無處 )。

相關問題