Essa é uma característica conhecida do GNU getopt
(usada para análise de opções por ferramentas GNU).
grep hi -vR
é exigido pelo POSIX para procurar hi
no arquivo chamado -vR
, já que muitas opções não são reconhecidas por argumentos não-opcionais (como hi
aqui).
A maioria das ferramentas GNU ou ferramentas que estão sendo usadas ou a API GNU getopt
no modo padrão não honram isso a menos que POSIXLY_CORRECT
esteja no ambiente.
Então você precisa:
POSIXLY_CORRECT=1 grep hi *
(forçar grep
a se comportar de uma maneira compatível com POSIX) ou
grep -- hi *
(marque explicitamente o final das opções com --
) ou
grep hi ./*
(verifique se todos os nomes de arquivos começam com ./
e, portanto, não -
).
Em qualquer caso, com:
grep -e hi -vR
você teria o problema com o GNU e com o não-GNU grep
, já que hi
não é um argumento não-opcional, mas um argumento para a opção -e
, então você precisaria:
grep -e hi -- *
ou (melhor como também resolve o problema de um arquivo chamado -
):
grep -e hi ./*
(POSIXLY_CORRECT não ajudaria).