quinta-feira, 19 de abril de 2007

Conhecendo o linux um pouco mais a fundo

O GNU/Linux tem uma infinidade de comandos e utilitários. Não conheço uma pessoa sequer que conheça todos os comandos. Digitando:
$ echo $PATH;

num console você vê os caminhos onde o sistema busca os programas para executar (geralmente /bin/, /sbin/, /usr/bin/,...). Fui conferir o que existia nestes diretórios e me deparei com uma quantidade muito maior de programas do que eu imaginava.

Digitar man nome_do_comando exibe o conteúdo do manual, mas isso era impensável para milhares de programas. Daí surgiu a idéia de criar um script em shell que fizesse isso por mim. Só que lendo o manual do comando man, vi que ele podia mandar a saída para um navegador. Não conseguia mandar para o firefox, apenas para o w3m, um navegador de modo texto, similar ao lynx.

Após googladas e algumas tentativas frustradas, instalei o pacote groff e o pacote man2html pelo synaptic.

Mais algumas tentativas e voilá. Tinha um script que lia o conteúdo de um diretório e mandava as man pages para um outro diretório, salvando cada uma em um arquivo já no formato html.

Mas como nem tudo são flores, algumas entradas não tinham manual, e resultaram em arquivos vazio.
Dá-lhe outra rodada de shell script para criar uma rotina que verificasse quais arquivos estavam vazio e os deletassem.

Ótimo. Bastou criar um index.php dentro dos diretórios que gerasse os links. Agora posso ler tranquilamente as várias man pages pelo firefox, da mesma forma com a qual eu leio os manuais do PHP, Java, MySQL, PostgreSQL, Python, Ruby, Guia Foca Linux,... com direito a um lugar no favoritos e tudo mais.

Abaixo seguem os códigos de shell script que usei.


exporta_manual
#!/bin/bash
#
#autor: Davis Leandro P. Peixoto
#data: 19-04-2007
#script para exportação de manuais

for i in *;
do {
echo Tentando exportar o manual de $i;
man -Thtml $i > /home/user_dir/manual_folder/$i.html;
echo Manual de $i exportado;
};
done;

///////////////////


limpa_vazios
#!/bin/bash
#
#autor: Davis Leandro P. Peixoto
#data: 19-04-2007
#script limpeza de arquivos vazios

count=0;
for i in *;
do {
a=`head -n 1 $i`;
b='';
if [ "$a" = "$b" ];
then
echo apagando $i;
rm -r $i;
echo arquivo apagado com sucesso!;
count=`expr $count + 1`;
else
echo O arquivo $i está cheio e não será apagado;
fi;
};
done;

echo Foram apagados $count arquivos que estavam vazios;
echo Limpeza finalizada com sucesso;

/////////////////////////////////////////


index.php
/* criando um manipulador de diretórios */
$handle = opendir('.');

/* listando o diretório */
while (false !== ($file = readdir($handle))) {

/* e escrevendo os links */
echo "<a href=\"$file\">$file</a>";
}

/* fechando o diretório */
closedir($handle);
?>

////////////////
Nota: os scripts precisam ser executados de dentro dos diretórios (/bin/, /sbin/, etc...)

Té+
-----------
keepReading

Nenhum comentário:

Postar um comentário