Aceitar -!
além do padrão !
(e também de outros operadores de pontuação: (
, )
e ,
específico do GNU) é um capricho do analisador de linha de comando do GNU encontrar. O código só é um pouco mais fácil de escrever se não rejeitar -!
e similares como mal formado. Como -!
seria um erro, não há problema em aceitá-lo. O padrão POSIX não diz nada sobre o que -!
significa: no que diz respeito ao padrão, ele é um predicado definido pela implementação, cujas implementações são livres para usar para indicar o que quiserem.
Aqui está uma visão geral de como o código no GNU encontra funciona:
- O código do analisador contém um lista de operadores . Os operadores são armazenados sem o seu primeiro
-
, para tornar o código um pouco menor e mais rápido. - O comando analisador de linha chama
looks_like_expression
para determinar se um argumento se parece com um predicado. Os predicados começam com-
, exceto para os operadores de caractere de pontuação única. - Depois de determinado o predicado,
find_parser
ignorou o-
se houver um. Este é o ponto em que a distinção entre!
e-!
é perdida.
looks_like_expression
ou find_parser
pode rejeitar -
seguido por um caractere de pontuação. Mas de qualquer forma, seria necessário um código adicional sem nenhum benefício real.