Je fais Sudo apt-get update
de temps en temps, et je trouve frustrant de devoir vérifier quand cela est fait. Est-ce que je peux quand même le faire offrir une notification contextuelle ou émettre un son une fois l'exécution terminée, afin que je puisse continuer mon travail?
J'ai écrit un peu de scripts pour le faire. Le script est situé dans github .
Voici le guide d'installation:
Télécharger ou simplement cloner le repo
$ git clone [email protected]:c0rp-aubakirov/notify_after_command_executed.git
Ajoutez ensuite l’approvisionnement en script postexec_notify
à votre .bashrc
.
Voici git clone
exemple d'installation:
$ cd ~
$ git clone [email protected]: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
S'il vous plaît laissez-moi savoir si quelque chose n'est pas clair ou si vous avez des problèmes.
Sound je ne peux pas vous aider avec. Cependant, si vous ajoutez quelque chose comme
&& notify-send "Task complete."
après votre commande, une notification devrait apparaître 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 &&
exécutera une deuxième commande si la première se termine avec succès.
Ce que vous voulez, c'est Sudo apt-get update; alert
. Ce qui suit est une explication et une justification.
&&
ou ;
. Celles-ci ont deux significations distinctes: command-a && command-b
signifie que commande-a sera exécutée en premier, puis, si l'opération réussit, commande-b sera exécutée; command-a; command-b
signifie que commande-a sera exécutée en premier, puis commande-b sera exécutée, que la commande-a ait abouti ou non. Vous voulez probablement le point-virgule: vous voulez être averti lorsque la mise à jour ou la mise à niveau s'est arrêtée, qu'elle se soit terminée ou non avec succès.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
est alert
. Cet alias est intégré par défaut à bash dans au moins certaines versions d’Ubuntu. Il est assez facile de l’ajouter s’il manque au vôtre (utilisez 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 une image d'un terminal (pour une commande réussie) ou une image d'erreur (pour une commande ayant échoué).
La vie est maintenant devenue encore plus simple: command; alert
est très rapide et facile à saisir. Il alertera si la commande a réussi ou non, et l'alerte contiendra une indication indiquant si la commande a réussi ou non.
Incidemment, il m'est parfois agacé de ne pas pouvoir diriger la sortie vers notify-send
, alors j'ai écrit une petite fonction pour le faire 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
. L'icône dans ce cas est aléatoire, cependant. En outre, vous recevez une notification pour chaque ligne de sortie, ce qui n'est probablement pas un bon choix pour apt-get update
.
Pour jouer un son personnalisé via les haut-parleurs, vous pouvez exécuter
aplay <path_to_sound_file>
* <path_to_sound_file> = chemin du fichier son
jouer le fichier son choisi; alors vous pouvez ajouter un alias playsound
à ~/.bashrc
:
alias playsound='aplay <path_to_sound_file>'
* <path_to_sound_file> = chemin du fichier son
De cette façon, vous pouvez exécuter Sudo apt-get update && playsound
pour reproduire le son choisi lorsque Sudo apt-get update
est terminé.
Pour jouer un son personnalisé via les haut-parleurs, vous pouvez exécuter
pacmd list-sinks | grep -E 'index|device.product.name'
pour lister tous les index des éviers disponibles de pulseaudio
avec le dispositif correspondant; alors vous pouvez courir
pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null
* <sink_index> = _ l'index de l'évier de pulseaudio
pour jouer /usr/share/sounds/ubuntu/stereo/bell.ogg
à travers l'évier choisi. (Bien sûr, vous pouvez jouer le son que vous voulez); alors vous pouvez ajouter un alias playsound
à ~/.bashrc
:
alias playsound='pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null'
* <sink_index> = _ l'index de l'évier de pulseaudio
De cette façon, vous pouvez exécuter Sudo apt-get update && playsound
pour reproduire le son choisi lorsque Sudo apt-get update
est terminé.
Vous pouvez ajouter quelque chose comme
&& echo -e "\007"
au bout de votre ligne. Essayer de faire
Sudo apt-get update && Sudo apt-get -y upgrade && echo -e "\007"
J'espère que ça t'as aidé