other languages
other sections
GLOB(7) | Manual do Programador Linux | GLOB(7) |
NOME¶
glob - Caminhos de diretórios de englobamentoDESCRIÇÃO¶
Muito tempo atrás, no Unix V6, havia um programa /etc/glob que poderia expandir os padrões de coringas. Logo em seguida, isso se tornaria embutido no interpretador de comandos.CASAMENTO DE CORINGAS¶
Uma cadeia de caracteres é um padrão de coringas se contiver um ou mais caracteres `?', `*' ou `['. Englobamento é a operação que expande um padrão de coringas para uma lista de nomes de caminhos que casam com o padrão. Casamento é definido por:Classes de caracteres¶
Uma expressão `[...]' onde o primeiro caractere depois do primeiro `[' não é um `!' que casa com um caractere unitário, desde que seja um dos caracteres de dentro dos colchetes. A string cercada pelos colchetes não pode estar vazia: portanto `]' é um caractere permitido entre os colchetes, desde que seja o primeiro caractere. Portanto, `[][!]' casa com os três caracteres `[', `]' e `!'.)Faixas¶
Há uma convenção especial: dois caracteres separados por `-' denotam uma faixa. (Portanto, `[A-Fa-f0-9]' é equivalente a `[ABCDEFabcdef0123456789]'.) É possível incluir `-' com seu significado literal ao colocá-lo em primeiro ou em último entre os caracteres dentro dos colchetes. (Portanto, `[]-]' casa apenas com os dois caracteres `]' e `-', e `[--/]' casa com os três caracteres `-', `.', `/'.)Complementação¶
Uma expressão `[!...]' casa com um caractere unitário, desde que seja um caractere não presente na expressão obtida pela remoção do primeiro `!'. (Portanto, `[!]a-]' casa com qualquer caractere unitário, exceto `]', `a' e `-'.)NOMES DE CAMINHOS¶
Englobamento é a aplicação de cada um dos componentes de um nome de caminho separadamente. Um `/' em um nome de caminho não pode casar com um coringa `?' ou `*', ou com uma faixa como `[.-0]'. Uma faixa não pode conter um caractere `/' explícito; isto levaria a um erro de sintaxe.LISTAS VAZIAS¶
A bela e simples regra dada acima: `expanda um padrão de coringas na lista de caminhos de diretório de casamento' foi a definição padrão do Unix. Ela permite padrões que se expandam para uma lista vazia, como emxv -wait 0 *.gif *.jpgonde talvez nenhum arquivo *.gif esteja presente (e isto não é um erro). Porém, o POSIX requer que um padrão de coringas seja deixado inalterado quando estiver sintaticamente incorreto, ou a lista de nomes de caminhos esteja vazia. Com bash pode-se forçar o comportamento clássico, setando-se allow_null_glob_expansion=true.
rm `find . -name "*~"`os novos scripts requerem
rm -f nosuchfile `find . -name "*~"`para evitar mensagens de erro de rm chamado com uma lista de argumentos vazia.)
NOTAS¶
Expressões regulares¶
Note que padrões de coringas não são expressões regulares, apesar de que são um pouco similares. Primeiramente, eles casam com nomes de arquivos em vez de texto, e em segundo lugar, as convenções não são as mesmas: por exemplo, em uma expressão regular `*' significa zero ou mais cópias da coisa precedente.Classes de caracteres e Internationalização¶
Obviamente, faixas significavam originalmente as faixas ASCII, de forma que `[ -%]' significa `[ !"#$%]' e `[a-z]' significa "qualquer letra minúscula". Algumas implementações Unix generalizaram isso, de tal forma que que uma faixa X-Y significa o conjunto de caracteres com código entre o código de X e o de Y. Porém, isso requer que o usuário saiba o código do caractere em uso no sistema local, e além disso, não é conveniente se a seqüência de conferência para o alfabeto local difere da ordenação dos códigos de caractere. Portanto, POSIX estendeu grandemente a notação de colchetes, tanto nos padrões de coringas quanto nas expressões regulares. Anteriormente, nós vimos três tipos de itens que podem ocorrer em uma expressão em colchetes: (i) a negação, (ii) caracteres unitários explicitados e (iii) faixas. POSIX especifica faixas de uma forma internacionalmente mais útil, e acrescenta mais três tipos:[:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:], de forma que se pode dizer `[[:lower:]]' (minúsculo) em vez de `[a-z]', e funciona na Dinamarca também, onde há três letras depois do `z' no alfabeto. Essas classes de caracteres são definidas pela categoria LC_CTYPE na localização atual.
VEJA TAMBÉM¶
sh(1), glob(3), fnmatch(3), locale(7), regex(7)TRADUZIDO POR LDP-BR em 21/08/2000.¶
Rubens de Jesus Nogueira <darkseid99@usa.net> (tradução) André L. Fassone Canova <lonelywolf@blv.com.br> (revisão)12/06/1998 | Unix |