Podemos ver que a sinopse do rm
comando é:
rm [OPTION]... [FILE]...
Isso não significa que podemos usar apenas rm
o comando sem nenhuma opção ou argumento?
Quando executo o comando rm
sozinho, o terminal mostra o seguinte erro:
rm: missing operand Try 'rm --help' for more information.
Alguém pode me dizer por que este é o caso?
A sinopse padrão para o
rm
utilitário é especificada no padrão POSIX 1&2 comoEm sua primeira forma, requer pelo menos um operando de arquivo, mas em sua segunda forma não.
Fazer
rm -f
sem operandos de arquivo não é um erro:... mas não faz muito.
O padrão diz que para a
-f
opção, orm
utilitário deve...Isso confirma que deve ser possível executar
rm -f
sem nenhum operando de nome de caminho e que isso não é algo que fazrm
sair com uma mensagem de diagnóstico nem com um status de saída diferente de zero.Este fato é muito útil em um script que tenta deletar vários arquivos como
onde
"$@"
é uma lista de nomes de caminhos que podem ou não estar vazios, ou que podem conter nomes de caminhos que não existem.(
rm -f
ainda gerará uma mensagem de diagnóstico e sairá com um status de saída diferente de zero se houver problemas de permissão impedindo que um arquivo nomeado seja removido.)Executar o utilitário sem operandos de opção nem de nome de caminho é um erro:
O mesmo vale para GNU
rm
(o acima mostra OpenBSDrm
) e outras implementações do mesmo utilitário, mas a mensagem de diagnóstico exata e o status de saída diferente de zero podem ser diferentes (no Solaris o valor é 2 e no macOS é 64, por exemplo).Em conclusão, o
rm
manual GNU pode ser um pouco impreciso, pois é verdade que com alguma opção (-f
, que é uma opção opcional), o operando pathname é opcional.1 desde a edição de 2016, após a resolução deste bug , consulte a edição anterior para referência.
2 POSIX é o padrão que define o que é um sistema Unix e como ele se comporta. Este padrão é publicado pelo The Open Group . Veja também a pergunta " O que exatamente é POSIX? ".
Tecnicamente, a sinopse está correta, mas é confusa. Há casos em que nenhum nome de arquivo é necessário:
(ao usar GNU
rm
). Todos os outros casos requerem um nome de arquivo.Outras versões
rm
mostram o arquivo como não opcional, por exemplo , na página de manual do OpenBSD .Uma sinopse mais precisa para GNU
rm
mostraria as três variantes: