rm -- -d
--
significa "fim das opções". Qualquer coisa adicional na linha de comando seguinte é interpretada como um argumento (ou seja, o nome do arquivo no seu caso), e não uma opção.
Possible Duplicates:
How do I delete a file named "-p" from bash?
How to delete file with this name on linux: -]???????q
What command do I need to use to remove a file called '-rf'?
Eu acidentalmente criei um arquivo chamado: -d
Eu tentei usar aspas simples e duplas, bem como curingas para removê-lo, mas sempre que "rm" me mostra este erro:
Warning: --directory (-d) option is undocumented and no-op. Use -rf for deleting non-empty dirs rm: missing operand Try 'rm --help' for more information.
Como faço para me livrar do arquivo?
rm ./-d
é a resposta para sua pergunta.
O uso de '-' é de longe o mais fácil neste caso específico. No entanto, uma solução mais geral se você tropeçar em 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
O Gnu-find tem uma opção -delete:
find -name "-d" -delete
mais você poderia tentar
find -name "-d" -exec rm {} ";"
mas a - -solution de cima é mais curta, e a maneira de parar a interpretação de flags com - é usada por muitos programas, usando a biblioteca getopt, então aprender é uma coisa útil em geral.
Mas encontrar / -delete é algo muito útil para aprender também. Observe que ambos os exemplos excluirão os arquivos com o nome "-d" recursivamente, o que pode não acontecer com frequência, mas se você tiver um arquivo chamado "-d", poderá ter mais deles. :)