MODIFIER
TL; DR : crée un raccourci d’auto-complétion dans .inputrc
et fonctionne dans .bashrc
. Exécutez la commande comme d'habitude, tapez, mais au lieu de ENTER, appuyez sur le raccourci que vous avez spécifié dans.inputrc
La personne qui a placé la prime sur cette question a déclaré:
"Toutes les réponses existantes nécessitent la saisie d'une commande supplémentaire après la commande. Je veux une réponse qui le fasse automatiquement."
En recherchant les solutions à ce problème, je suis tombé par hasard sur cette question de stackexchange, qui permet de lier CtrlJune séquence de commandes: Ctrla(déplacer au début de la ligne), placez la chaîne "mesure" devant la commande que vous avez entrée, Ctrlm(execute)
Ainsi, vous obtenez une fonctionnalité d’auto-complétion et une ENTERcommande séparée pour la mesure du temps, tout en préservant le but initial de la deuxième fonction affichée ci-dessous.
Pour l'instant, voici le contenu de mon ~/.inputrc
dossier:
"\C-j": "\C-a measure \C-m"
Et voici le contenu de .bashrc
(remarque, je n’utilise pas bash depuis toujours - j’utilise mksh comme shell, c’est ce que vous voyez dans le message original. Les fonctionnalités sont toujours les mêmes)
PS1=' serg@ubuntu [$(pwd)]
================================
$ '
function measure ()
{
/usr/bin/time --output="/home/xieerqi/.timefile" -f "%e" $@
if [ $( cat ~/.timefile| cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Poste originale
Voici mon idée - utiliser une fonction dans .bashrc
. Principe de base - utilisez-le /usr/bin/time
pour mesurer le temps nécessaire à l'exécution de la commande et, s'il dépasse 15 secondes, envoyez une notification.
function measure ()
{
if [ $( /usr/bin/time -f "%e" $@ 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Ici, je redirige la sortie vers /dev/null
mais pour visualiser la sortie, la redirection vers un fichier peut également être effectuée.
Une approche bien meilleure, à mon humble avis, consiste à envoyer la sortie de temps à un fichier de votre dossier de départ (afin que vous ne polluiez pas votre système avec des fichiers de temps et que vous sachiez toujours où regarder). Voici cette deuxième version
function measure ()
{
/usr/bin/time --output=~/.timefile -f "%e" $@
if [ $( cat ~/.timefile | cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Et voici les captures d'écran des première et deuxième versions, dans cet ordre
Première version, pas de sortie
Deuxième version, avec sortie