sexta-feira, 12 de dezembro de 2008

CURSO DE UNIX 5

CURSO DE UNIX V por gato-bravo-e-brasileiro
* Wildcards
[para os usuarios que estao migrando do DOS]
Antes de mais nada, precisa ficar bem claro para os usuarios do DOS que os wildcards no DOS funcionam de forma muito diferente em relacao ao UNIX: quem os interpreta e o shell. Como assim? Se voce mandar um programa no DOS mostrar todos os arquivos de um diretorio, usamos por exemplo "dir *.*", o shell passa o parametro "*.*" para o comando "dir" e este ira fazer a procura dos arquivos correspondentes, mostrando-os na tela.
No UNIX e diferente: quem faz a procura e o shell. Por exemplo, quando digitamos o comando "ls *", o shell primeiro pre-processa a linha, expandindo o "*" para todos os arquivos do diretorio e entao executando o "ls" usando como argumento os arquivos achados em uma lista concatenada, usando o espaco (" ") como separador de campos. Se voce tiver acesso a uma maquina que rode UNIX, experimente executar o comando "echo *" e entao entendera melhor o que eu estou dizendo.
[pronto, so isso... :-) Agora iniciamos a nossa aula.]
Como na maioria dos outros sistemas operacionais, os shells do UNIX tem a facilidade dos wildcards, porem com muito mais poder. Veremos agora algumas maneiras de se abreviar o nome de um ou mais arquivos.
Comecaremos a demonstrar o uso dos wildcards pelo mais simples: o ponto de interrogacao ("?").
O shell ira interpreta-lo como um unico caractere. Por exemplo: voce quer listar todos os arquivos que comecam com "curso_unix_" e possuem mais um caractere. Faremos a procura usando a string "curso_unix_?".
Com isso, o shell ira expandir a string acima transformando-a no resultado da busca. Se no diretorio houver os arquivos "curso_unix_1" e "curso_unix_2", o shell passara como argumento ao programa: "curso_unix_1 curso_unix_2".
Agora vamos ver o wildcard "*". Ele e praticamente igual ao "?" com a diferenca que ele significa "zero ou mais caracteres". Se tivermos num diretorio os arquivos "curso_unix_1", "curso_unix_2" e "dummy.tar.gz", usando-se "curso*" o shell fala a expansao para "curso_unix_1 curso_unix_2".
As vezes voce precisara ser mais restrito quando for especificar um grupo de arquivos. Na pratica, para achar todos os arquivos de um diretorio que terminam com a letra "Z" ou "z", voce deve usar o wildcard "[]". Fica assim: "*[Zz]". Com isso serao localizados arquivos como "teste.Z", "abobora.z", "xyz", "xyZ", etc.
Em outras palavras, o wildcard "[]" sempre ira corresponder-se a um dos caracteres da lista que for especificada. Vale lembrar que se voce quiser, por exemplo, achar todos os arquivos que terminarem com as letras de "b" ate "l" voce pode usar: "*[b-l]".
Resumo pratico:
Wildcard
Equivale a...
?
Um unico e qualquer caractere
*
Zero ou mais caracteres
[ab]
Ou "a" ou "b"
[a-z]
Caracteres de "a" ate "z"
Vale a pena lembrar que os wildcards apenas sao expandidos para nomes de arquivos que ja existam, logo, se voce quiser criar dez arquivos, de "carta_1" ate "carta_9" e usar "carta_[1-9]" voce nao obtera sucesso. Para isso voce deve usar o operador "{}", que veremos brevemente numa proxima aula.
Caso queira ir mais fundo nos wildcards, consulte a manpage do seu shell. Para o bash, fica "man bash", para o csh, fica "man csh" e assim por diante.
* Extensoes de Arquivos
Apenas para referencia, segue uma tabela de como identificar qual o tipo do arquivo usando-se como referencia a sua extensao. Vale lembrar que isso nao vale para 100% dos casos, ja que ninguem e obrigado a usar esta convencao.
Extensao O arquivo e' um... .c Source code de um programa escrito em C. .h Header de um program escrito em C. .f Source code de um programa escrito em FORTRAN. .o Arquivo objeto (compilado). .s Source code de um programa escrito em assembly. .Z Arquivo comprimido pelo programa compress. .[1-8] Source code para uma "manpage". .tar Arquivo "tarado". .gz Arquivo comprimido pelo programa gzip. .tgz Arquivo "tarado" e comprimido pelo gzip. .txt Arquivo texto. .shar Arquivo shell. .sh Script para o Bourne shell. .csh Script para o C shell. .ps Arquivo fonte para postscript
Extensao
O arquivo e' um...
.c
Source code de um programa escrito em C.
.h
Header de um program escrito em C.
.f
Source code de um programa escrito em FORTRAN.
.o
Arquivo objeto (compilado).
.s
Source code de um programa escrito em assembly.
.Z
Arquivo comprimido pelo programa compress.
.[1-8]
Source code para uma "manpage".
.tar
Arquivo "tarado".
.gz
Arquivo comprimido pelo programa gzip.
.tgz
Arquivo "tarado" e comprimido pelo gzip.
.txt
Arquivo texto.
.shar
Arquivo shell.
.sh
Script para o Bourne shell.
.csh
Script para o C shell.
.cs
Arquivo fonte para postscript

ass:gato-bravo-e-brasileiro

Nenhum comentário: