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

Error: No site found with the domain 'moodle.idph.com.br' (Learn more)