Percebo muitos utilitários bash como ls
, cp
, mv
, grep
usam expressões regulares e correspondência de padrões. Por exemplo, símbolos como * [] {} etc.
No entanto, acho que isso é diferente em alguns aspectos de outros tutoriais de expressões regulares que encontro na Internet. Existe um padrão específico que esses utilitários seguem ou uma lista abrangente de atalhos em algum lugar?
Obrigado
Responder1
Embora semelhantes, os padrões curinga aos quais você está se referindo não são expressões regulares; eles sãopadrões globaise neste contexto,padrões de concha. Eles são expandidos pelo próprio shell – não por comandos como ls
, cp
, etc. Só para esclarecer, esses comandos não são na verdade “utilitários bash”; são programas que podem ser executados porqualquerconcha.
Quando um comando é digitado em um shell, o shell analisa os tokens (palavras) e uma das coisas que faz é expandirpadrões globaisem nomes de arquivos apropriados. No caso mais comum, esses nomes de arquivos são fornecidos pelo shell como uma lista de argumentos para o comando que está sendo invocado.
Estandardização
Esses padrões de shell foram padronizados para sistemas operacionais do tipo Unix noPOSIX especificação:Notação de correspondência de padrões.
Alguns shells (Bash e Korn Shell) vão além e estendem esses padrões para implementarglobos estendidos. Para obter mais informações, consulte a seção relevante emWiki de Greg.