File-Descriptors

為什麼有人將描述符與 /dev/null 一起使用?

  • April 28, 2021

我不明白。我在一些教程中看到人們使用這樣的描述符(用於輸出和錯誤)

command 1> /dev/null
command 2> /dev/null

但他們為什麼要這樣做?我們無法在螢幕或文件中看到輸出。它只是消失了。他們是否測試命令或類似的東西?

有時您只是不想看到輸出。很多工具在 stdout 或 stderr 上列印了很多“無用”的東西,有時我們只想忽略它,如果該工具不支持-q/--quite重定向輸出來/dev/null完成這項工作。如果該工具的主要功能不是列印某些東西,您可能只對它成功或失敗感興趣,並且為此您將使用返回碼(尤其是在腳本中)。

範例可能試圖確定是否安裝了工具。您可能想要檢查類似的東西,tool --version或者which tool但您對工具的版本或路徑並不真正感興趣,您只關心它是否可用並且返回程式碼就足夠了。例如,在您要檢查使用者是否具有所有必要依賴項的腳本中

$ which xyz >/dev/null 2>&1 || echo "you need to install xyz to proceed"
you need to install xyz to proceed

看起來比

$ which xyz || echo "you need to install xyz to proceed"
/usr/bin/which: no xyz in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/vtrefny/.local/bin:/home/vtrefny/bin)
you need to install xyz to proceed

引用自:https://unix.stackexchange.com/questions/647113