você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Geração de arquivos de índice em html

Por Rubens Queiroz de Almeida

Data de Publicação: 14 de Fevereiro de 2007

Em dos sites que mantenho, chamado Contando Histórias, eu criei uma página onde relaciono todo o conteúdo do site. Esta página é gerada através de um shell script que conta o número de mensagens existentes, divide este número por dois, e monta uma tabela com duas colunas. Para entender melhor o que é feito, nada melhor do que visitar a página de arquivo do site.

Vamos então ao script e à explicação de seu funcionamento.

  #!/bin/bash
  
  homedir=/html/contandohistorias
  
  cd $homedir/html
  
  # O laço que se segue trabalha
  # sobre todos os arquivos do diretório
  # /html/contandohistorias/inc que
  # tenham a terminação "inc". Estes são arquivos
  # no formato html, gerados pelo software txt2tags
  # (txt2tags.sourceforge.net).
  
  for file in *.inc
  do
  
  # O arquivo php final é formado a partir do nome do
  # arquivo terminado em "inc". Este nome é atribuído
  # à variável $php, definida no próximo comando
  
    php=`echo $file | sed 's/inc/php/'`
  
  # No arquivo html a primeira linha contém o título
  # da mensagem, formatada como título de nível 1
  # (H1). O título é extraído desta linha com o
  # comando sed e em seguida convertido em uma
  # referência html, para ser usada mais tarde na
  # montagem do arquivo geral.
  
    sed -n 1p $file | sed 's:<H1>::;s:</H1>:</A>:' | sed "s:^:<BR><A HREF=/historias/$php>:" >> /tmp/idx.tmp
  
  # Usamos o comando tac para inverter a ordem das
  # mensagens, deixando as mais recentes em primeiro
  # lugar na listagem.
  
    tac /tmp/idx.tmp > /tmp/idx.$$ && mv /tmp/idx.$$ /tmp/idx.tmp
  done
  
  cp /tmp/idx.tmp $homedir/inc/listagem.inc
  
  # Fazemos a seguir a contagem de linhas do arquivo
  # idx.tmp, que representa o total de mensagens já
  # enviadas. A variável $half é obtida dividindo
  # por 2 o número total de linhas do arquivo
  
  lines=`wc -l /tmp/idx.tmp | awk '{print $1}'`
  half=`expr $lines / 2`
  
  # Usamos agora o comando split para partir o
  # arquivo em dois. A diretiva "-l" sinaliza que
  # a divisão do arquivo deve ser feita levando-se
  # em conta o número de linhas (lines).
  
  split -l $half /tmp/idx.tmp
  
  # o comando split gera dois arquivos "xaa" e
  # "xbb". Estes dois arquivos formarão as duas
  # colunas da tabela.
  
  mv xaa $homedir/inc/coluna1.inc
  mv xab $homedir/inc/coluna2.inc
  
  # A seguir, fazemos a construção do arquivo
  # php final, através da inclusão dos diversos
  # elementos da página: cabeçalho (Head.inc), barra
  # de navegação (navbar.inc), barra da esquerda
  # (esquerda.inc), e as duas colunas da tabela
  # (coluna1.inc e coluna2.inc).
  
  
  echo "<?PHP include(\"/html/contandohistorias/inc/Head.inc\"); ?>
  <div id=top>
  <H1>Contando Histórias</H1>
  <?PHP include(\"/html/contandohistorias/inc/navbar.inc\"); ?>
  </div>
  
  <div id=mainleft>
  <?PHP include(\"/html/contandohistorias/inc/esquerda.inc\"); ?>
  </div>
  
  <div id=maincenter>
  <h1>Arquivo Lista Contando Histórias</h1>
  <table>
  <tr valign=top>
  <td>
  <?PHP include(\"/html/contandohistorias/inc/coluna1.inc\"); ?>
  </td>
  <td>
  <?PHP include(\"/html/contandohistorias/inc/coluna2.inc\"); ?>
  </td>
  </tr>
  </table>
  </html>
  </body>" > $homedir/arquivo.php
  
  rm /tmp/idx.*

Download deste script

Recomende este artigo nas redes sociais

 

 

Veja a relação completa dos artigos desta coluna