2015-12-26 24 views
4

'> /dev/null'是非常常見的語法,這不是一個新概念;但是,我已經到了這個腳本,並且無法弄清'< /dev/null'背後的邏輯,尤其是FFMpeg。讀取完成時,'</ dev/null>究竟是由null完成的嗎?

我寫了幾十個處理FFMpeg的腳本,我發現爲了讓腳本自己成功調用並執行FFMpeg,在ffmpeg的命令行末尾添加'< /dev/null'。例如:

ffmpeg -i $INPUT -c:v copy -c:a copy output.mp4 < /dev/null 

但是,如果我沒有在命令的末尾添加sytnax,腳本不能「推」的執行到FFmpeg的。當我將>寫成「全部爲空,標準輸出,標準輸入」時,我理解了整個概念,但是... read by null? 搔頭

那麼,< /dev/null究竟是什麼?

回答

4

對於很多系統,您可以查閱特殊設備的手冊頁。例如,Linux的null(4)文件:

從/ dev/null的讀取始終返回文件結束

FreeBSD的null(4)說,這是不同的:

空設備接收和讀取數據任何普通的(而且願意的)文件 - 但會拋棄它。空設備的長度始終爲零。

這是不太清楚。 Solaris null(7)

從空特殊文件讀取總是返回0字節。

你會看到從/dev/null重定向的腳本時,它被安撫了一些計劃,希望從標準輸入讀取,但腳本不會提供任何數據。例如,如果沒有重定向,程序可能會等待鍵盤輸入。

+0

最後一段是我正在尋找的'gotcha'。謝謝! – Faron