Eine Datei mit dem Namen "-d" entfernen [duplizieren]

18

Mögliche Duplikate:
Wie lösche ich eine Datei mit dem Namen "-p" aus bash?
So löschen Sie eine Datei mit diesem Namen unter Linux: -] ??????? q
Welchen Befehl muss ich verwenden, um eine Datei mit dem Namen "-rf" zu entfernen?

Ich habe versehentlich eine Datei mit dem Namen: -d erstellt

Ich habe versucht, es mit einfachen und doppelten Anführungszeichen sowie mit Platzhaltern zu entfernen, aber jedes Mal, wenn "rm" erscheint, erhalte ich diesen Fehler:

Warnung: Die Option --directory (-d) ist undokumentiert und ohne Operation. Verwenden Sie -rf, um nicht leere Verzeichnisse zu löschen. Rm: missing operand Versuchen Sie `rm --help ', um weitere Informationen zu erhalten.

Wie werde ich die Datei los?

phileas fogg
quelle

Antworten:

44
rm -- -d

--bedeutet "Ende der Optionen". Alles, was sich in der folgenden Befehlszeile befindet, wird als Argument interpretiert (in Ihrem Fall als Dateiname) und nicht als Option.

Matteo Riva
quelle
28
rm ./-d

ist die Antwort auf Ihre Frage.

margulies
quelle
1
rm -- -dfunktioniert auch
Ulrich Dangel
Dies ist die beste Lösung
gd1
8

Die Verwendung von '-' ist in diesem speziellen Fall bei weitem am einfachsten. Eine allgemeinere Lösung, wenn Sie über eine Datei mit nicht druckbaren Steuerzeichen stolpern, besteht darin, die Datei nach 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
che2cbs
quelle
0

Gnu-find hat die Option -delete:

find -name "-d" -delete

sonst könntest du es versuchen

find -name "-d" -exec rm {} ";" 

Die - -Lösung von oben ist jedoch kürzer, und die Möglichkeit, die Interpretation von Flags mit - zu beenden, wird von vielen Programmen verwendet, die die getopt-Bibliothek verwenden. Daher ist es im Allgemeinen nützlich, sie zu lernen.

Aber find / -delete ist auch sehr nützlich, um es zu lernen. Beachten Sie, dass in beiden Beispielen Dateien mit dem Namen "-d" rekursiv gelöscht werden, was möglicherweise nicht häufig vorkommt. Wenn Sie jedoch eine Datei mit dem Namen "-d" haben, sind möglicherweise mehrere vorhanden. :)

Benutzer unbekannt
quelle