GNU/Linux >> Tutoriales Linux >  >> Linux

Envíe notificaciones de escritorio y recordatorios desde la terminal de Linux

A veces es útil obtener comentarios visuales de un guión. Por ejemplo, cuando se completa una secuencia de comandos o un trabajo cron, falla una compilación de ejecución prolongada o hay un problema urgente durante la ejecución de la secuencia de comandos. Las aplicaciones de escritorio pueden hacer esto con notificaciones emergentes, ¡pero también se puede hacer desde un script! Puede usar comandos de script para enviarse a sí mismo notificaciones y recordatorios de escritorio.

El siguiente código ha sido escrito y probado en Linux. También se puede hacer en macOS con un poco de esfuerzo. Consulte la última sección para obtener algunos consejos y sugerencias.

Enviar notificaciones desde la terminal Linux

Para enviar notificaciones desde la terminal de Linux, use el notify-send dominio. A menudo ya está instalado como parte de su escritorio, pero puede ejecutar which  notify-send para confirmar. Si aún no está instalado, instálelo con el administrador de paquetes de su elección.

En Fedora y distribuciones similares, escriba:

$ sudo dnf install libnotify

En distribuciones basadas en Debian, escriba:

$ sudo apt install notify-send

Algunos ejemplos de notificaciones simples:

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

Puede personalizar la notificación con opciones como nivel de urgencia, icono personalizado, etc. Obtenga más información con man notify-send . Puede usar un pequeño conjunto de etiquetas HTML en el cuerpo de la notificación para darle un toque agradable a sus mensajes. Además de eso, las URL se representan como clicables. Por ejemplo:

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

Las notificaciones enviadas son recogidas por el entorno de escritorio y se muestran como cualquier otra notificación. Tendrán la misma apariencia, sensación y comportamiento consistentes.

Combinar notificación-envío con at

Cron se usa comúnmente para programar comandos a intervalos regulares. El at El comando programa la ejecución única de un comando en un momento específico. Si lo ejecuta así, comienza en modo interactivo, donde puede ingresar comandos para ejecutar en un momento dado:

$ at 12:00

Esto no es útil para los scripts. Afortunadamente, at acepta parámetros de entrada estándar para que podamos usarlo de esta manera:

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

Hay muchas formas de especificar el tiempo. Desde el tiempo absoluto, como 10:00 a través del tiempo relativo, como now + 2 hours , a horas especiales como noon o midnight . Podemos combinarlo con notify-send para mostrarnos recordatorios en algún momento en el futuro. Por ejemplo:

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

El comando recordar

Ahora, crea un comando Bash personalizado para enviarte recordatorios a ti mismo. ¿Qué tal algo tan simple y amigable para los humanos como:

$ 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

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

¡Esto es mejor que Alexa! ¿Cómo obtener esta bondad?

Vea el código a continuación. Define una función de shell llamada recordar , que admite la sintaxis anterior. El trabajo real se realiza en las dos últimas líneas. El resto es responsable de la ayuda, la validación de parámetros, etc., que coincide aproximadamente con la proporción de código útil frente al ruido blanco necesario en cualquier aplicación grande.

Guarde el código en algún lugar, por ejemplo, en el ~/bin/remind y obtenga la función en su .bashrc perfil para que se cargue cuando inicies sesión:

$ source ~/bin/remind

Vuelva a cargar el terminal, luego escriba recordar para ver la sintaxis. ¡Disfrútalo!

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

Notificaciones fáciles

Con estos pocos comandos simples de código abierto, puede integrar sus propios scripts, aplicaciones y tareas con su escritorio. ¡Pruébalo!


Este artículo ha sido adaptado con el permiso del autor del artículo original, que se encuentra aquí.


Linux
  1. Envíe un correo electrónico desde la terminal o secuencia de comandos de Linux usando el comando de correo

  2. OBS Studio:grabe y transmita videos en vivo desde el escritorio de Linux

  3. Cómo enviar un correo electrónico con archivo adjunto y cuerpo desde Linux

  4. cómo iniciar sesión en mysql y consultar la base de datos desde la terminal de Linux

  5. Apague la máquina de Windows desde la terminal de Linux

Personalizando mi terminal Linux con tmux y Git

Cómo enviar un mensaje a usuarios registrados en la terminal de Linux

11 razones por las que migrar del escritorio de Windows al escritorio de Linux

Las 10 mejores distribuciones de Linux para computadoras portátiles y de escritorio

4 comandos para apagar Linux desde la terminal

Mutt, Mail y Telnet:envíe correos electrónicos desde la línea de comando o terminal de Linux