Mi chiedevo se fosse possibile aggiungere timestamp ai prompt dei terminali e, in caso affermativo, come potrei raggiungere questo obiettivo?
Mi chiedevo se fosse possibile aggiungere timestamp ai prompt dei terminali e, in caso affermativo, come potrei raggiungere questo obiettivo?
Risposte:
Aggiungi questa riga al ~/.bashrc
file:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Quindi l'output sarà simile a:
[07:00:31] user@name:~$
date
comando, è possibile sostituire +%H:%M:%S
con +%T
.
La mia soluzione era quella di utilizzare http://bashrcgenerator.com/ per generare questa linea PS1 per inserire .bashrc:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
Quale sarà
13:05:54 [chad@work-laptop:~/Downloads]$ ls -al
L'uso di PROMPT_COMMAND mi rovina la cronologia. Quando viene visualizzata una riga più lunga mentre si scorre la cronologia, si interrompe la fine del prompt con lo stesso numero di caratteri del timestamp che è stato aggiunto in primo piano. per esempio
13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "
E questa riga non può essere modificata perché non mostra i caratteri nel posto giusto, in quanto non stai digitando dove sembra che stai scrivendo.
Suppongo che potrebbe essere fatto con PROMPT_COMMAND, forse usando quella parte [$ (tput sgr0)], ma PS1 funziona.
Invece di aggiungere la data al prompt stesso, è possibile aggiungere la data appena prima del prompt posizionando la seguente riga nella parte superiore del prompt .bashrc
. Per funzionare dovrai anche installarlo cowsay
. È un modo divertente di visualizzare la data mantenendo un breve prompt:
cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"
Nella sua forma attuale, funzionerà sul sistema di chiunque senza modifiche mentre legge la $USER
e la date
variabile dall'ambiente attuale.
Dal momento che non ho abbastanza punti reputazione per aggiungere un commento alla risposta per migliorarlo. Sembrerebbe che l'unico modo in cui posso aggiungere informazioni sia creare una seconda risposta. Quindi, ripeterò ciò che è stato detto come risposta e baserò su quello.
Modificare il file .bashrc per l'utente per il quale si desidera modificare il timbro data.
Se vedi "user @ host: ~ $" sei nella home directory dell'utente corrente. Il file .bashrc è un file nascosto poiché è preceduto dal punto ".". Per vederlo in un elenco dovrai utilizzare un lungo elenco.
Puoi usare "ls -a" e dovresti vedere il file ".bashrc".
Modifica il file con un editor di testo. Ad esempio, "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" o qualunque editor si desideri utilizzare.
Se si desidera scrivere questo script e si prevede di aggiungerlo a molte shell per molti utenti, può essere utile utilizzare il comando "echo" insieme all'operatore append ">>". Per esempio,
echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc
Se si utilizza questo metodo, accertarsi di trovarsi nella directory di lavoro corrente dell'utente per cui si desidera modificarlo. Per verificarlo puoi usare "pwd" o stampare il comando directory di lavoro.
Se non ti piace lo spazio aggiuntivo tra la parentesi "" "e il nome utente, usa questa regex leggermente modificata:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Usalo se stai modificando direttamente il file.
Apri la tua .bashrc
via
vim ~/.bashrc
e quindi aggiungere quanto segue a .bashrc
:
#PS1="[\A \u@\h \W\a]$"
dove \A
è per il tempo ( \W
solo per la fine del percorso, rimuovere se si desidera l'intero percorso della directory di lavoro corrente). Quindi digitare
source ~/.bashrc
Vedrai qualcosa del genere:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
non mostrerà alcun percorso. \w
darà il percorso completo.
Solo per aggiungere alla risposta di @ devav2:
Un comando echo più facile da leggere per i principianti sarebbe:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Invece di
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Poiché il comando echo non deve essere valutato al momento dell'esportazione, è più sensato utilizzare virgolette singole per virgolette letterali anziché doppie. L'uso di virgolette singole per citare l'intero comando consente quindi di utilizzare virgolette doppie per citare l'argomento al comando echo, eliminando la necessità di sfuggire a caratteri speciali come ,
[
e$
Penso che il modo corretto di procedere sia individuare $HOME/.bashrc
i codici che li imposta PS1
, commentarli e aggiungere quelli personali. Questo è il mio blocco per esempio:
PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"
if [ "$color_prompt" = yes ]; then
PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Produzione:
[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"
La sintassi più semplice per mostrare un timestamp in un prompt dei comandi sarebbe probabilmente:
PS1='\D{%F} \t $...'
dove
\D{format}
è la data formattata (vedere la man bash
sezione PROMPTING) come
%F
data completa; uguale a% Y-% m-% d (vedere la man date
sezione FORMATO) e
\t
è l'ora corrente nel formato HH: MM: SS di 24 ore (vedere la man bash
sezione PROMPTING)
nano ~/.bashrc
apporta modifiche alle variabili PS1 come mostrato sopra
source ~/.bashrc
Il mio tempo è simile alla cowsay
risposta sopra. Devi inserire il now
tuo ~/.bashrc
ma puoi anche chiamarlo dal terminale digitando now
.
Ecco uno screenshot:
Il codice bash è pubblicato in questa risposta molto dettagliata:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
almeno mi sembra utile.