Na linha de comando do Linux, William Shotts afirma que os intervalos de caracteres podem ser problemáticos. Veja o trecho relevante abaixo, a ênfase é minha .
Intervalos de caracteres
Se você está vindo de outro ambiente do tipo Unix ou tem lido alguns outros livros sobre este assunto, você pode ter encontrado as notações de intervalo de caracteres
[A-Z]
e .[a-z]
Essas são notações tradicionais do Unix e também funcionavam em versões mais antigas do Linux. Eles ainda podem funcionar, mas você deve ter cuidado com eles porque eles não produzirão os resultados esperados a menos que sejam configurados corretamente. Por enquanto, você deve evitar usá-los e usar classes de caracteres .
Do que ele está falando nas últimas frases? O que os padrões POSIX dizem sobre isso?
Isso provavelmente se refere a localidades com caracteres maiúsculos e minúsculos ordenados alternadamente, em vez do primeiro e depois do outro:
No entanto, a classe de personagem apropriada funciona:
Mas também pode corresponder mais do que apenas
a
az
:Se você quiser evitar isso e corresponder apenas as letras minúsculas do inglês
a
az
, o Bash, em particular, tem uma opção para interpretar os intervalos na ordem ASCII:E você sempre pode forçar a ordem de agrupamento padrão:
Quanto ao que o POSIX diz, parece-me que os intervalos nas expressões entre colchetes são deixados indefinidos em localidades diferentes do POSIX padrão. A descrição de correspondência de padrões refere-se à descrição regex de expressões de colchetes , que diz: