Antworten:
Die ultimative Lösung für Dateien, die mit normalen Mitteln nicht gelöscht werden können:
ls -il
In der ersten Spalte wird die Inode-Nummer der Dateien angezeigt.
find . -inum [inode-number] -exec rm -i {} \;
Dadurch wird die Datei mit der angegebenen Inode-Nummer nach der Überprüfung gelöscht.
-delete
stattdessen -exec
festgestellt, dass du sie verwendet hast. Das rm -i
ist eine gute Idee. Deshalb habe ich einen Rollback durchgeführt. Es tut uns leid.
Sie sollten in der Lage sein, auf diese Datei als ~/~
(ohne Anführungszeichen) zu verweisen, da die Tilde-Erweiterung nur die Tilde ( ~
) am Anfang des Wortes anwendet .
rm ./~
aus dem gleichen Grund, den Sie gesagt haben
./~
wörtlich "eine Datei oder ein Ordner mit dem Namen ~
im aktuellen Verzeichnis" bedeutet . Es gibt keine Hacks wie Escape-Zeichen oder Inode-Referenzen.
./~
. Nach fünf Jahren ist mein Gedächtnis ein wenig verschwommen, aber ich denke, deshalb habe ich ~/~
eher vorgeschlagen als das Normalere ./~
: Die Frage bezieht sich speziell auf "eine Datei, die ~
im Home-Verzeichnis von [OP] benannt ist "; nicht "im aktuellen Verzeichnis".
Zitiere es ( rm '~'
) oder entkomme ihm ( rm \~
).
Es ist immer eine dieser Optionen (auch für z. B. $
) oder "add" --
, um zu verhindern, dass der Dateiname als Argument interpretiert wird: rm -- -i
Entfernt die angegebene Datei -i
. Auch nützlich, rm -- *
wenn Sie alle Dateien im aktuellen Verzeichnis löschen möchten: Kein Zufall, rm -f *
nur weil eine Datei so heißt.
--
Verhindert nur, dass die folgenden Argumente als Parameter interpretiert werden - es hindert die Shell nicht daran, ihre Erweiterung durchzuführen (z. B. *
), was hier passiert. (Ich weiß, dass Sie es als Alternative für andere Situationen vorgeschlagen haben, aber eine Warnung wäre gut.)