Réponses:
La solution idéale pour les fichiers qui ne peuvent pas être supprimés normalement:
ls -il
La première colonne montrera le numéro d'inode des fichiers.
find . -inum [inode-number] -exec rm -i {} \;
Ceci supprimera le fichier avec le numéro d'inode spécifié après vérification.
-deleteau lieu de -exec, puis j'ai réalisé que vous utilisiez rm -ice qui est une bonne idée, alors j'ai annulé. Pardon.
Vous devriez pouvoir faire référence à ce fichier comme ~/~(sans guillemets) car tilde-expansion applique uniquement le tilde ( ~) au tout début du mot.
rm ./~, pour la même raison que vous avez dit
./~littéralement signifie "un fichier ou un dossier nommé ~dans le répertoire actuel" . Il n'y a pas de hacks comme des caractères d'échappement ou des références d'inodes.
./~fait le fait. Au bout de cinq ans, ma mémoire est un peu floue, mais je pense que c'est pourquoi je suggère ~/~plutôt que plus normale ./~: La question se réfère spécifiquement à « un fichier nommé ~dans [OP] le répertoire »; pas "dans le répertoire courant".
Citez-le ( rm '~') ou échappez-le ( rm \~).
C'est toujours l'un de ceux-ci (aussi pour par exemple $), ou add --pour empêcher le nom de fichier d'être interprété en tant qu'argument: rm -- -isupprime le fichier nommé -i; également utile rm -- *lorsque vous souhaitez supprimer tous les fichiers du répertoire en cours: Pas accidentel rm -f *simplement parce qu'un fichier est nommé ainsi.
--n'arrête que les arguments suivants interprétés en tant que paramètres - cela n'empêche pas le shell d'effectuer son développement (par exemple *), c'est ce qui se passe ici. (Je sais que vous l'avez suggéré comme solution de rechange à d'autres situations, mais un avertissement serait bon.)