Mögliche Duplikate:
Wie lösche ich eine Datei mit dem Namen „-p“ aus Bash?
So lösche ich eine Datei mit diesem Namen unter Linux: -]???????q
Welchen Befehl muss ich verwenden, um eine Datei namens „-rf“ zu entfernen?
Ich habe versehentlich eine Datei mit dem Namen: -d erstellt
Ich habe versucht, es mit einfachen und doppelten Anführungszeichen sowie Platzhaltern zu entfernen, aber jedes Mal gibt „rm“ diesen Fehler aus:
Warnung: Die Option --directory (-d) ist nicht dokumentiert und hat keinen Funktionsumfang. Verwenden Sie -rf zum Löschen nicht leerer Verzeichnisse. rm: Operand fehlt. Versuchen Sie „rm --help“ für weitere Informationen.
Wie werde ich die Datei los?
Antwort1
rm -- -d
--
bedeutet „Ende der Optionen“. Alles Weitere in der Befehlszeile wird als Argument (in Ihrem Fall also der Dateiname) und nicht als Option interpretiert.
Antwort2
rm ./-d
ist die Antwort auf Ihre Frage.
Antwort3
Die Verwendung von '--' ist in diesem speziellen Fall bei weitem am einfachsten. Eine allgemeinere Lösung, wenn Sie jedoch auf eine Datei mit nicht druckbaren Steuerzeichen stoßen, besteht darin, die Datei per Inode zu referenzieren:
% ls -ali aFileWithFunnyCharacters
9215 -rw-r----- 1 chris chris 0 Sep 8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory
Antwort4
Gnu-find hat eine Option -delete:
find -name "-d" -delete
sonst könntest du es versuchen
find -name "-d" -exec rm {} ";"
aber die -- -Lösung von oben ist kürzer und die Möglichkeit, die Interpretation von Flags mit -- zu stoppen, wird von vielen Programmen verwendet, die die getopt-Bibliothek nutzen, sodass es grundsätzlich nützlich ist, sie zu lernen.
Aber auch „Find/-Delete“ ist sehr nützlich zu lernen. Beachten Sie, dass beide Beispiele Dateien mit dem Namen „-d“ rekursiv löschen, was nicht oft vorkommt, aber wenn Sie zufällig eine Datei mit dem Namen „-d“ haben, haben Sie möglicherweise mehrere davon. :)