Respostas:
A melhor solução final quando se trata de arquivos que não podem ser excluídos por meios normais:
ls -il
A primeira coluna mostrará o número de inode dos arquivos.
find . -inum [inode-number] -exec rm -i {} \;
Isso excluirá o arquivo com o número de inode especificado após a verificação.
-delete
ao invés de -exec
, então percebi que você estava usando rm -i
o que é uma boa ideia, então retrocedi. Desculpa.
Você deve poder se referir a esse arquivo como ~/~
(sem aspas) porque a expansão de til só aplica o til ( ~
) no início da palavra.
rm ./~
, pela mesma razão que você disse
./~
literalmente significa "um arquivo ou pasta chamado ~
no diretório atual " . Não há hacks como caracteres de escape ou referências inode.
./~
faz. Depois de cinco anos, minha memória é um pouco confusa, mas eu acho que é por isso que eu sugeri ~/~
ao invés do mais normal ./~
: A questão refere-se especificamente a "um arquivo chamado ~
em [OP's] diretório home "; não" no diretório atual ".
Cite isso rm '~'
) ou fugir dele ( rm \~
).
É sempre um desses (também para p. Ex. $
) ou adicione --
para evitar que o nome do arquivo seja interpretado como argumento: rm -- -i
remove o arquivo chamado -i
; também é útil para rm -- *
quando você deseja excluir todos os arquivos no diretório atual: Não acidental rm -f *
só porque um arquivo é chamado assim.
--
apenas impede que os seguintes argumentos sejam interpretados como parâmetros - não impede que o shell execute sua expansão (por exemplo, *
), que é o que está acontecendo aqui. (Eu sei que você sugeriu isso como uma alternativa para outras situações, mas um aviso seria bom.)