PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei '-rf' löschen



OdinD
21.08.03, 23:45
jeder kennt es sicher ... [Standardeinleitungssatz]

man hat aus Versehen eine Datei '-P' oder '-rf' angelegt.

Was tun ?

mir fallen 2 Möglichkeiten ein:

1) unter Samba Verzeichnis freigeben und unter Windows löschen/umbenennen
2) mit PERL löschen umbenennen


perl -e 'unlink("-rf")'




perl -e 'rename("-rf","r-f")'


so nun hoffe ich einigen geholfen zu haben, die mal ein 50MB Logfile in '-rf' umbenannt und es nicht wieder gelöscht bekommen haben.

cya OdinD

kth
22.08.03, 00:09
$ touch -- -rf
$ ls -- -rf
-rf
$ rm -- -rf
$ ls -- -rf
ls: -rf: No such file or directory
$Wo liegt das Problem? :D ;)

Bei Programmen, die getopt(3) aus der glibc benutzen, werden Parameter nach einem "--" nicht mehr als Option interpretiert.

OdinD
22.08.03, 09:36
hilft vielleicht noch besser weiter ... wusste ich nicht :rolleyes:

von newbie zu newbie

cycomate
22.08.03, 21:00
rm ./-rf
ist vielleicht die einfachste Methode und ist nicht von getopt abhängig.

keiner_1
25.08.03, 07:58
Original geschrieben von kth

$ touch -- -rf
$ ls -- -rf
-rf
$ rm -- -rf
$ ls -- -rf
ls: -rf: No such file or directory
$Wo liegt das Problem? :D ;)

Bei Programmen, die getopt(3) aus der glibc benutzen, werden Parameter nach einem "--" nicht mehr als Option interpretiert.

Unter Solaris funktioniert das genau gleiche auch, die normale Libc :)

root@uaila41:/usr/aset/reports/latest # touch -- --rf
root@uaila41:/usr/aset/reports/latest # ls -- --rf
--rf
root@uaila41:/usr/aset/reports/latest # rm -- --rf
root@uaila41:/usr/aset/reports/latest # ls -- --rf
--rf: No such file or directory
root@uaila41:/usr/aset/reports/latest #

greez
adme

LX-Ben
06.10.03, 13:32
Ein PC-Welt-Leser hat in der Konsole experimentiert; dabei ist es ihm 'gelungen,
Parameter so geschickt zu platzieren, dass sie als folgende Dateinamen
interpretiert und angelegt wurden': "*" und "-C" [Dateinamen jeweils ohne Quotes].

Die dortigen Lösungen:
"rm *" würde das Problem lösen :), aber natürlich auch alle anderen Dateien in
dem Verzeichnis löschen. Die Bash-Shell benutzt jedoch den Backslash (\), um
Datei-Sonderzeichen wie "*" und "?" ihre Bedeutung zu nehmen. Obige einzelne
Datei wird also mit der Eingabe "rm \*" gelöscht [KEIN LEERZEICHEN zwischen
\ und * !].

Der Strich ist für die Bash kein Sonderzeichen, so dass ein vorangestellter
Backslash nichts nützt; "-" ist ein Sonderzeichen, dass nur beim rm-Befehl
eine Parameterfunktion hat: Mit "--" (zwei Striche) wird rm 'mitgeteilt', dass
alles Folgende KEIN PARAMETER ist, und so lautet der Löschbefehl für die
einzelne Datei "rm --C"

michel_vaclav
06.10.03, 20:04
1) unter Samba Verzeichnis freigeben und unter Windows löschen/umbenennen

Für sowas gibts doch auch unter Linux Dateimanager. Datei markieren und rechte Maustaste -> löschen und gut is.

michel_vaclav