管道通知发送块
Piping to notify-send in chunks
我正在尝试编写一个命令,使用 notify-send
cl 工具将 unix 输出发送到我的桌面通知。我有以下命令:
mocha -w | while read SPAM_OUT; do notify-send -t 5000 "mocha:" "$SPAM_OUT"; done
哪个做我想要的,只是我希望它在每次 mocha 吐出一些新东西时在一个通知中吐出整个 mocha 的输出。现在,我收到每一行的通知,这非常烦人。
如果有任何工具应该已经为我做这件事,我也会对它们感兴趣。
这应该符合您的预期:
notify-send -t 5000 "mocha:" "$(mocha -w)"
这会将 mocha -w
的完整输出放在 notify-send
的第四个参数中
如果 mocha -w 没有终止,bash-specific read -t
就派上用场了:
mocha -w | ( while true; do MSG=""; while read -t .1 LINE; do MSG="$MSG $LINE"; done; if [ "$MSG" != "" ]; then notify-send -t 5000 "$MSG"; fi; done; )
这会聚合一条消息中在 1/10 秒的时间范围内进入的所有行。您可以调整此超时以满足您的需要。请注意,这是 bash-specific,其他 shell(即 dash)可能不支持它。
我正在尝试编写一个命令,使用 notify-send
cl 工具将 unix 输出发送到我的桌面通知。我有以下命令:
mocha -w | while read SPAM_OUT; do notify-send -t 5000 "mocha:" "$SPAM_OUT"; done
哪个做我想要的,只是我希望它在每次 mocha 吐出一些新东西时在一个通知中吐出整个 mocha 的输出。现在,我收到每一行的通知,这非常烦人。
如果有任何工具应该已经为我做这件事,我也会对它们感兴趣。
这应该符合您的预期:
notify-send -t 5000 "mocha:" "$(mocha -w)"
这会将 mocha -w
的完整输出放在 notify-send
如果 mocha -w 没有终止,bash-specific read -t
就派上用场了:
mocha -w | ( while true; do MSG=""; while read -t .1 LINE; do MSG="$MSG $LINE"; done; if [ "$MSG" != "" ]; then notify-send -t 5000 "$MSG"; fi; done; )
这会聚合一条消息中在 1/10 秒的时间范围内进入的所有行。您可以调整此超时以满足您的需要。请注意,这是 bash-specific,其他 shell(即 dash)可能不支持它。