10 votes

Comment faire pour que votre terminal émette un son ou une notification lorsqu'il a fini d'exécuter sa commande ?

Je le fais. sudo apt-get update de temps en temps, et je trouve frustrant de devoir vérifier quand il a fini de faire son travail. Est-il possible de faire en sorte qu'il affiche une fenêtre de notification ou qu'il émette un son lorsqu'il a fini de s'exécuter, afin que je puisse continuer à travailler ?

16voto

Marc Points 9430

Un son pour lequel je ne peux pas vous aider. Cependant, si vous ajoutez quelque chose comme

  && notify-send "Task complete."

après votre commande, vous devriez voir apparaître une notification dans le coin supérieur droit. Si le paquet requis n'est pas installé par défaut, sudo apt-get install libnotify-bin devrait l'obtenir pour vous. Le site && exécutera une deuxième commande si la première se termine avec succès.

8voto

X-Istence Points 489

Ce que vous voulez, c'est sudo apt-get update; alert . Ce qui suit est une explication et une justification.


  • À partir du terminal, vous pouvez lister de nombreuses commandes à exécuter en séquence. Ce que vous voulez, c'est d'abord la commande qui prend beaucoup de temps, et ensuite une commande de notification.
  • Pour exécuter les commandes en séquence, vous les séparez avec l'une ou l'autre des options suivantes && o ; . Ceux-ci ont deux significations distinctes : command-a && command-b signifie que la commande-a sera exécutée en premier, et ensuite, si elle a réussi la commande-b sera exécutée ; command-a; command-b signifie que la commande-a sera exécutée en premier et ensuite la commande-b, si la commande-a a réussi ou non . Vous voulez probablement le point-virgule : vous voulez être informé lorsque la mise à jour ou la mise à niveau a cessé de fonctionner, qu'elle se soit terminée avec succès ou non.
  • D'autres répondants vous ont suggéré des alertes audio et à l'écran. Ma propre préférence va à notify-send qui prend deux paramètres : un titre et un contenu : sudo apt-get update; notify-send update finished (si l'un des paramètres contient des espaces, mettez-les entre guillemets).
  • Beaucoup plus rapide et facile à taper que notify-send title content es alert . Cet alias est intégré à bash par défaut dans au moins certaines versions d'Ubuntu, et il est assez facile de l'ajouter s'il est absent de la vôtre (utiliser type alert pour vérifier s'il est présent). Vous devriez obtenir la réponse,

    alert is aliased to `notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e 's/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//')"'

    Cela signifie qu'il va simplement extraire la dernière commande et l'envoyer à notify-send et que l'icône qui l'accompagne sera l'image d'un terminal (pour une commande réussie) ou une image d'erreur (pour une commande échouée).

    La vie est maintenant devenue encore plus simple : command; alert est très rapide et facile à taper. L'alerte contiendra une indication de la réussite ou de l'échec de la commande, et l'alerte contiendra une indication de la réussite ou de l'échec de la commande.

Par ailleurs, j'ai parfois été ennuyé par le fait que je ne pouvais pas envoyer la sortie vers notify-send J'ai donc écrit une petite fonction qui le fait pour moi :

notify () 
{ 
    while read input; do
        notify-send -i $(ls /usr/share/icons/gnome/32x32/emotes | sed 's/\(.*\)\..*/\1/' | shuf -n1) "message" "$input";
    done
}

Cela me permet de taper command | notify . Dans ce cas, l'icône est toutefois aléatoire. De plus, vous recevez une notification pour chaque ligne de sortie, ce qui n'est sans doute pas un bon choix pour apt-get update .

4voto

ieplugin Points 216

Pour les fichiers compatibles avec aplay

Pour diffuser un son personnalisé dans les haut-parleurs, vous pouvez lancer l'opération suivante

aplay <path_to_sound_file>

*<path_to_sound_file> = chemin d'accès au fichier sonore

pour lire le fichier sonore choisi ; ensuite, vous pouvez ajouter un bouton playsound alias pour ~/.bashrc :

alias playsound='aplay <path_to_sound_file>'

*<path_to_sound_file> = chemin d'accès au fichier sonore

De cette façon, vous pouvez exécuter sudo apt-get update && playsound pour jouer le son choisi lorsque sudo apt-get update a fini de fonctionner.

Pour les fichiers non compatibles avec aplay (par exemple, les fichiers .ogg) (sons système)

Pour diffuser un son personnalisé dans les haut-parleurs, vous pouvez lancer l'opération suivante

pacmd list-sinks | grep -E 'index|device.product.name'

pour énumérer tous les pulseaudio Les index des éviers disponibles de l'entreprise ainsi que les périphériques correspondants.

pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null

*<sink_index> = <code>pulseaudio</code> Indice de l'évier

pour jouer /usr/share/sounds/ubuntu/stereo/bell.ogg par l'intermédiaire du puits choisi (vous pouvez bien sûr jouer n'importe quel son que vous voulez) ; vous pouvez alors ajouter une playsound alias pour ~/.bashrc :

alias playsound='pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null'

*<sink_index> = <code>pulseaudio</code> Indice de l'évier

De cette façon, vous pouvez exécuter sudo apt-get update && playsound pour jouer le son choisi lorsque sudo apt-get update a fini de fonctionner.

2voto

c0rp Points 9110

J'ai écrit un petit scripts pour le faire. scripts est situé dans github .

Voici le guide d'installation :

Installation

Télécharger ou simplement cloner le dépôt

 $ git clone git@github.com:c0rp-aubakirov/notify_after_command_executed.git

Puis ajouter le sourcing du script. postexec_notify à votre .bashrc .

Voici git clone exemple d'installation :

 $ cd ~
 $ git clone git@github.com:c0rp-aubakirov/notify_after_command_executed.git
 $ cd ~/notify_after_command_executed
 $ echo "source $(pwd)/postexec_notify" >> ~/.bashrc

Maintenant, redémarrez votre terminal. Après le redémarrage, vous devriez voir ces messages :

preexec.sh is not exist
Trying to download it from github

Maintenant, essayez de tester si la notification apparaît :

$ sleep 6

Veuillez me faire savoir si quelque chose n'est pas clair ou si vous avez des problèmes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X