GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Senden Sie Desktop-Benachrichtigungen und Erinnerungen vom Linux-Terminal

Manchmal ist es nützlich, visuelles Feedback von einem Skript zu erhalten. Wenn beispielsweise ein Skript oder ein Cron-Job abgeschlossen wird, ein lang andauernder Build fehlschlägt oder während der Skriptausführung ein dringendes Problem auftritt. Desktop-Anwendungen können dies mit Popup-Benachrichtigungen tun, aber es kann auch über ein Skript erfolgen! Sie können Skriptbefehle verwenden, um sich Desktop-Benachrichtigungen und Erinnerungen zu senden.

Der folgende Code wurde unter Linux geschrieben und getestet. Es ist mit etwas Aufwand auch unter macOS möglich. Im letzten Abschnitt finden Sie einige Hinweise und Tipps.

Benachrichtigungen vom Linux-Terminal senden

Um Benachrichtigungen vom Linux-Terminal zu senden, verwenden Sie notify-send Befehl. Es ist oft bereits als Teil Ihres Desktops installiert, aber Sie können which  ausführen notify-send bestätigen. Wenn es noch nicht installiert ist, installieren Sie es mit dem Paketmanager Ihrer Wahl.

Geben Sie bei Fedora und ähnlichen Distributionen Folgendes ein:

$ sudo dnf install libnotify

Geben Sie bei Debian-basierten Distributionen Folgendes ein:

$ sudo apt install notify-send

Einige Beispiele für einfache Benachrichtigungen:

$ notify-send "Dinner ready!"
$ notify-send "Tip of the Day" "How about a nap?"

Sie können die Benachrichtigung mit Optionen wie Dringlichkeitsstufe, benutzerdefiniertem Symbol usw. anpassen. Erfahren Sie mehr mit man notify-send . Sie können eine kleine Gruppe von HTML-Tags im Benachrichtigungstext verwenden, um Ihren Nachrichten eine nette Note zu verleihen. Darüber hinaus werden URLs als anklickbar gerendert. Zum Beispiel:

$ notify-send -u critical \
  "Build failed!" \
  "There were <b>123</b> errors. Click here to see the results: http://buildserver/latest"

Gesendete Benachrichtigungen werden von der Desktop-Umgebung abgeholt und wie jede andere Benachrichtigung angezeigt. Sie haben das gleiche konsistente Aussehen, Gefühl und Verhalten.

Kombiniere Notify-Send mit at

Cron wird häufig verwendet, um Befehle in regelmäßigen Abständen zu planen. Der at command plant die einmalige Ausführung eines Befehls zu einem bestimmten Zeitpunkt. Wenn Sie es so ausführen, startet es im interaktiven Modus, wo Sie Befehle eingeben können, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen:

$ at 12:00

Dies ist für Skripte nicht sinnvoll. Zum Glück at akzeptiert Parameter von der Standardeingabe, damit wir sie auf diese Weise verwenden können:

$ echo "npm run build" | at now + 1 minute
$ echo "backup-db" | at 13:00

Es gibt viele Möglichkeiten, die Zeit anzugeben. Aus absoluter Zeit, z. B. 10:00 durch relative Zeit, wie z. B. now + 2 hours , zu besonderen Zeiten wie noon oder midnight . Wir können es mit notify-send kombinieren um uns irgendwann in der Zukunft Erinnerungen zu zeigen. Zum Beispiel:

$ echo "notify-send 'Stop it and go home now?' 'Enough work for today.' -u critical" | at now

Der Erinnerungsbefehl

Erstellen Sie jetzt einen benutzerdefinierten Bash-Befehl, um sich selbst Erinnerungen zu senden. Wie wäre es mit etwas so Einfachem und Menschenfreundlichem wie:

$ 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

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Das ist besser als Alexa! Wie bekommt man diese Güte?

Siehe Code unten. Es definiert eine Shell-Funktion namens erinnern , die die obige Syntax unterstützt. Die eigentliche Arbeit wird in den letzten beiden Zeilen erledigt. Der Rest ist für Hilfe, Parametervalidierung usw. verantwortlich, was ungefähr dem Verhältnis von nützlichem Code zu notwendigem weißem Rauschen in jeder großen Anwendung entspricht.

Speichern Sie den Code irgendwo ab, zum Beispiel im ~/bin/remind Datei, und beziehen Sie die Funktion in Ihre .bashrc Profil, damit es geladen wird, wenn Sie sich anmelden:

$ source ~/bin/remind

Laden Sie das Terminal neu und geben Sie dann Reminder ein, um die Syntax anzuzeigen. Viel Spaß!

#!/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"
}

Einfache Benachrichtigungen

Mit diesen wenigen einfachen Open-Source-Befehlen können Sie Ihre eigenen Skripte, Anwendungen und Aufgaben in Ihren Desktop integrieren. Probieren Sie es aus!


Dieser Artikel wurde mit Genehmigung des Autors aus dem Originalartikel angepasst, der hier zu finden ist.


Linux
  1. Senden Sie eine E-Mail vom Linux-Terminal oder Skript mit dem Befehl mail

  2. OBS Studio – Nehmen Sie Videos vom Linux-Desktop auf und streamen Sie sie live

  3. So verwenden Sie SSMTP zum Senden einer E-Mail vom Linux-Terminal

  4. wie man sich bei mysql anmeldet und die datenbank vom linux-terminal aus abfragt

  5. Fahren Sie den Windows-Rechner vom Linux-Terminal herunter

Anpassen meines Linux-Terminals mit tmux und Git

So senden Sie eine Nachricht an angemeldete Benutzer im Linux-Terminal

11 Gründe für die Migration vom Windows-Desktop zum Linux-Desktop

Top 10 Linux-Distributionen für Laptop und Desktop

4 Befehle zum Herunterfahren von Linux vom Terminal aus

Mutt, Mail und Telnet – Senden Sie E-Mails von der Linux-Befehlszeile oder dem Terminal