为什么有些 Linux 程序的输出既不去 STDOUT 也不去 STDERR?
实际上,我想知道如何可靠地捕获所有程序输出,无论它使用什么“流”。我的问题是有些程序似乎不让他们的输出被捕获。
一个例子是“时间”命令:
time sleep 1 2>&1 > /dev/null
real 0m1.003s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
或者
time sleep 1 &> /dev/null
real 0m1.003s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
为什么我两次都看到输出?我希望这一切都通过管道输入/dev/null。
时间使用的是什么输出流,我如何将其通过管道传输到文件中?
解决此问题的一种方法是创建一个Bash脚本,例如,combine.sh包含以下命令:
$@ 2>&1
Run Code Online (Sandbox Code Playgroud)
然后可以以正确的方式捕获 'time' 的输出:
combine.sh time sleep 1 &> /dev/null
Run Code Online (Sandbox Code Playgroud)
(没有看到输出 - 正确)
有没有办法在不使用单独的组合脚本的情况下实现我想要的?
在 Ubuntu 中,当有人在 Skype 对话中说话(但不是在群聊“频道”中)时,我希望以可定制的方式收到通知。
问题是:
notify-send "%sname:" "%smessage" -i skype-chat(更新:通知,发送现在支持定制)我可以使用一些更好的通知包来代替通知发送吗?
或者其他一些解决方案?
更新:理想情况下,通知窗口应位于所有其他窗口的顶部,并要求用户在消失之前单击它,以确保他们已经看到它。
我的几个 Skype 联系人似乎整天都在注销并再次登录。我问过他们,他们并没有真正做任何事情,但我的 Skype 应用程序不断通知我他们刚刚上线。
我对他们的通知感到恼火,他们对我的通知感到恼火。
使用 Windows 的联系人和使用 Ubuntu 的联系人似乎都会发生这种情况。
我支持公司代理,我的(一些?)联系人也是如此。
更新:我知道我可以关闭其他登录的通知,但我更担心人们看到我的登录整天都弹出。