
Ich habe eine Datei mit dem Namen erstellt, \;:$"\'
um eine meiner Softwares zu testen. Es ist ein Fehler aufgetreten, weil ich die Dateieigenschaft nicht löschen kann. Ich versuche, eine genaue Zeichenkombination zu finden, um sie über zu entfernen rm
, aber ich finde keinen Weg.
rm \\;:$\"\\\'
rm: cannot remove `\\': No such file or directory
rm "\\"\;:$\"\\\'
rm: cannot remove `\\;:$"\\\'': No such file or directory
rm '\;:$"\'''
rm: cannot remove `\\;:$"\\': No such file or directory
(Dieser letzte Versuch hat mich getötet)
Und viele, viele andere Versuche. Helfende Hand benötigt!
Antwort1
Wenn der Dateiname genau lautet \;:$"\'
, sollten Sie ihn mit folgendem entfernen können:
rm \\\;\:\$\"\\\'
Entkommen Sie allen Charakteren einfach mit einem einzigen \
.
Antwort2
Sie können versuchen, ls -li
die Datei im Verzeichnis mit der Datei zu löschen und den zurückgegebenen Inode einzugeben.find . -inum <inode-number> -exec rm -i {} \;
Ich habe -i
dem Find-Befehl hinzugefügt, dass vor dem Löschen eine Abfrage erfolgt, für den Fall, dass der Find-Befehl eine andere Datei findet als erwartet.
Zusätzlich zum Kommentar habe ich versucht, die Datei selbst zu erstellen und zu entfernen:
ls -l
total 0
-rw-r--r-- 1 test test 0 mrt 24 14:11 \;:$"\'
[test@testhost +1] /tmp/ff$ rm \\\;\:\$\"\\\'
[test@testhost +1] /tmp/ff$ ls -l
total 0
Antwort3
Sie können einfache Anführungszeichen verwenden und müssen sich dann nur noch um die Zitierung der einfachen Anführungszeichen selbst kümmern.
rm '\;:$"\'\'
Bei der interaktiven Verwendung können Sie einfach die Tab-Vervollständigung verwenden, beginnend mit '\
oder \\
. Die Tab-Vervollständigung von '\
ergibt '\;:$"\'\'''
, da Bash einfach jedes eingebettete einfache Anführungszeichen durch ersetzt '\''
. Die Tab-Vervollständigung von nichts oder von \\
ergibt \\\;\:\$\"\\\'
.
Antwort4
Wenn Sie nicht auf die Verwendung von Bash oder einer anderen Shell-Skriptumgebung beschränkt sind, können Sie eine solche Datei wahrscheinlich ganz einfach entfernen, indem Sie entweder ein kurzes Programm schreiben, das einfach unlink()
in Ihrer bevorzugten Sprache aufgerufen wird, oder einen Dateimanager wie Gnome Commander oder Midnight Commander verwenden, um die Datei manuell zu löschen. Mit der letzteren Option können Sie die betreffende Datei auswählen und löschen, ohne den Dateinamen jemals irgendwo eingeben zu müssen. Dadurch wird die Möglichkeit ausgeschlossen, dass Metazeichen überhaupt eine besondere Bedeutung haben.