Existe une meilleure façon de créer un horodatage devant un echo
?
Actuellement, je le fais de cette façon:
#!/bin/sh
if mount | grep -q /mnt/usb; then
echo `date +%R\ ` "usb device already mounted"
else
echo `date +%R\ ` "mounting usb device..."
mount -t msdosfs /dev/da0s1 /mnt/usb
if mount | grep -q /mnt/usb; then
echo `date +%R\ ` "usb device successfully mounted"
fi
fi
La sortie devrait ressembler à quelque chose comme ça:
10:36 usb device already mounted
shell
timestamps
echo
TaXXoR
la source
la source
echo_time
fera ce que vous attendez, jusqu'à ce que votre message soit%
signé. Pas une solution très robuste.echo_time
pourrait simplement utiliser la construction date + echo de l'OPVoici un moyen plus robuste et portable (POSIX) de le faire, en particulier celui qui permet
%
de rester non traité comme argument:la source
Vous pouvez créer une variable pour
date +%R
:la source
Avec
ksh93
et versions récentes debash
:Avec
zsh
:Ou pour éviter une expansion rapide de la
"$@"
pièce:Un moyen hacky pour les anciennes versions de
bash
:En fait, si le but est de le faire:
Vous pourriez faire:
Ou pour éviter de bifurquer un sous-shell:
Puis:
(notez que ceux-ci sont répercutés sur stderr, ce qui peut en fait être préférable).
la source
Quand je fais des choses comme ça, je veux généralement que toutes les lignes (y compris toute sortie de programme) soient horodatées. Ainsi, j'utiliserais quelque chose comme ceci:
Comme Stephane le souligne ci-dessous, les programmes individuels peuvent tamponner leur sortie lorsqu'ils sont envoyés à un tuyau. Bien sûr, ces tampons seront vidés à la sortie du programme, donc au pire les horodatages s'afficheront à la sortie du programme (s'il tamponne sa sortie et n'imprime pas suffisamment pour remplir le tampon). Cependant, les
echo
horodatages seront tous précis.En tant qu'échantillon exécutable pour les tests:
Production:
la source
ts
commande qui fait partie de moreutils. C'est un script perl similaire, mais avec diverses options pour le format d'horodatage, etc.ts
? Il semble que ce serait la meilleure option ici.Création d'horodatages avec
ts
installer l'outil
ts
(partie du packagemoreutils)
:Ajout d'un horodatage à une sortie:
production:
la source
la source