ファイルに通知を作成するには?

ファイルに通知を作成するには?

私はBashスクリプトを使ってgit pullを自動化しようとしました。スクリプトの実行結果を見逃すことなく、これらの結果がどこかに記録され、問題があるかどうかを確認できるように、スクリプトに次の行を追加しました。

# Does git pull
`notify-send "Git pull log message" |tee -a "$mylogfile"
# Other stuff

スクリプトの残りの部分はうまく機能し、git pull自動化などの期待される作業を行います。特定の通知はnotify-sendマイコンピュータにもよく表示され、通知リストからアクセスできます。

私の問題は通知を()にインポートすることです|tee -a $mylogfile。通知メッセージをファイルにまったくリダイレ​​クトしません$mylogfile。私も次のことを試しました。

notify-send "Git pull log message" |tee "$mylogfile"
notify-send "Git pull log message" > "$mylogfile"
notify-send "Git pull log message" >> "$mylogfile"

何も書かれていないようです。また、スクリプトと端末でこれらのコマンドを実行しましたが、動作は同じです。マニュアルページnotify-sendも非常に短く、ファイルI / Oコマンドの使用方法については言及していません。 Stack Exchangeでも関連する質問が見つかりませんでした。 [this][1] が最も近いですが、ファイルを入力として提供するのではなく、通知出力をファイルに送信しようとしています。端末に出力が表示されないため、何もリダイレクトされないようです。これは、標準出力には何も記録されないことを意味します。

私の考えでは、次のようなもので満足できると思います。

msg="Git pull log message"
notify-send "$msg" && echo "$msg" > "$mylogfile"

これはコマンドを2行に分けて変数を使用して機能しますが、スクリプトに通知とロギングに関連する行だけがあり、他に何もないように明示的な変数なしで1行にしておきたいと思います。

私は明らかなものを見逃しているに違いないと確信しています。助けてください? [1]:https://askubuntu.com/questions/216326/can-i-redirect-file-as-input-to-notify-send

答え1

事実、質問を書く過程で知った事実は、このコマンドこれは私が解決策を見つけるように動機付けるのに十分でした。同じ状況の他の人にも役立つ可能性があり、このSEサイトや他のサイトで重複した質問が見つからないため、以下のように共有してください。

echo "Git pull log message" |tee -a "$mylogfile" |xargs -I% notify-send "%"

アイデアは、コマンドの順序を変更することです。で始まり始めるのではなく、notify-sendログファイルに最初に書きます。これはstdoutにもメッセージが送信されるためです。これにより、パイプする内容があります。 「要約が指定されていません」エラーを防ぐために使用してください。echoteeteenotify-sendxargs

答え2

git pullnotify-sendログファイルに書き込まずに出力をパイプで接続します。

git pull | xargs -I{} notify-send {}

関連情報