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í.