Possíveis duplicatas:
Como excluo um arquivo chamado “-p” do bash?
Como deletar arquivo com este nome no linux: -]???????q
Qual comando preciso usar para remover um arquivo chamado `-rf`?
Eu acidentalmente criei um arquivo chamado: -d
Eu tentei usar aspas simples e duplas, bem como curingas para removê-lo, mas toda vez que "rm" me dá este erro:
Aviso: a opção --directory (-d) não está documentada e não funciona. Use -rf para excluir diretórios não vazios rm: operando ausente Tente `rm --help' para obter mais informações.
Como faço para me livrar do arquivo?
Responder1
rm -- -d
--
significa "fim das opções". Qualquer coisa além disso na linha de comando será interpretada como um argumento (ou seja, o nome do arquivo no seu caso) e não uma opção.
Responder2
rm ./-d
é a resposta para sua pergunta.
Responder3
Usar '--' é de longe o mais fácil neste caso específico. No entanto, uma solução mais geral se você encontrar um arquivo com caracteres de controle não imprimíveis é referenciar o arquivo por inode:
% ls -ali aFileWithFunnyCharacters
9215 -rw-r----- 1 chris chris 0 Sep 8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory
Responder4
Gnu-find tem uma opção -delete:
find -name "-d" -delete
senão você poderia tentar
find -name "-d" -exec rm {} ";"
mas a solução -- - acima é mais curta, e a maneira de interromper a interpretação de sinalizadores com -- é usada por muitos programas, usando a biblioteca getopt, portanto, aprendê-la é útil em geral.
Mas localizar/excluir também é algo muito útil para aprender. Observe que ambos os exemplos excluirão arquivos de nome "-d" recursivamente, o que pode não acontecer com frequência, mas se você tiver um arquivo chamado "-d", poderá ter mais deles. :)