3 votes

Comment obtenir le temps avant de lancer une commande à chaque fois dans le terminal ?

J'aimerais qu'à chaque fois que j'exécute une commande dans le terminal, j'aie l'heure affichée dans mon terme puis la commande exécutée.

9voto

Tshilidzi Mudau Points 4095

Vous pouvez simplement exécuter

 PROMPT_COMMAND="date"

sur votre terminal, alors à chaque fois qu'une commande est lancée sur votre terminal, la date et l'heure actuelles seront imprimées sur votre terminal. Comme suggéré par@pa4080, pour le rendre permanent, ajoutez PROMPT_COMMAND="date" à votre fichier ~/.bashrc.

De Man Bash :

PROMPT_COMMAND

Si elle est définie, la valeur est exécutée comme une commande avant l'émission de chaque invite primaire.

Je pense que vous pouvez utiliser la même commande PROMPT_COMMAND= pour exécuter presque "tout" ce que vous voulez lorsqu'une commande est lancée dans le terminal.

Si vous utilisez tmux Il affiche également l'heure sur le coin :

tmux

3voto

ilkkachu Points 1499

En supposant que vous utilisez Bash, vous pouvez configurer PROMPT_COMMAND à une commande qui est exécutée lorsque l'invite est imprimée. De même, vous pouvez exécuter une commande arbitraire en incluant une substitution de commande dans l'invite :

$ PS1='[$(date +"%T")] \u@\h \w\$ '
[22:17:54] user@somehost /tmp$ 

Mais c'est assez courant pour que Bash le soutient en dehors de l'étagère

\D{format}
Le format est transmis à strftime(3) et le résultat est inséré dans la chaîne d'invite ; un format vide donne une représentation de l'heure spécifique à la région. Les accolades sont obligatoires.

Donc, comme dans le cas précédent

$ PS1='[\D{%T}] \u@\h \w\$ '

Mais ceux-ci impriment l'heure à laquelle l'invite a été imprimée. Il peut s'écouler un certain temps avant l'exécution de la commande suivante. Pour obtenir l'heure à laquelle la commande est lancée, nous pouvons utiliser la fonction DEBUG qui s'exécute une fois pour chaque ligne de commande exécutée.

$ starttime() { date +"Command started at %T"; }
$ trap starttime DEBUG
$ ls -l /dev/null
Command started at 22:25:07
crw-rw-rw- 1 root root 1, 3 Jul 18 21:46 /dev/null

El DEBUG pourrait également utiliser le $BASH_COMMAND qui contient la commande en cours d'exécution, mais ce n'est probablement pas très utile puisque la ligne de commande est visible à l'invite de toute façon.

1voto

denisinla Points 181

Utiliser le terminal zsh, ce terminal peut afficher la date et l'heure de la commande. enter image description here

https://github.com/robbyrussell/oh-my-zsh/wiki/themes#rkj-repos https://github.com/robbyrussell/oh-my-zsh/wiki/themes#xiong-chiamiov

1voto

Gaurav Singh Points 11
  1. Modifier le fichier .bashrc

    gedit ~/.bashrc
  2. Trouvez le texte suivant :

    if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] :\[\033[01;34m\]\w\[\033[00m\]\$ ' 
  3. Et remplacer par :

    if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\] [\d|\t]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 
  4. Redémarrez le terminal pour vérifier.

Sample output in terminal

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X