Provided by: manpages-pt-br_4.23.1-1_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 '-', '.', and '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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 ⟨debian-l10n-portuguese@lists.debian.org⟩.