BEARBEITEN
TL; DR : Erstellt eine Verknüpfung zur automatischen Vervollständigung in .inputrc
und funktioniert in .bashrc
. Führen Sie den Befehl wie gewohnt aus, geben Sie ihn ein, ENTERund drücken Sie stattdessen die von Ihnen angegebene Verknüpfung.inputrc
Die Person, die Kopfgeld auf diese Frage setzte, sagte:
"Für alle vorhandenen Antworten muss nach dem Befehl ein zusätzlicher Befehl eingegeben werden. Ich möchte eine Antwort, die dies automatisch ausführt."
Bei der Suche nach Lösungen für dieses Problem bin ich auf diese Frage von stackexchange gestoßen, die das Binden CtrlJan eine Folge von Befehlen ermöglicht: Ctrla(zum Zeilenanfang gehen), "mesure" -String vor den von Ihnen eingegebenen Befehl setzen, Ctrlm(ausführen)
So erhalten Sie die Funktionalität der automatischen Vervollständigung und einen separaten ENTERBefehl zum Messen der Zeit, während der ursprüngliche Zweck der zweiten Funktion, die ich unten gepostet habe, beibehalten wird.
Ab sofort sind hier die Inhalte meiner ~/.inputrc
Datei:
"\C-j": "\C-a measure \C-m"
Und hier sind die Inhalte von .bashrc
(Anmerkung: Ich habe Bash nicht für immer verwendet - ich verwende MKSH als meine Shell, daher ist das, was Sie im ursprünglichen Beitrag sehen. Die Funktionalität ist immer noch die gleiche).
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
}
Ursprünglicher Beitrag
Hier ist meine Idee - benutze eine Funktion in .bashrc
. Grundprinzip - Verwenden Sie /usr/bin/time
diese Option, um die Zeit zu messen, die der Befehl benötigt, und senden Sie eine Benachrichtigung, wenn er länger als 15 Sekunden dauert.
function measure ()
{
if [ $( /usr/bin/time -f "%e" $@ 2>&1 >/dev/null ) -gt 15 ]; then
notify-send "Hi , $@ is done !"
fi
}
Hier leite ich die Ausgabe um, /dev/null
aber um die Ausgabe anzuzeigen, kann auch die Umleitung in eine Datei erfolgen.
Ein viel besserer Ansatz, IMHO, ist es, die Ausgabe der Zeit an eine Datei in Ihrem Home-Ordner zu senden (nur damit Sie Ihr System nicht mit Zeitdateien beschmutzen und immer wissen, wo Sie suchen müssen). Hier ist die zweite 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
}
Und hier sind die Screenshots der ersten und zweiten Version, in dieser Reihenfolge
Erste Version, keine Ausgabe
Zweite Version mit Ausgabe