Estoy tratando de crear una variable de marca de tiempo en un script de shell para facilitar un poco el registro. Quiero crear la variable al comienzo del script y hacer que imprima la hora actual cada vez que emito echo $timestamp
. Está resultando ser más difícil de lo que pensaba. Aquí hay algunas cosas que he probado:
timestamp="(date +"%T")"
echo imprime (date +"%T")
timestamp="$(date +"%T")"
echo imprime la hora en que se inicializó la variable.
Otras cosas que he probado son solo pequeñas variaciones que no funcionaron mejor. ¿Alguien sabe cómo lograr lo que estoy tratando de hacer?
echo "$(timestamp): something happened"
.date +"%Y-%m-%d_%H-%M-%S"
Si desea obtener la marca de tiempo de Unix, debe usar:
%T
te dará el tiempo justo; igual que%H:%M:%S
(a través de http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ )fuente
date
. Sin embargo, también voté por la respuesta "correcta". No estaba buscando eso, pero es una mejor respuesta a la pregunta original y también es muy útil para mí.fuente
echo $(date +"%Y-%m-%dT%T.%3N%z")
Sin embargo, esto no puedo hacer que funcione en un terminal Mac. Cómo hacer lo mismo en Mac. GraciasEl formato ISO 8601 (
2018-12-23T12:34:56
) es más legible que la marca de tiempo UNIX. Sin embargo, en algunos sistemas operativos no puede tener:
en los nombres de archivo. Por lo tanto, recomiendo usar algo como esto en su lugar:Puede usar el siguiente comando para obtener la marca de tiempo en este formato:
Este es el formato que he visto usar muchas aplicaciones. Otra cosa buena de esto es que si los nombres de sus archivos comienzan con esto, puede ordenarlos alfabéticamente y se ordenarían por fecha.
fuente
TZ=UTC date +...
puede hacer que esto sea más portátil usando la marca de tiempo UTCEstoy usando ubuntu 14.04.
La forma correcta en mi sistema debería ser
date +%s
.La salida de
date +%T
es como12:25:25
.fuente
Usar sustitución de comando:
fuente
Puedes usar
Esto se entrega en el formato
2014-02-01 15:12:35-05:00
Los caracteres back-tick (
`
) harán que se evalúe lo que hay entre ellos y que el resultado se incluya en la línea.date --help
Tiene otras opciones.fuente
touch $timestamp
, producirá dos archivos.Las versiones recientes de
bash
no requieren una llamada al programa externodate
:%(...)T
utiliza el argumento correspondiente como marca de tiempo UNIX y lo formatea de acuerdo con elstrftime
formato de estilo entre paréntesis. Un argumento de-1
corresponde a la hora actual, y cuando no se produciría ninguna ambigüedad se puede omitir.fuente
Y para mis compañeros europeos, intente usar esto:
dará un formato del formato: "15-02-2020_19-21-58"
Llama a la variable y obtiene la representación de cadena como esta
fuente
srand sin valor utiliza la marca de tiempo actual con la mayoría de las implementaciones de Awk.
fuente