Skip to content
Latchkey

O Que É Globbing? Expansão de Padrões de Nome de Arquivo

Globbing é a expansão pelo shell de padrões com wildcard como *.js na lista real de nomes de arquivo correspondentes antes de um comando rodar.

Quando você escreve rm *.tmp, o shell, não o rm, descobre quais arquivos correspondem a *.tmp e substitui o padrão por essa lista. Isso é globbing: expansão de nomes de arquivo baseada em padrões. É incrivelmente conveniente, mas tem casos extremos surpreendentes no CI, especialmente quando um padrão não corresponde a nada.

O que é globbing

Globbing é como o shell transforma um padrão com wildcard em uma lista de nomes de arquivo. Acontece antes de o comando rodar, então o comando nunca vê o padrão, apenas a lista expandida de correspondências.

Padrões de glob comuns

  • * corresponde a qualquer sequência de caracteres exceto um ponto inicial.
  • ? corresponde a qualquer caractere único.
  • [abc] corresponde a um caractere do conjunto.
  • ** corresponde através de diretórios quando globstar está habilitado.

A surpresa da não correspondência

Por padrão, se um glob não corresponde a nada, o shell deixa o padrão literal inalterado. Então rm *.tmp sem arquivos correspondentes passa *.tmp ao rm como um nome literal, produzindo um erro confuso.

Controlando o comportamento do glob

Opções do Bash mudam isso: nullglob faz um padrão sem correspondência expandir para nada, e failglob o torna um erro. Escolher a opção certa evita comportamento surpreendente em scripts.

Globbing no CI

Um passo como cp dist/*.js out/ pode falhar inesperadamente se nenhum arquivo JS foi construído, porque o padrão não expandido é passado adiante. Proteger com nullglob ou verificar que arquivos existem primeiro torna passos de CI robustos.

Globs previsíveis em runners gerenciados

Nos runners da Latchkey, defina shopt -s nullglob em um passo quando um padrão pode legitimamente não corresponder a nada, para que um resultado vazio seja tratado de forma limpa em vez de falhar em um padrão literal.

Principais conclusões

  • Globbing é o shell expandindo padrões com wildcard em nomes de arquivo antes de um comando rodar.
  • Se nada corresponder, o padrão literal é passado adiante por padrão.
  • Opções como nullglob e failglob tornam correspondências vazias seguras ou explícitas no CI.

Guias relacionados