[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Apoio Linux...



On Tue, 13 Apr 1999, Daniel Cukier wrote:
R>Já que foi iniciada a discussão, que tal começar pelo que foi proposto?

	Por que nao? Vamos lah.

R>1 - O que significam esse comandos e como utiliza-los? -> make, grep, sed,
R>awk

	Por partes:

	Voce conhece o "man" e o "info"?
	O "man" eh o antigo visualizador de "MANual pages", ou o manual do
usuario do linux. Ele eh dividido em varios pedacos, cada um especializado em um
comando. Ali deve constar tudo o que eh necessario para fazer com queo programa
possa ser utilizado.

	O "info" tem funcao identica: eh o programa novo, que estah substituindo
as antigas man pages. Isso vale apenas para o mundo Linux. No Unix, "man rules",
como diria o pessoal de desenvolvimento... :)

	Agora, vamos ver se eu lembro tudo o oque eu preciso para dizer para
voce algo util sobre os programas em questao... ( onde esta o meu info??? ;)

	=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	a. MAKE

	O make eh um "operario". Ele segue regras ( que a gente passa num
arquiv, geralmente chamado Makefile ) e "constroi" coisas: compila programas,
executa tarefas repetitivas, auxilia na manutencao de servicos de rede ( como o
NIS ), faz cafe, etc... etc.. etc...
	Para utilizar o make para fazer alguma coisa interessante, acho que vale
aa pena ler um tutorial. Prometo que vou procurar algum intererssante e envio
pra cah. Uma boa lida nas manpages e no Info tambem ajuda muito...  :)
	Mais tarde, com mais tempo, escreverei mais coisas sobre o make. :)


	=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	b. GREP

	O grep eh um programa "filtro". Ele deixa ( nao deixa ) passar strings
vindas da saida padrao ou de um arquivo.

	Por exemplo, para saber o nome de todas as classes que o reverbel
colocou no arquivo "Buffer.java", a gente pode utilizar o gtrep assim:

	$ grep ^Class Buffer.java

	Isso faz o seguinte: filtra a palavra "Class" -- presta atencao na
maiuscula. "Class" ( com "C" maiusculo ) eh diferente de "class" ( com "c"
minusculo. -- 

	Como eu dizia, essa linha faz o seguinte: filtra a palavra "Class" do
arquivo, imprimindo apenas as linhas que TEM essa palavra. Mas tem um detalhe.
voces notaram que eucoloquei um acento circunflexo "^" antes da palavra? Isso eh
uma dica para o grep. Quer dizer que eu quero apenas as linhas que comecam com a
palavra "Class". As outras, nao interessam.

	=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	c. SED ( Streamed Ed )
	
	Do sed, eu nao posso falar quase nada. Eu nao o utilizo. Talvez o
Reverbel possa dar uma luz... eu apenas sei que ele eh que ajuda a gente a
"editar" ( nao como a gente conhece a palavra ) textos, substituindo letras,
fazendo correcoes indicadas e outros trabalhos pesados e repetitivos. 

	No lugar do SED, a minha "caixa de ferramentas" de usuario linux tem o
PERL, que eu acho mais elegante, e que supre as minhas necessidades de edicao de
texto em linha de comando. 

	Para saber mais sobre o sed, eu acho que posso apenas indicar as
manpages e o info file. 

	Mas para saber mais sobre o perl, existem bons livros ( programming
perl, Larry Wall, O'Reilly ) e um site na www ( www.perl.org ). 

	=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	d. AWK

	O awk eh uma pequena linguagem de programacao, como o sed. A diferenca
eh que ( eu acredito ) o awk eh mais antigo, e tem algumas funcionalidades mais
interessantes. Por exemplo, com o awk eu posso separar uma informacao importante
de uma listagem complexa, sem perda de tempo. 

	Vamos dar um exeplo simples. Eu estou sentado diante de uma Ultra 1, da
Sun ( um computador mais possante que a media dos PC's ), rodando Sun OS, uma
variante do Unix, fabricado pela Sun. Por isso, os comando podem variar um
pouco. 

	Para saber que processos eu estou rodando aqui, eu utilizo o comando ps.

	carvalho@ecb[5]%ps 
	   PID TTY      TIME CMD
	  3712 pts/3    0:00 csh

	hummm... parece que eu estou rodando apenas um shell... voces talvez
vejam mais processos por aih... :)
	Bom, suponhamos que eu queira saber o PID ( Process ID ) do meu shell.
Como eu posso fazer isso? Bom, eu posso digitar "ps" num terminal e olhar.
Claro, isso nao parece ser muito optimizavel, nem automatizavel, certo?
	Se voce digitar agora assim:

carvalho@ecb[6]%ps | grep csh
  3712 pts/3    0:00 csh

	Voces veem aqui um legitimo uso do grep. O caracter engracado "|" que eu
coloquei no meio dos comandos eh chamado "pipe" ( tubo ). Ele redireciona a
saida padrao de quem estah aa direita para a entrada padrao de quem estah aa
esquerda. Assim, as informacoes podem fluir de um programa para outro sem minha
ajuda. ( muuuito util, usem a imaginacao!! ) 
	O grep utilizado aqui filtrou a saida do ps e me mostrou apenas as
linhas que estavam falando do meu shell ( o csh. No caso da maioria de voces,
provavelmente o bash ), isto eh, aquelas que tinham a palavra "csh" em algum
lugar. Claro, isso pode ser mais refinado, mas por enquanto estah bom.
	Em seguida ( finalmente ) vou utilizar o awk para imprimir apenas o
numero do processo, que eh o que eu realmente quero.

	carvalho@ecb[7]%ps | grep csh | awk '{print $1}'
	3712

	Bom, acho que nao eh dificil entender o script de awk que estah nesta
linha. Fica de licao de casa, que eu jah escrevi demais. 
	Quem primeiro descobrir, anda pra mim, que eu pago a cerveja (
coca-cola, para os abstemios ) . Experimentem voces, e me  enviem os
resultados!!! ( eu ajudo a melhorar, se alguem precisar ) 

	=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

R>2 - Qual a diferença do tar para o gzip? Como usa-los

	GZIP eh um COMPRESSOR DE ARQUIVOS. Ele apenas comprime, um a um, os
arquivos que voce pedir. Ele nao pode comprimir varios arquivos em um unico
arquivo.

	TAR eh um ARCHIVER ( se alguem souber traduzir, eu agradeco. Ah!
Verifiquem se eu escrevi certo, por favor... ). Um archiver serve para
concatenar varios arquivos diferentes em um mesmo arquivo, grandao. Eh utilizado
principalmente para fazer backup em fitas dat. As fitas dat nao permitem
sistemas de arquivos, e isso quer dizer que o melhor que voce consegue guardar
nelas eh apenas um stream de bits, um depois do outro. Por isso, o pessoal fez
um programa que permite que voce transforme o seu sistema de arquivos em alguma
coisa mais parecida com um stream de bits ( ou um arquivo unix, dependendo do
seu ponto de vista... ), que pudesse ser colocado na fita. Os outros usos do tar
sao fruto da criatividade do pessoal, que juntou as pecas de outro jeito... :)

	Para usar o tar:

	$ tar cvf <tar_file> <arquivo 1> [ <arquivo 2> ] [...]

	Isso "c"ria um novo arquivo tar, "v"erifica cada byte
gravado no arquivo, e envia as coisas para o "f"ile ( arquivo, em ingles )
chamado <tar_file>. A lista de arquivos que vem em seguida sao os arquivos que
voce quer colocar no tar. Valem diretorios e wildcards ( coringas ).

	Para utilizar o tar em conjunto com o Gzip:

	$ tar cvf - * | gzip -9 | cat tarfile.tar.gz

	Isso faz o seguinte: "arquiva" todos os arquivos deste diretorio ( e
abaixo ), mas nao manda o resultado para um arquivo. Ao inves disso, envia o
resultado para a saida padrao ( indicada como "-" no lugar do nome do arquivo ).
	O Pipe transmite os dados para a entrada padrao do gzip, lida por
dafault sempre que nao tem arquivos como argumentos para o gzip. O "-9" pede ao
gzip para se esforcar para comprimir o melhor que der os arquivos ( mas isso
pode demorar um pouco aa mais ). O segundo pipe leva os dados ( jah comprimidos
) para um programa chamado cat (licao de casa: uma olhadinha na manpage do cat,
pra saber o que ele faz ), que cuida de colocar as coisas guardadas
apropriadamente. :)

	Este nao eh o unico jeito de se fazer isso. Eh apenas o meu. 
	Cada um deve encontrar a sua maneira. Mexam-se!

R>3 - Como criar um makefile, por exemplo, para o EP2?

	Putz... isso pode ser meio complicado de se explicar por mail... podemos
conversar depois?

	Leia sobre o make!!! Eu vou precisar, pra te explicar comom fazer. Eh
simples, depois que a gente acerta umas coisinhas iniciais... 

R>Agradeço desde já as respostas!

	Disponha.
	Mas, por favor, faca menos perguntas por mail, e mande mais mails. Este
aqui estah quilometrico!! :)

	[]'z Luis.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Luis Campos de Carvalho                  System Administrator at LSI - USP
http://www.lsi.usp.br/~campos                     mailto:campos@lsi.usp.br
                             Be Cool. Be Linux.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-