Mir ist gerade aufgefallen, dass ich eine Datei ~
in meinem ~
-Verzeichnis habe.
$ ls -la ~
...
-rw-r----- 1 x1 x1 733962240 Mar 1 17:55 ~
...
Irgendeine Idee, wie ich mv
oder rm
es kann?
linux
bash
filesystems
scrrr
quelle
quelle
Antworten:
Die ultimative Lösung für Dateien, die mit normalen Mitteln nicht gelöscht werden können:
In der ersten Spalte wird die Inode-Nummer der Dateien angezeigt.
Dadurch wird die Datei mit der angegebenen Inode-Nummer nach der Überprüfung gelöscht.
quelle
-delete
stattdessen-exec
festgestellt, dass du sie verwendet hast. Dasrm -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 .quelle
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.quelle
--
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.)