GNU/Linux >> Znalost Linux >  >> Linux

Odesílejte oznámení a připomenutí na ploše z terminálu Linux

Někdy je užitečné získat vizuální zpětnou vazbu ze skriptu. Když se například dokončí úloha skriptu nebo cron, selže dlouhotrvající sestavení nebo dojde k naléhavému problému během provádění skriptu. Desktopové aplikace to umí s vyskakovacími upozorněními, ale lze to udělat i ze skriptu! Pomocí příkazů skriptu si můžete posílat oznámení a připomenutí na plochu.

Níže uvedený kód byl napsán a testován na Linuxu. S trochou úsilí to lze provést také v systému macOS. Několik rad a tipů naleznete v poslední části.

Odesílání upozornění z terminálu Linux

Chcete-li odesílat upozornění z terminálu Linux, použijte notify-send příkaz. Často je již nainstalován jako součást vaší plochy, ale můžete spustit which  notify-send potvrdit. Pokud ještě není nainstalován, nainstalujte jej pomocí zvoleného správce balíčků.

Ve Fedoře a podobných distribucích zadejte:

$ sudo dnf install libnotify

V distribucích založených na Debianu zadejte:

$ sudo apt install notify-send

Několik příkladů jednoduchých oznámení:

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

Oznámení si můžete přizpůsobit pomocí možností, jako je úroveň naléhavosti, vlastní ikona a tak dále. Zjistěte více pomocí man notify-send . V těle oznámení můžete použít malou sadu značek HTML, aby vaše zprávy vypadaly pěkně. Kromě toho se adresy URL vykreslují jako klikatelné. Například:

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

Odeslaná upozornění přebírá prostředí plochy a zobrazuje je stejně jako jakékoli jiné upozornění. Budou mít stejný konzistentní vzhled, dojem a chování.

Kombinovat upozornění-odeslat s na

Cron se běžně používá k plánování příkazů v pravidelných intervalech. at příkaz naplánuje jedno provedení příkazu v určený čas. Pokud jej spustíte takto, spustí se v interaktivním režimu, kde můžete zadávat příkazy, které se mají v daný čas provést:

$ at 12:00

To není užitečné pro skripty. Naštěstí at přijímá parametry ze standardního vstupu, abychom jej mohli použít takto:

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

Existuje mnoho způsobů, jak určit čas. Z absolutního času, například 10:00 přes relativní čas, například now + 2 hours , na zvláštní časy, jako je noon nebo midnight . Můžeme to zkombinovat s notify-send abychom si někdy v budoucnu ukázali upomínky. Například:

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

Příkaz připomenutí

Nyní si vytvořte vlastní příkaz Bash pro posílání připomenutí. Co takhle něco tak jednoduchého a lidsky přátelského jako:

$ 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

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Tohle je lepší než Alexa! Jak tuto dobrotu získat?

Viz kód níže. Definuje funkci shellu nazvanou připomenout , který podporuje výše uvedenou syntaxi. Vlastní práce se provádí v posledních dvou řádcích. Zbytek je zodpovědný za nápovědu, validaci parametrů atd., což zhruba odpovídá poměru užitečného kódu vs. nezbytný bílý šum v jakékoli velké aplikaci.

Uložte kód někam, například do ~/bin/remind a zdroj funkce ve vašem .bashrc profil, aby se načetl při přihlášení:

$ source ~/bin/remind

Znovu načtěte terminál a poté zadejte připomenutí, abyste viděli syntaxi. Užijte si to!

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

Snadná upozornění

Pomocí těchto několika jednoduchých příkazů s otevřeným zdrojovým kódem můžete integrovat své vlastní skripty, aplikace a úlohy na plochu. Vyzkoušejte to!

Tento článek byl se svolením autora upraven z původního článku, který najdete zde.


Linux
  1. jak se přihlásit do mysql a dotazovat se na databázi z linuxového terminálu

  2. Vypněte počítač se systémem Windows z linuxového terminálu

  3. odesílání pošty z linuxového terminálu v jednom řádku

  1. Odešlete e-mail z linuxového terminálu nebo skriptu pomocí příkazu mail

  2. OBS Studio – Nahrávejte a živě streamujte videa z Linux Desktop

  3. Jak odeslat e-mail s přílohou a tělem z Linuxu

  1. Změňte velikost obrázku z terminálu Linux

  2. Tisk souborů z terminálu Linux

  3. Jak používat SSMTP k odeslání e-mailu z terminálu Linux