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

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)