Livrar-se de um arquivo chamado "-d"

Livrar-se de um arquivo chamado "-d"

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. :)

informação relacionada