Existe una mejor manera de crear una marca de tiempo frente a un echo
?
Actualmente lo hago de esta manera:
#!/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 salida debería verse así:
10:36 usb device already mounted
shell
timestamps
echo
TaXXoR
fuente
fuente
echo_time
hará lo que espera, hasta que su mensaje tenga una%
señal en él. No es una solución muy robusta.echo_time
podría usar la construcción date + echo del OPAquí hay una forma más robusta y portátil (POSIX) de hacerlo, particularmente una que permite
%
permanecer sin procesar como argumento:fuente
Puede crear una variable para
date +%R
:fuente
Con
ksh93
y versiones recientes debash
:Con
zsh
:O para evitar una rápida expansión en la
"$@"
parte:Una forma hacky para versiones anteriores de
bash
:En realidad, si el punto es hacer:
Podrías hacerlo:
O para evitar una bifurcación secundaria:
Entonces:
(tenga en cuenta que estos se repiten en stderr, que en realidad puede ser preferible).
fuente
Cuando hago cosas como esta, generalmente quiero que todas las líneas (incluida la salida de cualquier programa) tengan una marca de tiempo. Por lo tanto, usaría algo como esto:
Como Stephane señala a continuación, los programas individuales pueden amortiguar su salida cuando se envían a una tubería. Por supuesto, estos búferes se enjuagarán cuando el programa salga, por lo que, en el peor de los casos, las marcas de tiempo mostrarán cuándo salió el programa (si amortigua su salida y no imprime lo suficiente para llenar el búfer). Sin embargo, las
echo
marcas de tiempo serán todas precisas.Como muestra ejecutable para pruebas:
Salida:
fuente
ts
comando que es parte de moreutils. Es un script en perl similar, pero con varias opciones para el formato de fecha y hora, etc.ts
? Parece que sería la mejor opción aquí.Crear marcas de tiempo con
ts
instale la herramienta
ts
(parte del paquetemoreutils)
:Agregar una marca de tiempo a una salida:
salida:
fuente
fuente