File-Descriptors
為什麼有人將描述符與 /dev/null 一起使用?
我不明白。我在一些教程中看到人們使用這樣的描述符(用於輸出和錯誤)
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