Ich verwende Terminal auf einem Ubuntu-Computer und es gibt eine Datei, die ich löschen möchte. Der Name der Datei ist \
(nur ein Backslash).
Normalerweise würde ich das jetzt einfach tun
rm filename
Wenn ich es aber tue, rm \
dann denke ich, dass ich versuche, einen mehrzeiligen Befehl zu schreiben.
Wie kann ich diese Datei löschen? Ich weiß, dass ich nur das GUI-Dateisystem verwenden könnte, aber das ist nicht sehr effizient.
Wie kann ich eine aufgerufene Datei (im Terminal) löschen \
?
code
hier in diesem Kommentar nicht einmal in einem Blockfsck
. Ernst. Wenn eine Datei mit dem Namen/
existiert, ist Ihr Dateisystem beschädigt.*
mich ...Antworten:
Verwenden Sie
rm \\
(lassen Sie den Backslash mit einem anderen Backslash hinter sich). Beachten Sie, dass dies auch für benannte Verzeichnisse ähnlich funktioniert\
(entwederrmdir
mit oderrm
mit dem-r
Flag).Beispiel:
quelle
rm '\'
(aber nichtrm "\"
).\
Zeichen als Escape-Zeichen in durch doppelte Anführungszeichen getrennten Zeichenfolgen verwendet. Das Sprichwortrm "\"
wird in eine nicht geschlossene Zeichenfolge zerlegt, da das zweite Anführungszeichen mit einem Escape-Zeichen verwendet wird (und somit als das doppelte Anführungszeichen selbst und nicht als das Ende einer Zeichenfolge zerlegt wird). Daher wartet das Terminal, bis Sie die Zeichenfolge mit einer anderen Zeichenfolge beendet haben"
. Die äquivalente Methode hier doppelte Anführungszeichen zu verwenden wärerm "\\"
(was sowohl direkt als gleichwertig istrm '\'
undrm \\
, wie Sie bereits bestätigt).Eine allgemeine Taktik zum manuellen Löschen von Dateien mit unangenehmen Zeichen im Namen ist
Dadurch werden Sie aufgefordert, zu entscheiden, ob jede Datei im Verzeichnis gelöscht werden soll oder nicht.
quelle
rm -i ./?
./
Sie können die Verknüpfung auch aufheben, indem Sie auf den Inode einer Datei verweisen
quelle
Bitte überprüfen Sie zuerst den Inode der Datei. ls -li
137791 -rw-rw-r--. 1 svr svr 366 Mar 11 15:57
Inode von "\" ist "137791". Verwenden Sie dann den Befehl find, um "\" mit der Inode-Nummer zu löschen.
finden . -inum 137791 -exec rm -i {} \;
rm: entferne reguläre Datei `./ \ '? Ja
"\" wird dann entfernt.
quelle