EDIT
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 dit:
"Toutes les réponses existantes nécessitent de taper une commande supplémentaire
après la commande. Je veux une réponse automatique. "
En recherchant les solutions à ce problème, je suis tombé sur cette question de stackexchange, qui autorise la liaison Ctrl J à une séquence de commandes: Ctrl a (déplacez-vous au début de la ligne), placez la chaîne "mesure" devant de la commande que vous avez entrée, Ctrl m (exécutez)
Ainsi, vous obtenez la fonctionnalité de complétion automatique et séparez la commande ENTER pour mesurer le temps, tout en conservant l'objectif initial de la deuxième fonction que j'ai publiée ci-dessous.
À ce jour, voici le contenu de mon fichier ~/.inputrc
:
"\C-j": "\C-a measure \C-m"
Et voici le contenu de .bashrc
(notez que je n’ai pas utilisé bash pour toujours - j’utilise mksh comme shell, c’est donc ce que vous voyez dans le message original. La fonctionnalité est toujours la même)
PS1=' [email protected] [$(pwd)]
================================
$ '
function measure ()
{
/usr/bin/time --output="/home/xieerqi/.timefile" -f "%e" [email protected]
if [ $( cat ~/.timefile| cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , [email protected] is done !"
fi
}
Message original
Voici mon idée - utilisez une fonction dans .bashrc
. Principe de base - utilisez /usr/bin/time
pour mesurer le temps nécessaire à l'exécution de la commande et, s'il est supérieur à 15 secondes, envoyez une notification.
function measure ()
{
if [ $( /usr/bin/time -f "%e" [email protected] 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , [email protected] is done !"
fi
}
Ici, je redirige la sortie vers /dev/null
mais pour voir la sortie, il est également possible de rediriger vers un fichier.
Une meilleure approche, à mon humble avis, consiste à envoyer la sortie de temps à certains fichiers de votre dossier personnel (juste pour ne pas polluer votre système avec des fichiers de temps et toujours savoir où chercher). Voici cette deuxième version
function measure ()
{
/usr/bin/time --output=~/.timefile -f "%e" [email protected]
if [ $( cat ~/.timefile | cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , [email protected] is done !"
fi
}
Et voici les captures d'écran de la première et de la deuxième version, dans cet ordre
Première version, pas de sortie
Deuxième version, avec sortie