Je me demandais s'il était possible d'ajouter des horodatages aux invites de terminal, et si oui, comment pourrais-je y parvenir?
Je me demandais s'il était possible d'ajouter des horodatages aux invites de terminal, et si oui, comment pourrais-je y parvenir?
Réponses:
Ajoutez cette ligne au ~/.bashrc
fichier:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Donc, le résultat sera quelque chose comme:
[07:00:31] user@name:~$
date
commande, vous pouvez remplacer +%H:%M:%S
par +%T
.
Ma solution a été d'utiliser http://bashrcgenerator.com/ pour générer cette ligne PS1 à insérer en .bashrc:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
Qui ressemblera
13:05:54 [chad@work-laptop:~/Downloads]$ ls -al
L'utilisation de PROMPT_COMMAND perturbe l'historique pour moi. Lorsqu'une longue ligne apparaît en parcourant l'historique, elle coupe la fin de l'invite du même nombre de caractères que l'horodatage ajouté à l'avant. par exemple
13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "
Et cette ligne ne peut pas être modifiée car elle n’affiche pas les caractères au bon endroit, car vous ne tapez pas à la place.
Je suppose que cela pourrait être fait avec PROMPT_COMMAND, peut-être en utilisant cette partie [$ (tput sgr0)], mais PS1 fonctionne.
Au lieu d'ajouter la date à l'invite elle-même, vous pouvez ajouter la date juste avant votre invite en plaçant la ligne suivante en haut de votre .bashrc
. Pour que cela fonctionne, vous devrez également installer cowsay
. C'est une manière amusante d'afficher la date tout en gardant une courte invite:
cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"
Dans sa forme actuelle, il fonctionnera sans modification sur le système de quiconque, car il lit la $USER
et la date
variable de l'environnement actuel.
Comme je n'ai pas assez de points de réputation pour ajouter un commentaire à la réponse afin de l'améliorer. Il semblerait que la seule façon pour moi d'ajouter des informations est de créer une deuxième réponse. Donc, je vais répéter ce qui a été dit comme réponse et construire sur cela.
Modifiez le fichier .bashrc de l'utilisateur pour lequel vous souhaitez modifier l'horodatage.
Si vous voyez "utilisateur @ hôte: ~ $", vous vous trouvez dans le répertoire de base de votre utilisateur actuel. Le fichier .bashrc est un fichier caché car il est préfixé du point ".". Pour le voir dans une liste, vous devrez utiliser une longue liste.
Vous pouvez utiliser "ls -a" et vous devriez alors voir le fichier ".bashrc".
Editez le fichier avec un éditeur de texte. Par exemple, "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" ou tout autre éditeur que vous souhaitez utiliser.
Si vous voulez créer un script et planifier l'ajout de nombreux shells à de nombreux utilisateurs, il peut être intéressant d'utiliser la commande "echo" conjointement avec l'opérateur append ">>". Par exemple,
echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc
Si vous utilisez cette méthode, assurez-vous de figurer dans le répertoire de travail en cours de l'utilisateur pour lequel vous souhaitez le modifier. Pour vérifier cela, vous pouvez utiliser le "pwd" ou la commande print working directory.
Si vous n'aimez pas l'espace supplémentaire entre le crochet "]" et le nom d'utilisateur, utilisez simplement cette expression très légèrement modifiée:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Utilisez ceci si vous éditez directement le fichier.
Ouvrez votre .bashrc
via
vim ~/.bashrc
puis ajoutez ce qui suit à .bashrc
:
#PS1="[\A \u@\h \W\a]$"
où \A
est pour time ( \W
pour seulement la fin du chemin, supprimez-le si vous voulez le chemin complet du répertoire de travail en cours). Puis tapez
source ~/.bashrc
Vous verrez quelque chose comme ça:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
ne montrera aucun chemin du tout. \w
donnera le chemin complet.
Juste pour ajouter à la réponse de @ devav2:
Une commande d'écho plus facile à lire pour les débutants serait:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Au lieu de
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Etant donné que la commande echo n'est pas destinée à être évaluée au moment de l'exportation, il est plus logique d'utiliser des guillemets simples pour les guillemets littéraux plutôt que les guillemets doubles. L'utilisation de guillemets simples pour citer la commande entière vous permet ensuite d'utiliser des guillemets doubles pour citer l'argument à la commande echo, ce qui vous évite d'avoir à échapper des caractères spéciaux tels que ,
[
et$
Je pense que la bonne façon de procéder est de localiser dans $HOME/.bashrc
les codes qui les définissent PS1
, de les commenter et d’ajouter les codes personnels. Ceci est mon bloc par exemple:
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
Sortie:
[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"
La syntaxe la plus simple pour afficher un horodatage dans une invite de commande serait probablement la suivante:
PS1='\D{%F} \t $...'
où
\D{format}
la date est formatée (voir la man bash
section PROMPTING) comme
%F
date complète; identique à% Y-% m-% d (voir man date
section FORMAT), et
\t
est l'heure actuelle au format HH: MM: SS sur 24 heures (voir la man bash
section PROMPTING)
nano ~/.bashrc
apporter des modifications aux variables PS1 comme indiqué ci-dessus
source ~/.bashrc
Mon temps est similaire à la cowsay
réponse ci-dessus. Vous devez mettre now
votre ~/.bashrc
mais vous pouvez aussi l'appeler depuis le terminal en tapant now
.
Voici une capture d'écran:
Le code bash est affiché dans cette réponse très détaillée:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
au moins a l'air pratique pour moi.