De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 23 de janeiro de 2018
O comando date
, na sua forma mais simples, exibe a data do sistema:
$ date
Qua Out 25 22:34:03 BRST 2017
Mas não é só isto, podemos usar o comando date
para diversas finalidades.
A tabela abaixo apresenta as múltiplas diretivas aceita pelo comando date
:
Diretiva | Significado |
---|---|
%d |
Dia |
%m |
Mês em representação numérica |
%Y |
Ano representado em quatro dígitos |
%F |
Equivalente a %Y-%m-%d (formato frequentemente utilizado para inserção em bancos de dados) |
%A |
Dia da semana por extenso |
O sinal de +
indica que utilizaremos os caracteres de formatação. Na Dicas-L,
o arquivo em que escrevo a mensagem do dia, tem o formato AAAAMMDD
,
ou seja, ano com quatro algarismos, mês com dois algarismos e dia também
com dois algarismos. Eu tento escrever tudo com bastante antecedência,
então para que meu script descubra qual arquivo formatar, publicar no site,
e enviar para os assinantes, eu preciso fazer um teste:
TIP_FILE=`date +%Y%m%d` if [ -s $TIP_FILE.t2t ] then .....
O valor da variável TIP_FILE
é obtido a partir do comando date +%Y%m%d
.
Pela tabela acima, podemos ver que a data gerada tem o formato
que preciso (AAAAMMDD
). Uma vez obtido o nome do arquivo, faço então um
teste para ver se o arquivo existe (if [ -s $TIP_FILE.t2t ]
). A diretiva
-s
verifica se o arquivo existe e se possui tamanho diferente de zero.
Caso exista, os comandos subsequentes (não listados) fazem todo o trabalho
(formatar, atualizar o site, enviar o email, gerar a lista de autores,
lista de artigos, e um monte de outras coisas).
No meu sistema, o idioma é o português do Brasil. Mas dependendo da
necessidade, eu posso gerar a saída do comando date
em outros idiomas. Para
isto, basta definir a variável LANG
seguida do comando date
:
$ LANG=pt_BR.utf8 date Qua Out 25 22:51:26 BRST 2017 $ LANG=en date Wed Oct 25 22:51:32 BRST 2017
Para informar ao comando date
o deslocamento de uma data, utilizamos
o parâmetro -d
ou --date
. O deslocamento pode ser feito em dias
(day), semanas(week), meses(month) ou anos(year):
$ date -d "1 month" Sáb Nov 25 23:01:34 BRST 2017 $ date -d "2 week" Qua Nov 8 23:01:56 BRST 2017
Para "voltarmos no tempo" utilizamos a variante ago
ou então especificamos
valores numéricos positivos (para avançar no tempo) e negativos (para datas
passadas).
$ date -d "3 year ago"
Sáb Out 25 23:03:20 BRST 2014
No exemplo abaixo, queremos definir a variável amanha
com a data do
dia seguinte, usando a diretiva tomorrow
:
$ amanha=`date +%d --date="tomorrow"` $ echo $amanha 10 $ amanha=`date +%D --date="tomorrow"` $ echo $amanha 10/10/17
A diretiva +%d
refere-se ao dia do mês, e apenas a ele. Já a diretiva
+%D
se refere à data completa, no formato dd/mm/aa.
Vejamos mais alguns exemplos:
$ amanha=`date +%D --date="next week"` $ echo $amanha 10/16/17 $ amanha=`date +%D --date="next month"` $ echo $amanha 11/09/17 $ amanha=`date +%d --date="-10 days"` $ echo $amanha 29
As diretivas next week
e next month
significam respectivamente
próxima semana
e próximo mês
. Vejam que interessante, você pode
também fazer contas com a data, como em -10 days
, que é a data de hoje
menos dez dias. A diretiva +10 days
significa, calcule qual será a data
somando dez dias à data de hoje.
Até agora lidamos apenas com datas, mas o comando date
pode exibir também o
horário. Com a conectividade global que temos hoje, suponha que você queira
saber o horário na costa oeste dos Estados Unidos, para assistir a uma palestra
na Internet que foi anunciada com a hora de Los Angeles. Você precisa traduzir
este horário para a hora local, para não perder a palestra. Simples:
$ TZ='America/Los_Angeles' date
Qua Out 25 17:26:50 PDT 2017
Estamos cinco horas adiantados em relação a Los Angeles. TZ é abreviação de timezone.
Em linhas gerais é isto, experimentando com variações dos comandos acima, é possível fazer bastante coisa. Posso arriscar dizer que este comando é um dos mais comumente usados em shell scripts. Vale a pena conhecê-lo melhor.
A documentação do comando date
(man date) fornece informações bem
detalhadas sobre as diretivas aceitas.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários