Nome de arquivo com timestamp simplificado

Postado em 12 de Agosto de 2020
Atualizado em 4 de Novembro de 2020

Quando vou escrever um post no Jekyll ou criar um arquivo de log com a data no nome, eu normalmente engasgo para achar um jeito direto de fazer isso. Há uma solução simples: date -I.

1
2
./meu-programa.sh > meu-programa.$(date -I).log
cp template-de-post.md _posts/$(date -I)-slug-do-post.md

Usar essa ferramenta padrão do GNU/Linux permite que você simplesmente escreva touch $(date -I).md para criar um arquivo 2020-08-12.md.

Eu sempre tinha que parar para reler o man date ou buscar na internet de novo e de novo como fazer isso, e depois de sempre chegar no mesmo resultado ficou claro para mim que date -I quanto date -Is (s de segundos) são as respostas que eu estou procurando 95% do tempo:

1
2
3
4
# dentro do meu-programa.sh
echo "Programa começou em $(date -Is)"
# saída é:
# Programa começou em 2020-08-12T09:15:16-03:00

Ambos os formatos de data são hierárquicos, com intervalos de tempo maior à esquerda. Isso significa que você pode facilmente ordená-los (e até usar TAB para completar) sem esforço ou ferramenta extra.