Bash
帶有重定向 STDOUT/STDERR 的廢棄命令仍將輸出發送到 shell
我在其中定義了一個函式
.bashrc
,允許我通過執行從 bash 打開例如 pdf 文件copen myfile.pdf
:function copen { if [[ $# -eq 1 ]] ; then xdg-open "$1" > /dev/null 2>&1 & disown return 1 fi }
通過執行此命令,我在後台執行例如 Okular,將 STDOUT 和 STDERR 重定向到
/dev/null
bash 並將其從 bash 中刪除。但是,執行後copen myfile.pdf
我仍然將輸出列印到 bash (QSqlQuery::exec: database not open
多次),我不明白為什麼。如何抑制這種輸出?請注意,將程式碼更改為
nohup xdg-open "$1" > /dev/null 2>&1 &
.
試試這個方法:
#!/usr/bin/bash copen() { (($# == 1)) && xdg-open "$1" &>/dev/null & disown } copen "$1"
執行腳本如下:
./myscript SomePDFfile.pdf
這是在 bash >4
&>/dev/null
中添加的簡寫。>/dev/null 2>&1
該
copen
函式需要一個參數。