Qualcuno sa come mettere un comando 'time' prima di ogni comando in una sessione bash?
Qualcuno sa come mettere un comando 'time' prima di ogni comando in una sessione bash?
Risposte:
Scusami per la risposta sbagliata prima, ho capito male la tua domanda.
Per avere il tempo aggiunto prima di ogni comando che esegui sulla shell puoi fare qualcosa del genere
bind 'RETURN: "\e[1~time \e[4~\n"'
Ciò consentirà di ricollegare la chiave di ritorno. Ora ogni volta che premi Invio invece di scrivere una nuova riga \ n andrà all'inizio della riga, inserisci il testo "tempo" e uno spazio, vai alla fine della riga e inserisci la nuova riga \ n producendo così il desiderato effetto.
Se non vuoi sacrificare la tua chiave di invio puoi creare una "seconda" chiave di immissione benchmark come F12 vincolando il comando in questo modo
bind '"\e[24~": "\e[1~time \e[4~\n"'
Ora invece di sostituire la chiave di ritorno hai associato F12.
Lo sfondo di tutto ciò è che bash usa GNU readline per leggere i comandi. Quindi readline sarebbe un buon punto di partenza per un'ulteriore manipolazione dei comandi, ecc.
Mi rendo conto che questo non rientra nell'ambito di questa domanda ma ...
In zsh
(che, per quanto ne sappia, è un super set di bash) se imposti la seguente variabile nel tuo .zshrc
file:
export REPORTTIME=5
Ogni comando che richiede più di 5 secondi (ne sono abbastanza sicuro) visualizzerà l'output di time
. Tutti i comandi che completano più rapidamente non lo fanno. E in quei casi non ci interessa davvero, quindi è bello non ingombrare le cose. Ci sono anche molte altre funzioni interessanti zsh
che potresti apprezzare mentre ci sei.
Includi \ t nella stringa del prompt. Includerà il tempo nel tuo prompt nel punto in cui lo includi. Vedi: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/
PS1 sembra il modo standard di fare qualcosa del genere.
time
fa (misura il tempo impiegato per l'esecuzione di un comando).