Chame o comando da seguinte forma:
mkdir -- -a
O --
significa que as opções terminam depois disso, então o -a
é interpretado literalmente e não como uma opção para mkdir
. Você encontrará essa sintaxe não apenas em mkdir
, mas em qualquer utilitário compatível com POSIX, exceto echo
e test
. Da especificação :
The argument -- should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character. The -- argument should not be used as an option or as an operand.
Usar --
como proteção é recomendado para quase todas as ações em que você lida com nomes de arquivos e deseja garantir que eles não violam o comando, por exemplo, ao mover arquivos em um loop, talvez você queira chamar o seguinte, para que um arquivo chamado -i
não seja (em?) analisado corretamente como uma opção:
mv -- "$f" new-"$f"