我在 my 中定义了一个函数.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 &
。
答案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
函数需要一个参数。