2016-01-13 43 views
0

我試圖編寫一個命令,使用notify-send cl工具將unix輸出發送到我的桌面通知。我有以下命令:管道通知 - 發送大塊

mocha -w | while read SPAM_OUT; do notify-send -t 5000 "mocha:" "$SPAM_OUT"; done 哪些我想要做什麼,但我想它吐出摩卡輸出的全部在一個單一的通知每次摩卡barfs了一些新的東西。現在,我收到每一行的通知,這是非常煩人的。

如果有任何工具應該已經爲我做了,我也會對它們感興趣。

回答

1

這應該做你所期望的:

notify-send -t 5000 "mocha:" "$(mocha -w)" 

這使的mocha -w完整的輸出在notify-send

第四個參數如果摩卡-w不會終止,在bash特有​​進來得心應手:

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的,其他shell(即破折號)可能不支持它。

+0

此命令的問題是'mocha -w'不會停止,'-w'是一個'watch'參數,它會監聽文件的更改並永久重新測試。所以我想發送輸出通知發送永久,但在大塊,而不是逐行 – pixelpax

+0

@ user2130130我明白,在這種情況下,我有另一個建議,請參閱編輯 – Ctx

+0

這是優雅的,而且確實是我想要的它要做的,謝謝! 我得到$ LINE被concatinated到$ MSG,直到管道輸入中有一個緩衝區,並且有一個條件語句阻止'notify-send'通知空輸入,但是確切地說'read'應該用於一般來說? – pixelpax