Gostaria de ajudar?
Mostrando postagens com marcador comandos. Mostrar todas as postagens
Mostrando postagens com marcador comandos. Mostrar todas as postagens

segunda-feira, 15 de junho de 2015

Obtendo a saída do comando Shel - GrADS


Olá a Todos,

Algumas pessoas utilizam o GrADS para ler os dados do GFS direto no GrADS Data Server. Em alguns casos pode ser necessário executar um script operacionalmente para efetuar esta tarefa. Um problema que pode existir para ler este tipo de dado (GrADS Data Server) operacionalmente é que por ser um dado de modelo os nomes dos arquivos mudam constantemente e torna-se necessário criar uma variável data para atualizar o nome do dado e efetuar a leitura corretamente.

Por exemplo:

Se você deseja ler o dado do GFS 0.25 deg starting from 00Z07jun2015 a url é a seguinte:

http://nomads.ncep.noaa.gov:9090/dods/gfs_0p25/gfs20150607/gfs_0p25_00z

Observe que um dos diretórios onde está armazenado o dado contém a data (em negrito) em que o dado foi gerado ou o modelo foi rodado. Para gerar esta data automaticamente você pode criar um script SHELL e utilizar o comando date e resolver este problema, mas você pode utilizar o GrADS e resolver este problema diretamente no script .gs.

Para isso você pode utilizar o comando date no próprio script .gs . O script fica assim:

'reinit'
'! date +%Y%m%d > date.txt'
date=read('date.txt')
vardate=sublin(date,2)

*Neste caso vardate=20150607
*Observe que o comando date produz uma data diferente pois busca a data do sistema

file='http://nomads.ncep.noaa.gov:9090/dods/gfs_0p25/gfs'vardate'/gfs_0p25_18z'

'sdfopen 'file

'!rm date.txt'

Eu não conheço uma outra forma de transformar o comando SHELL em variável, a única forma que conheço é escrevendo a saída do comando SHELL em um arquivo e depois ler este arquivo em seguida criando uma variável. Após a leitura do conteúdo do arquivo date.txt eu sugiro remover ('!rm date.txt') este arquivo para não ocupar espaço.

PS: Os dados do GFS são gerados de 6 em 6 horas para criar uma variável para ler os 4 arquivos você pode gerar as variáveis e utilizar um loop (WHILE) para ler cada arquivo.

Boa Sorte e Bom Trabalho a Todos!!

segunda-feira, 8 de junho de 2015

Duas variáveis em um mesmo campo - GrADS


Olá a todos,

É importante percebermos que ao criar uma figura que será inserida em um artigo para ser publicado precisamos dedicar um pouco de esforço para fazer uma figura com a maior qualidade possível. Muitas vezes seu artigo será mais lembrado pelas figuras do que pelo conteúdo (o conteúdo é mais importante, não é isto que esta em discussão).

PS. Dica para quem tem o GrADS versão 2.

Esta dica é bastante simples, mas pode ser bastante útil quando se deseja criar figuras com alta qualidade. Existem vários comandos no GrADS que te possibilitam gerar uma figura com alta qualidade. No entanto, quando plotamos duas variáveis (sobrepostas) no mesmo campo esquecemos que no GrADS a segunda variável apesar de sobreposta é uma segunda figura (com novos eixos, grades e etc) e por isso é importante inibir a plotagem dos labels dos eixos, as linhas que representam as grades e etc desta segunda variável. Ao inibir o plot do label dos eixos por exemplo você mantêm a qualidade da font das Latitudes e Longitudes por exemplo. Para que isso não ocorra use os comandos abaixo sempre antes do display da próxima variável exibida:

 'd press'
 'set xlab off'
 'set ylab off'
 'set grid off'
 'set mpdraw off'; *(Este comando inibe o plot do contorno dos continentes)
 'd temp'

 *Com o comando 'd temp' apenas os dados de temperatura serão plotados em seu campo. Espero que ajude. 

 Boa Sorte e Bom Trabalho a Todos!!

quarta-feira, 18 de fevereiro de 2015

Alterando os níveis verticais com CDO

Sugestão do Guilherme Martins!

O CDO sempre me surpreendendo!!!!
Alterando os níveis verticais com CDO.
Os níveis verticais dos modelos do CMIP5 estão em "Pa", e normalmente utilizamos em "hPa". Vamos usar o operador "setzaxis" para realizar essa alteração.
Carreguei neste tópico o arquivo "exemplo.nc" para vocês fazerem o teste.
Informações vista com "ncdump -h exemplo.nc"
double plev(plev) ;
plev:bounds = "plev_bnds" ;
plev:units = "Pa" ; <===== unidade do nível vertical
plev:axis = "Z" ;
plev:positive = "down" ;
plev:long_name = "pressure" ;
plev:standard_name = "air_pressure" ;
Informações vista com "ncdump arquivo.nc | more"
plev = 100000, 85000, 70000, 50000, 25000, 10000, 5000, 1000 ; => "Pa"
Segue a dica:
Crie um arquivo texto, e adicione as 6 linhas abaixo:
zaxistype = pressure
size = 8
name = lev
longname = pressure
units = hPa
levels = 1000 850 700 500 250 100 50 10
Salve com um nome qualquer, por exemplo, "nivel". Esse arquivo será lido pelo operador "setzaxis":
Utilize o comando abaixo:
cdo setzaxis,nivel exemplo.nc saida.nc
Esse comando altera a estrutura do seu arquivo netCDF com as novas informações em "hPa".
Para visualizar as novas alterações:
ncdump -h saida.nc

Arquivo: exemplo.nc

PS: caso o arquivo tenha dados UNDEF (que é caso), utilize o operador fillmiss ==> cdo -fillmiss -setzaxis,nivel exemplo.nc saida.nc

Boa Sorte e Bom Trabalho a Todos!

terça-feira, 28 de outubro de 2014

cdo merge levels

Olá a Todos,

Recentemente estive tentando usar o comando merge do cdo para criar um arquivo com vários níveis. O problema era o seguinte:

Eu possuo 10 arquivos de vento em formato binário sendo cada arquivo contendo 100 tempos e um nível.

A primeira coisa que eu fiz foi criar arquivos netcdf a partir dos arquivos descritores .ctl através do comando cdo import_binary -f nc *.ctl. No entanto desta forma o cdo não definia o nível referente ao arquivo e sempre atribuía nível 0 (zero). Com os arquivos criados com a descrição de nível 0 (zero) ao juntar (merge) os 10 arquivos o resultado era sempre um arquivo com somente um nível.

Eu não consegui resolver este problema de maneira mais simples o que fiz foi o seguinte:

Utilizei o comando sdfwrite do GrADS para gerar os arquivos netcdf que precisava.

Ex:

set x 1 144
set y 1 73
set t 1 100
set z 1
define uwnd = uwnd
set sdfwrite -4d arquivo1.nc
sdfwrite uwnd
quit

OBS1: É necessário inserir a função -4d do comando sdfwrite, desta forma você força que o arquivo de saída tenha 4 dimensões (lat, lon, tempo, nível)

OBS2: O nível no arquivo ctl precisa ser definido de maneira correta, por exemplo:

          zdef 1 linear 200 1

          Qualquer definição diferente disso deu errado.

Agora que possuía os 10 arquivos .nc utilizei o merge para gerar meu arquivo com os 10 níveis e 100 tempos:

cdo merge arquivo1.nc arquivo2.nc ... arquivo10.nc saida.nc

Boa Sorte e Bom Trabalho a Todos!!

quinta-feira, 6 de fevereiro de 2014

GxYAT um comando para gerar Figuras com alta resolução

A pedido de Luana Pampuch segue um exemplo para salvar no GrADS figuras em .pdf ou .eps e etc.

No OpenGrADS existe um comando chamado GxYAT que você pode criar figuras em PDF, PNG, Postscript e SVG.

Para quem escreve textos em Latex (meu caso) é excelente pois as figuras ficam com excelente resolução e durante a impressão as figuras não perdem qualidade.

Portanto, para quem esta escrevendo TCC, Dissertação ou Tese fica a dica, aprendam Latex salvem suas figuras em PDF e se livrem de serem cobrados pela má qualidade das figuras durante as defesas :).

como usar no GrADS:

'enable print nome_da_figura.gmf'
.
.
.
'print'
'disable print'


'quit'

No Terminal Linux digite:

> gxyat -o nome_da_figura.pdf nome_da_figura.gmf
É isso!!

Boa Sorte e Bom Trabalho a Todos

terça-feira, 4 de fevereiro de 2014

Script GrADS Barra em formato de Diamante


Olha o GrADS surpreendendo novamente. Recentemente encontrei um script que plota uma barra de cores em formato de diamante e irei compartilhar com vocês. Acredito que fazer figuras para apresentações com este tipo de barra pode ser interessante, vamos lá:


Para usar as opções são as seguintes:

'run diamondbar.gs -r -marg 0.1 -font 0.09 -fs 2'

Este comando serve para plotar a figura acima seguindo o exemplo disponibilizado abaixo.

Opções:

-help                = Ajuda;
-loc                  = Escolhe um local para a colorbar (r=direita-vertical, l=esquerda-vertical,
                           b=base-horizontal, t=topo-horizontal),
                           você também pode chamar o comando através de (-l, -r, -b, -t);
-size/s              = Escolha o tamanho dos diamantes;
-marg              = Escolha a margem para o eixo;
-fs/int              = Escolha o intervalo para cada número plotado ao longo da colorbar;
-font/fontsize   = Escolha o tamanho da fonte dos números;
-scol                 = Escolha a cor dos números;
-line                 = Desenha o contorno de cada diamante caso deseje.

Scripts utilizados:

barradiamante.gs
Exemplo.gs

Simples assim, espero que funcione.

Boa Sorte e Bom Trabalho a Todos!!

quinta-feira, 7 de novembro de 2013

Instalando o Climate Data Operator (CDO) com NetCDF, GRIB2 e HDF5


Para instalar o Climate Data Operator (CDO) com suporte para NetCDF, GRIB2 e HDF5. Você pode seguir os seguintes passos:

PS_1. Copie o comando existente dentro das caixas e cole em seu terminal. Isto evita problema de configurações de fonte.
PS_2. Os links de downloads (wget) podem estar desatualizados.
PS_3. Para aqueles que desejam instalar o CDO somente com suporte para Netcdf é necessário instalar a ZLIB, HDF5 e o Netcdf.

Baixe o CDO no site https://code.zmaw.de/projects/cdo/files

Para baixar no Linux use:
PS_4. Você pode baixar a última versão do CDO

wget -c http://ftp.nsysu.edu.tw/FreeBSD/ports/local-distfiles/sunpoet/cdo-1.5.9.tar.gz

Baixe o NetCDF no site http://www.unidata.ucar.edu/downloads/netcdf/index.jsp

ou,

wget -c http://pkgs.fedoraproject.org/repo/pkgs/netcdf/netcdf-4.2.1.1.tar.gz/5eebcf19e6ac78a61c73464713cbfafc/netcdf-4.2.1.1.tar.gz

Baixe o Grib API no site https://software.ecmwf.int/wiki/display/GRIB/Releases

ou,

wget -c https://software.ecmwf.int/wiki/download/attachments/3473437/grib_api-1.9.18.tar.gz

Baixe o Jasper no site http://www.ece.uvic.ca/~frodo/jasper/#download

ou,

wget -c http://www.ece.uvic.ca/~frodo/jasper/software/jasper-1.900.1.zip

Baixe o HDF5 e zlib no site ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4

Agora iremos começar a instalação.

Primeiro passo:

Em que diretório irá fazer a instalação do CDO? Sugestão /usr/local/cdo (crie a pasta que deseja instalar)

Segundo Passo:

Descompacte os arquivos baixados. Cada arquivo irá gerar uma pasta.

Ex: /home/usuario/Download/netcdf-4

Terceiro Passo: Começo da instalação.

ZLIB

Dentro da pasta da biblioteca execute o comando:

(/usr/local/cdo esta é a sugestão modifique a seu critério) ./configure -prefix=/usr/local/cdo 
make
make check
make install

HDF5

Dentro da pasta da biblioteca execute o comando:

./configure -with-zlib=/usr/local/cdo -prefix=/usr/local/cdo CFLAGS=-fPIC
make
make check
make install

NetCDF

Dentro da pasta da biblioteca execute o comando:

CPPFLAGS=-I/usr/local/cdo/include LDFLAGS=-L/usr/local/cdo/lib ./configure -prefix=/usr/local/cdo CFLAGS=-fPIC
make
make check
make install

Jasper

Dentro da pasta da biblioteca execute o comando:

./configure -prefix=/usr/local/cdo  CFLAGS=-fPIC
make
make check
make install

Grib

Dentro da pasta da biblioteca execute o comando:

./configure -prefix=/usr/local/cdo CFLAGS=-fPIC  -with-netcdf=/usr/local/cdo -with-jasper=/usr/local/cdo
make
make check
make install

Instalando o CDO

Dentro da pasta da biblioteca execute o comando:

./configure -prefix=/usr/local/cdo CFLAGS=-fPIC  -with-netcdf=/usr/local/cdo -with-jasper=/usr/local/cdo -with-hdf5=/usr/local/cdo  -with-grib_api=/usr/local/cdo
make
make check
make install

Desta forma você conseguirá instalar o CDO com suporte para netcdf, HDF5 e Grib.

PS_5. Instalando desta forma os binários de todas as bibliotecas estarão dentro do diretório /usr/local/cdo/bin e se você quiser pode adicionar este PATH no seu .bashrc. Você pode compilar as bibliotecas em pastas separadas a única alteração é indicar os diretórios corretos no momento de compilar o CDO.

PS_6. Excelente apostila para uso do CDO em Português você encontra no site do Guilherme Martins é só clicar aqui e baixar.

Boa Sorte e Bom Trabalho a Todos!!

quinta-feira, 28 de junho de 2012

Entendendo o comando cal

No penultimo post nós vimos que podemos retirar informações de data através do comando cal que representa o calendário do Linux. Com o comando cal você pode visualisar (impresso na tela/terminal) o calendário completo de um determinado mês de um determinado ano, sendo o mês representado por (01 a 12) e o ano no formato com 4 algarismos. Aproveite para neste momento ir no seu terminal e digitar cal, você verá algo como:

     Junho 2012      
Do Se Te Qu Qu Se Sá 
                             1  2 
   3   4   5   6   7   8   9 
 10 11 12 13 14 15 16 
 17 18 19 20 21 22 23 
 24 25 26 27 28 29 30

O comando man cal dar acesso ao manual do cal. Segue alguns exemplos de uso do comando cal.

>echo $(cal 06 2012)
você terá como resposta:
Junho 2012 Do Se Te Qu Qu Se Sá 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30


Observe que o comando acima é diferente do comando abaixo:

>cal 06 2012
você terá como resposta:

     Junho 2012      
Do Se Te Qu Qu Se Sá 
                              1  2 
   3   4   5   6   7   8   9 
 10 11 12 13 14 15 16 
 17 18 19 20 21 22 23 
 24 25 26 27 28 29 30

No entanto, o primeiro comando é mais utilisado pois possibilita concatenar com outros comando como cut, awk e etc. E um exemplo do concatenação do comando cal com awk nós vimos no penultimo post.

Um exemplo do uso do comando cal com o comando cut:

>echo $(cal 06 2012) | cut -c1-03
Desta forma você terá como resposta:

Jun

ou seja, cal 06 2012 exibe uma sequência de caracter e eu quero exibir somente o caracter de 1 a 3, isso significa as três primeiras letras do mês em questão (Junho).

Este comando é bastante útil e possibilita retirar diversas informações do sistema, segue mais um exemplo para saber o último dia de cada mês de um determinado ano:

>for mes in $(seq -w 1 12); do echo -n "Ultimo dia do mes $mes/2011 = "; echo $(cal $mes 2011) | awk '{print $NF}'; done
A resposta para este comando é:

Ultimo dia do mes 01/2011 = 31
Ultimo dia do mes 02/2011 = 28
Ultimo dia do mes 03/2011 = 31
Ultimo dia do mes 04/2011 = 30
Ultimo dia do mes 05/2011 = 31
Ultimo dia do mes 06/2011 = 30
Ultimo dia do mes 07/2011 = 31
Ultimo dia do mes 08/2011 = 31
Ultimo dia do mes 09/2011 = 30
Ultimo dia do mes 10/2011 = 31
Ultimo dia do mes 11/2011 = 30
Ultimo dia do mes 12/2011 = 31

Bom pessoal é isso.

Boa Sorte e Bom Trabalho a Todos.




quinta-feira, 14 de junho de 2012

Desvendando o comando chmod, chgrp, chown e etc

Todo usuário Linux experiente ou iniciante alguma vez na vida se perguntou como funciona o gerenciamento de permissões do sistema Linux? Como devemos usar comandos como o chmod, chgrp, chown e etc? Como atribuir permissão root para determinados diretórios ou arquivos? Ou o inverso, como atribuir permissão de usuário comum a arquivos/diretorios root?

O que significa cada letrinha que acompanha o nome do arquivos quando executamos um ls -la da vida?

>ls -la

-rw-rw-r--  1 grupo usuario   253 2012-06-14 00:47 script.f90

Para responder todas essas perguntas eu aconselho vocês darem uma lida em um artigo desenvolvido pelo Armando Martins de Souza na comunidade VivaoLinux.com.br, o artigo é extremamente didático e explicador.

Segue os Links:



Bom espero que vocês aproveitem.

Boa Sorte e Bom Trabalho a Todos

quinta-feira, 7 de junho de 2012

Utilizando o Cron (Crontab)

O "cron" é um software do sistema Unix (linux) que é responsável por efetuar tarefas agendadas pelo usuário, este sistema vem instalado em todas as distribuições Linux e é ativado logo no boot do sistema. Sua utilização é apropriada para quem deseja que alguma atividade/tarefa seja executada automaticamente pelo sistema no minuto/hora/dia/dia da semana/mês desejado pelo usuário. Você poderá por exemplo agendar a limpeza dos arquivos temporários para toda segunda feira, por exemplo, o o "cron" faz uma verificação a cada minuto para identificar alguma tarefa agendada e desta forma ele executa tal tarefa sempre no período determinado.

Para usar o "cron" você pode usar editores como vi, vim ou simplesmente digitar no terminal crontab -e e editar como se estivesse no vi, por exemplo. O crontab tem a seguinte estrutura de execução:

MM HH DD mm SS US tarefa
  |      |    |      |     |    |      |
  |      |    |      |     |    |      |___tarefa
  |      |    |      |     |    |______usuário
  |      |    |      |     |_________dia da semana
  |      |    |      |____________mês
  |      |    |_______________dia do mês
  |      |__________________hora
  |______________________minuto

A sintaxe é a seguinte:

MM: digite aqui minuto (0-59);
HH: digite aqui hora (0-23);
DD: digite aqui dia do mês (0-31);
mm: digite aqui mês (1-12);
SS: digite aqui dia da semana (0-7) vê Obs 1;
US: digite aqui o usuário responsável pela execução (não coloque nada caso o executor seja o usuário que esta criando a lista no crontab);
tarefa: digite aqui a tarefa a ser executada (script).

Obs 1: Em dia_da_Semana, 0 refere-se a domingo; e 6, ao sábado.
       No caso de dia da semana funciona também as três primeiras letras
       (em inglês) do dia da semana (SUN,MON,TUE,WED,THU,FRI,SAT)
Obs 2: Em qualquer posição pode-se usar o * (asterisco) quando não se
       importar com o campo em questão.
Obs 3: Pode-se utilizar intervalos nesses campos. O caracter para intervalo
       é o - (hifen).
Obs 4: Pode-se utilizar lista de valores nesses campos. O caracter para a
       lista é a , (vírgula).
Obs 5: Qualquer texto colocado após o programa que será executado será
       considerado comentário e não será interpretado pelo cron


Três comandos importantes de edição do crontab vocês precisam saber:

crontab -e usado para editar;
crontab -l usado para listar tarefas agendadas;
crontab -r usado para remover o arquivo ou lista existente no crontab.

Segue alguns exemplos de estrutura do crontab:

0       12      *       *       * /home/usuario/tarefa.sh

O exemplo acima significa que em qualquer mês, dia da semana, dia do mês sempre as 4 horas em ponto o programa tarefa.sh será executado.

Quando você quer que a tarefa seja executada sempre, por exemplo, todos os dias, você digita "*" no local reservado para que dia do mÊs e desta forma todos os dias do mês a tarefa será executada. Isto serve para todas as outras  condições.

Exemplo:

*          *          *          *           * /home/usuario/tarefa.sh

O exemplo acima significa que em qaulquer dia do mês ou da semana, qualquer mês, qualquer hora e minuto o programa tarefa.sh será executado, ou seja, a cada minuto que se passa o programa será executado.

Exemplo:

0       12      *       *       * /home/usuario/tarefa1.sh
0        4      15      *       * /home/usuario/tarefa2.sh 

Observe que no exemplo acima existem duas tarefas agendadas e é desta forma que tem que ser feito uma tarefa logo abaixo da outra, sendo que cada uma com sua configuração temporal especifica, obviamente que as duas tarefas poderiam ser executadas no mesmo momento.

Boa Sorte e Bom Trabalho a Todos!!

quarta-feira, 6 de junho de 2012

Compactando/Descompactando arquivos

Sempre fica a dúvida de qual comando usar para compactar e descompactar arquivos, para usuários Linux o que não falta são extensões de arquivos compactados, .zip, .rar, .tar.gz, .bz2, .tar.bz2 entre outros. Segue uma pequena lista de como compactar e descompactar seus arquivos ou diretorios:

Compactando e Descompactando arquivos .tar:

Este tipo de compactação merece um pequeno resumo sobre sua estrutura.

tar -(parâmetro) arquivo.extensão nome-do-arquivos(s)-a-serem-compactados

Estes parâmetros não usados aleatoriamente eles tem um significado:

-c - cria um novo arquivo tar;
-t - exibe o conteúdo de um arquivo tar;
-p - mantém as permissões originais do(s) arquivo(s);
-r - adiciona arquivos a um arquivo tar existente;
-f - permite especificar o arquivo tar a ser utilizado;
-v - exibe detalhes da operação;
-w - pede confirmação antes de cada ação no comando;
-x - extrai arquivos de um arquivo tar existente;
-z - comprime o arquivo tar resultante com o gzip (visto mais à frente);
-C - especifica o diretório dos arquivos a serem armazenados (note que, neste caso, a letra é maiúscula).



Com este mesmo compactador (tar) é possivél compactar como .tar, .tar.gz, .tar.bz2, para isso sua-se:

Compactando .tar

>tar -cvf arquivo.tar arquivo_1 arquivo_2 arquivo_n ou diretorio

Compactando .tar.gz

>tar -zcvf arquivo.tar.gz arquivo_1 arquivo_2 arquivo_n ou diretorio

Compactando .tar.bz2

>tar  -jcvf arquivo.tar.bz2 arquivo_1 arquivo_2 arquivo_n ou diretorio

Compactando .zip

>zip -r arquivo.zip arquivo_1 arquivo_2 arquivo_n ou diretorio 

Compactando .rar

>rar arquivo.rar arquivo_1 arquivo_2 arquivo_n ou diretorio



Descompactando .tar:

>tar -xvf arquivo.tar (pode inserir o diretorio onde quer descompactar)

Descompactando .tar.gz:

>tar -zxvf arquivo.tar.gz (pode inserir o diretorio onde quer descompactar)

Descompactando .tar.bz2:

>tar -jxvf arquivo.tar.bz2 (pode inserir o diretorio onde quer descompactar)

Descompactando .zip

>gunzip arquivo.zip (pode inserir o diretorio onde quer descompactar)

Descompactando .rar

>unrar arquivo.rar



Site indicado compactando e descompactando.

Boa Sorte e Bom Trabalho a Todos.

terça-feira, 5 de junho de 2012

Comando "date" Linux

Durante o desenvolvimento de alguns programas eu precisei criar uma data formatada, as vezes para baixar dados, gerar título de figuras ou nome de imagens e etc você precisa de uma data formatada para inserir no teu programa/script e etc. Difícil de entender? Eu explico. Imagina que você criou um script .sh que executa um script GrADS para gerar algumas imagens de precpitação por exemplo e você quer que cada imagem seja salva com a seguinte estrutura (prec_anomesdia.gif) sendo que neste caso especifico o parâmetro dia vamos dizer assim seja variável, uma forma de conseguir esta data é utilizando o comando "date" do linux.

Com o comando "date" é possível Exibir e Alterar a data/hora do Sistema, Exibir a data/hora Formatada e Efetuar cálculos com Data e Hora.

A utilização deste comando é fácil basta utilizar alguns parâmetros disponiveis:

%%   um % literal
%a    nome abreviado do dia da semana do idioma (ex.: Dom)
%A    nome completo do dia de semana na localidade (por exemplo, Sábado)
%b
    nome abreviado do mês na localidade (por exemplo, Jan)
%B    nome completo do mês na localidade (por exemplo, Janeiro)
%c    data e hora na localidade (por exemplo, Sáb 08 Mar 2008 18:34:17 BRT)
%C   século; como %Y, exceto a omissão dos dois últimos dígitos (ex.: 20)
%d   dia do mês (ex.: 01)
%D   data; o mesmo que %m/%d/%y
%e   dia do mês, preenchido por espaço; o mesmo que %_d
%F   data completa; o mesmo que %Y-%m-%d
%g   os últimos dois dígitos do ano do número ISO da semana (veja %G)
%G   ano do número ISO da semana ISO (veja %V); normalmente útil só com %V
%h   o mesmo que %b
%H   hora (00..23)
%I    hora (01..12)
%j    dia do ano (001..366)
%k   hora ( 0..23)
%l    hora ( 1..12)
%m   mês (01..12)
%M   minuto (00..59)
%n    um caractere de nova-linha
%N   nanosegundos (000000000..999999999)
%p   o equivalente na localidade para AM ou PM; em branco se desconhecido
%P   como %p, mas em minúsculas
%r    a hora no relógio de 12 horas na localidade (por exemplo, 11:11:04 PM)
%R   hora e minuto no estilo 24 horas; o mesmo que %H:%M
%s    segundos desde 1970-01-01 00:00:00 UTC
%S   segundo (00..60)
%t    uma tabulação
%T   as horas; o mesmo que %H:%M:%S
%u   dia da semana (1..7); 1 é segunda-feira
%U   número da semana no ano, sendo domingo o início da semana (00..53)
%V   número ISO da semana, sendo segunda-feira o início da semana (01..53)
%w   dia da semana (0..6); 0 é domingo
%W   número da semana no ano, sendo segunda-feira o início da semana (00..53)
%x    representação da data na localidade (por exemplo, 31/12/99)
%X    representação da hora na localidade (por exemplo, 23:13:48)
%y    os últimos dois dígitos do ano (00..99)
%Y    ano quatro digitos (por exemplo 2012)
%z    fuso horário numérico +hhmm (por exemplo, -0300)
%:z   fuso horário numérico +hh:mm (por exemplo, -03:00)
%::z  fuso horário numérico +hh:mm:ss (por exemplo, -03:00:00)
%:::z  fuso horário numérico com : para a precisão necessária (por exemplo, -04, +05:30)
%Z   abreviação alfabética do fuso horário (por exemplo, BRT)

Se você for agora (05/06/2012 16:42) e digitar date em seu terminal o sistema te retornará:

>date
>Ter Jun  5 16:42:49 BRT 2012

Existem algumas formas de você combinar os parâmetros listados acima e ter como resultado uma data na estrutura/ordem que você deseja, segue alguns exemplos:

>date +%d%m%Y
>05062012

Caso você queira separar com uma"/" cada informação é só inserir uma barra antes de cada simbolo de "%":

>date +%d/%m/%Y
>05/06/2012 

Para o ano apenas com dois dígitos:

>date +%d/%m/%y
>05/06/12 

É possível manipular apenas a horas: (observe que precisamos inserir ":" para separar horas, minutos e segundos)

>date +%H:%M:%S
>16:42:49

Se você desejar inserir o nome do mês e não o número também é possível: (observe que este comando é preciso esta entre aspas "" e existe um espaço entre um parâmetro e outro caso contrario a informação virá junta).

>date "+%d %B %Y"
>05 Junho 2012

Uma outra informação referente a estrutura anterior é que você pode inserir o "de" em sua data, para isso digite:

>date "+%d "de" %B "de" %Y"
>05 de junho de 2012

Caso precise inserir o dia da semana o comando seria o seguinte:

>date "+%d "de" %B "de" %Y, %A"
>05 de junho de 2012, terça

Este comando é sensacional, se soubermos utilizá-lo bem tiramos bastante proveito dele, para quem trabalha operacionalmente ou quem costuma baixar dados diariamente, fazer imagens/figuras diariamente ou executar um determinado script operacionalmente vai fazer bom proveito dele.

Com o comando date também é possível conseguir datas anteriores ou posteriores. Exemplos:

Em meu script eu preciso de uma data de cinco dias atrás e cinco dias para frente, para isso:

>date +%d/%m/%Y -d "5 days ago"
>31/05/2012

>date +%d/%m/%Y -d "5 days"
>10/06/2012

Também é possivel por exemplo saber a data um mês e dois dias atrás, uma semana e um dia, ou que dia nós teremos caso adicionarssemos 49 horas a nossa data atual?

Um mês e dois dias atrás:

>date -d "1 month ago 2 day ago"
>Qui Mai  3 16:42:49 BRT 2012

Um mês e dois dias a frente:

>date -d "1 month 2 day"
>Sab Jul  7 16:42:49 BRT 2012

Uma semana e um dia atrás:

>date -d "1 week ago 1 day ago"
> Seg Mai 28 16:42:49 BRT 2012

Que dia teremos se adicionarmos 49 horas na data atual?

>date --date "49 hours"
>Qui Jun 7 17:42:49 BRT 2012

Existe uma serie de combinações possíveis, segue alguns exemplos:

Se usarmos o comando:
>date
ou
>date --date=now
ou
>date --date=today
o resultado é o mesmo

>date --date='10 minutes'
>Ter Jun 5 16:52:49 BRT 2012


>date --date='10 seconds ago'
>Ter Jun 5 16:42:39 BRT 2012

>date --date='10 hours'
>Ter Jun 5 02:42:39 BRT 2012

>date --date='tomorrow'
>Qua Jun 6 16:42:49 BRT 2012

>date --date='10 day'
>Sex Jun 15 16:42:49 BRT 2012

>date --date='yesterday'
>Seg Jun 4 16:42:49 BRT 2012

>date --date='1 fortnight'
>Ter Jun 19 16:42:49 BRT 2012

>date --date='1 year'
>Ter Jun 5 16:42:49 BRT 2013

Bom galera é isso, depois eu irei inserir aqui um script que manipula essas datas. Tem um post em um forum de altoria do Rafael Brianezi da Silva no qual eu tomei base para escrever este, segue.

Boa Sorte e Bom Trabalho a Todos!!