Aggiunta di timestamp ai prompt dei terminali?


53

Mi chiedevo se fosse possibile aggiungere timestamp ai prompt dei terminali e, in caso affermativo, come potrei raggiungere questo obiettivo?


controlla questo link per visualizzare l'orologio di marcia sincronizzato
Mana,

Risposte:


61

Aggiungi questa riga al ~/.bashrcfile:

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

Quindi l'output sarà simile a:

[07:00:31] user@name:~$

A volte faccio esperienza che il tempo non è corretto ed è più vecchio, come se ci fosse qualche tipo di ritardo. Pensavo di poterlo usare per vedere quanto tempo impiegano determinati comandi (grugnito ..). Come può essere?
Kevin Simper,

2
@ devav2: esiste un modo per specificare il fuso orario?
Ippopotamo,

Esiste un modo per aggiungere anche timestamp al terminale quando si utilizza root? Ho il timestamp solo quando sono un utente normale. Grazie
Yufenyuy Veyeh Dider

4
Per il datecomando, è possibile sostituire +%H:%M:%Scon +%T.
snapfractalpop,

5
Questo è andato storto con il mio involucro del terminale, quindi ho usato l'approccio dettagliato qui . È sufficiente aggiungere '\ D {% T}' alla tua PS1
rbennett485

25

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.


Il link qui è ottimo per personalizzare ulteriormente i francobolli.
cellepo,

16

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 $USERe la datevariabile dall'ambiente attuale.

inserisci qui la descrizione dell'immagine


8
Il punto di metterlo nel prompt è sapere quando è stata eseguita l'ultima volta un comando specifico.
James Oltmans,

6

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.


1
Puoi suggerire modifiche.
Muru,

4
export PROMPT_COMMAND=date

stampa la data prima di inviare ogni prompt.


1

Apri la tua .bashrcvia

vim ~/.bashrc

e quindi aggiungere quanto segue a .bashrc:

#PS1="[\A \u@\h \W\a]$" 

dove \Aè per il tempo ( \Wsolo 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]$

1
la rimozione \Wnon mostrerà alcun percorso. \wdarà il percorso completo.
Zanna,

0

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$


1
Le escape vengono utilizzate per la formattazione (parentesi). Non vedo cosa si aggiunge alla risposta accettata.
Elder Geek,

Puoi aggiungerli a 'echo -n "$ (data +% H:% M:% S)"' troppo: 'echo -n "[$ (data +% H:% M:% S)]"' senza bisogno di fuggire da loro. Il vantaggio di usare una stringa come argomento per il comando echo è che ora non è necessario sfuggire a ciò che altrimenti sarebbe bash valutabile, facilitando la lettura.
qwertyzw,

@ElderGeek Ho aggiunto ulteriori chiarimenti. Spero che aiuti.
qwertyzw,

0

Penso che il modo corretto di procedere sia individuare $HOME/.bashrci 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!"

0

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 bashsezione PROMPTING) come

%Fdata completa; uguale a% Y-% m-% d (vedere la man datesezione FORMATO) e

\tè l'ora corrente nel formato HH: MM: SS di 24 ore (vedere la man bashsezione PROMPTING)

nano ~/.bashrc

apporta modifiche alle variabili PS1 come mostrato sopra

source ~/.bashrc


0
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "

almeno mi sembra utile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.