Provided by: manpages-pt-br_4.21.0-2_all 

NOME
glob - Caminhos de diretórios de englobamento
DESCRIÇÃ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.
Nos dias de hoje, também há uma rotina de biblioteca glob(3) que realizará esta função para um programa
de usuário.
As regras são as que seguem (POSIX.2, 3.13).
Wildcard matching
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:
Um '?' (não entre colchetes) casa com qualquer caractere unitário.
Um '*' (não entre colchetes) casa com qualquer cadeia de caracteres, incluindo uma cadeia de caracteres
vazia.
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
There is one special convention: two characters separated by '-' denote a range. (Thus, "[A-Fa-f0-9]" is
equivalent to "[ABCDEFabcdef0123456789]".) One may include '-' in its literal meaning by making it the
first or last character between the brackets. (Thus, "[]-]" matches just the two characters ']' and '-',
and "[--0]" matches the three characters '-', '.', '0', since '/' cannot be matched.)
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 '-'.)
É possível remover o significado especial de '?', '*' e '[' precedendo-os por uma barra invertida, ou,
caso seja parte de uma linha de comando do shell, cercando-os com aspas. Entre colchetes, estes
caracteres respondem por eles mesmos. Portanto, "[[?*\]" casa com os quatro caracteres '[', '?', '*' e
'\'.
Pathnames
Globbing is applied on each of the components of a pathname separately. A '/' in a pathname cannot be
matched by a '?' or '*' wildcard, or by a range like "[.-0]". A range containing an explicit '/'
character is syntactically incorrect. (POSIX requires that syntactically incorrect patterns are left
unchanged.)
Se um nome de arquivo começa com um '.', este caractere deve ser casado explicitamente. (Portanto, rm *
não removerá .profile, e tar c * não arquivará todos os seus arquivos: tar c . é melhor.)
Empty lists
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
em
xv -wait 0 *.gif *.jpg
where perhaps no *.gif files are present (and this is not an error). However, POSIX requires that a
wildcard pattern is left unchanged when it is syntactically incorrect, or the list of matching pathnames
is empty. With bash one can force the classical behavior using this command:
shopt -s nullglob
(Problemas similares ocorrem em toda a parte. Por exemplo, onde há em scripts antigos
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.
Agora que as expressões regulares têm expressões com colchetes, onde a negação é indicada por um '^', o
POSIX declarou que o efeito de um padrão de coringa "[^...]" é indefinido.
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:
(iii) Faixas X-Y compreendem todos os caractees que caem entre X e Y (inclusive) na seqüência de
conferência corrente, como definido pela categoria LC_COLLATE na localização atual.
(iv) Classes nomeadas de caracteres, como
[: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.
(v) Símbolos de conferência, como "[.ch.]" ou "[.a-acute.]", onde a string entre "[." e ".]" é um
elemento de conferência definido na localização atual. Note que este pode ser um elemento
multi-caractere.
(vi) Equivalence class expressions, like "[=a=]", where the string between "[=" and "=]" is any collating
element from its equivalence class, as defined for the current locale. For example, "[[=a=]]" might be
equivalent to "[aáàäâ]", that is, to "[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]".
VEJA TAMBÉM
sh(1), fnmatch(3), glob(3), locale(7), regex(7)
TRADUÇÃO
A tradução para português brasileiro desta página man foi criada por Rubens de Jesus Nogueira
<darkseid99@usa.net> e André Luiz Fassone <lonely_wolf@ig.com.br>
Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as
condições de direitos autorais. Nenhuma responsabilidade é aceita.
Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de
discussão de tradutores.
Linux man-pages 6.03 5 fevereiro 2023 glob(7)