スクリプトから視覚的なフィードバックを取得すると便利な場合があります。たとえば、スクリプトまたはcronジョブが完了すると、長時間実行されるビルドが失敗したり、スクリプトの実行中に緊急の問題が発生したりします。デスクトップアプリケーションはポップアップ通知を使用してこれを実行できますが、スクリプトからも実行できます。スクリプトコマンドを使用して、デスクトップの通知とリマインダーを自分に送信できます。
以下のコードは、Linuxで記述およびテストされています。少し手間をかけてmacOSでも実行できます。ヒントとヒントについては、最後のセクションを参照してください。
Linuxターミナルからの通知の送信
Linuxターミナルから通知を送信するには、notify-send
を使用します 指図。多くの場合、デスクトップの一部としてすでにインストールされていますが、which
を実行できます。 notify-send
確認するために。まだインストールされていない場合は、選択したパッケージマネージャーを使用してインストールしてください。
Fedoraおよび同様のディストリビューションで、次のように入力します:
$ sudo dnf install libnotify
Debianベースのディストリビューションでは、次のように入力します。
$ sudo apt install notify-send
簡単な通知のいくつかの例:
$ notify-send "Dinner ready!"
$ notify-send "Tip of the Day" "How about a nap?"
緊急度、カスタムアイコンなどのオプションを使用して、通知をカスタマイズできます。詳細については、man notify-send
をご覧ください。 。通知本文でHTMLタグの小さなセットを使用して、メッセージに素敵なタッチを与えることができます。その上、URLはクリック可能としてレンダリングされます。例:
$ notify-send -u critical \
"Build failed!" \
"There were <b>123</b> errors. Click here to see the results: http://buildserver/latest"
送信された通知はデスクトップ環境で取得され、他の通知と同じように表示されます。それらは同じ一貫した外観、感触、および動作を持ちます。
通知と送信を組み合わせる
cronは通常、コマンドを定期的にスケジュールするために使用されます。 at
commandは、指定された時間にコマンドの1回の実行をスケジュールします。このように実行すると、インタラクティブモードで起動し、特定の時間に実行するコマンドを入力できます。
$ at 12:00
これはスクリプトには役立ちません。幸いなことに、at
このように使用できるように、標準入力からパラメータを受け入れます:
$ echo "npm run build" | at now + 1 minute
$ echo "backup-db" | at 13:00
時間を指定する方法はたくさんあります。 10:00
などの絶対時間から now + 2 hours
などの相対的な時間 、noon
などの特別な時間に またはmidnight
。 notify-send
と組み合わせることができます 将来のある時点で自分自身にリマインダーを表示します。例:
$ echo "notify-send 'Stop it and go home now?' 'Enough work for today.' -u critical" | at now
リマインドコマンド
次に、リマインダーを送信するためのカスタムBashコマンドを作成します。次のようなシンプルで人間に優しいものはどうですか:
$ remind "I'm still here" now
$ remind "Time to wake up!" in 5 minutes
$ remind "Dinner" in 1 hour
$ remind "Take a break" at noon
$ remind "It's Friday pints time!" at 17:00
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
これはAlexaよりも優れています!この良さを得るには?
以下のコードを参照してください。 リマインダーと呼ばれるシェル関数を定義します 、上記の構文をサポートします。実際の作業は最後の2行で行われます。残りは、ヘルプ、パラメータ検証などを担当します。これは、大規模なアプリケーションで有用なコードと必要なホワイトノイズの比率にほぼ一致します。
コードをどこかに保存します。たとえば、~/bin/remind
に保存します。 ファイルを作成し、.bashrc
で関数をソースします ログイン時に読み込まれるようにプロファイル:
$ source ~/bin/remind
ターミナルをリロードしてから、remindと入力して構文を確認します。お楽しみください!
#!/usr/bin/env bash
function remind () {
local COUNT="$#"
local COMMAND="$1"
local MESSAGE="$1"
local OP="$2"
shift 2
local WHEN="$@"
# Display help if no parameters or help command
if [[ $COUNT -eq 0 || "$COMMAND" == "help" || "$COMMAND" == "--help" || "$COMMAND" == "-h" ]]; then
echo "COMMAND"
echo " remind <message> <time>"
echo " remind <command>"
echo
echo "DESCRIPTION"
echo " Displays notification at specified time"
echo
echo "EXAMPLES"
echo ' remind "Hi there" now'
echo ' remind "Time to wake up" in 5 minutes'
echo ' remind "Dinner" in 1 hour'
echo ' remind "Take a break" at noon'
echo ' remind "Are you ready?" at 13:00'
echo ' remind list'
echo ' remind clear'
echo ' remind help'
echo
return
fi
# Check presence of AT command
if ! which at >/dev/null; then
echo "remind: AT utility is required but not installed on your system. Install it with your package manager of choice, for example 'sudo apt install at'."
return
fi
# Run commands: list, clear
if [[ $COUNT -eq 1 ]]; then
if [[ "$COMMAND" == "list" ]]; then
at -l
elif [[ "$COMMAND" == "clear" ]]; then
at -r $(atq | cut -f1)
else
echo "remind: unknown command $COMMAND. Type 'remind' without any parameters to see syntax."
fi
return
fi
# Determine time of notification
if [[ "$OP" == "in" ]]; then
local TIME="now + $WHEN"
elif [[ "$OP" == "at" ]]; then
local TIME="$WHEN"
elif [[ "$OP" == "now" ]]; then
local TIME="now"
else
echo "remind: invalid time operator $OP"
return
fi
# Schedule the notification
echo "notify-send '$MESSAGE' 'Reminder' -u critical" | at $TIME 2>/dev/null
echo "Notification scheduled at $TIME"
}
簡単な通知
これらのいくつかの単純なオープンソースコマンドを使用して、独自のスクリプト、アプリケーション、およびタスクをデスクトップに統合できます。試してみてください!
この記事は、ここにある元の記事の著者の許可を得て作成されています。