EDITAR
TL; DR : crea un acceso directo de autocompletado .inputrc
y funciona en .bashrc
. Ejecute el comando como de costumbre, escriba, pero en lugar de ENTER, presione el acceso directo que especificó en.inputrc
La persona que puso recompensa por esta pregunta dijo:
"Todas las respuestas existentes requieren escribir un comando adicional después del comando. Quiero una respuesta que haga esto automáticamente".
Mientras investigaba las soluciones a este problema, me topé con esta pregunta desde stackexchange, que permite vincular CtrlJa una secuencia de comandos: Ctrla(mover al comienzo de la línea), colocar la cadena "mesure" delante del comando que ingresó, Ctrlm(ejecutar)
Por lo tanto, obtiene la funcionalidad de autocompletar y un ENTERcomando separado para medir el tiempo, al tiempo que conserva el propósito original de la segunda función que publiqué a continuación.
A partir de ahora, aquí están los contenidos de mi ~/.inputrc
archivo:
"\C-j": "\C-a measure \C-m"
Y aquí están los contenidos de .bashrc
(nota, no he estado usando bash para siempre, uso mksh como mi shell, por lo tanto, eso es lo que ves en la publicación original. La funcionalidad sigue siendo la misma)
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
}
Publicación original
Aquí está mi idea: use una función en .bashrc
. Principio básico: utilícelo /usr/bin/time
para medir el tiempo que tarda el comando en completarse y, si es superior a 15 segundos, envíe una notificación.
function measure ()
{
if [ $( /usr/bin/time -f "%e" $@ 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Aquí estoy redirigiendo la salida, /dev/null
pero para ver la salida, también se puede hacer la redirección al archivo.
Un enfoque mucho mejor, en mi humilde opinión, es enviar la salida de tiempo a algún archivo en su carpeta de inicio (solo para que no contamine su sistema con archivos de tiempo y siempre sepa dónde buscar). Aquí está esa segunda versión
function measure ()
{
/usr/bin/time --output=~/.timefile -f "%e" $@
if [ $( cat ~/.timefile | cut -d'.' -f1 ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Y aquí están las capturas de pantalla de la primera y segunda versión, en ese orden
Primera versión, sin salida
Segunda versión, con salida