Datei "-o" löschen

intelligenterweise habe ich es irgendwie geschafft eine Datei "-o" anzulegen.
Diese möchte ich jetzt gerne wieder los werden.

jedoch funktioniert weder
rm -o
rm \-o
rm \-\o
rm "-o"
rm '-o'

ich konnte es dann zwar erfolgreich mit "rm ?o" löschen, allerdings würde ich gern wissen wie man solch eine Datei gezielt loswird.

Danke schon im vorraus.
 
Hi,

die Ursache für das Problem ist, dass der "rm" den "-o" als Parameter interpretiert.

Durch ein Voranstellen von "--" kannst du ihm (und natürlich auch anderen Befehlen) mitteilen, dass die Paramter am -- enden.

Also

rm -- -o

entfernt die Datei sauber.
 
Der korrekte Weg lautet:

Code:
$ rm -- -o

Das "--" bedeutet, das keine weiteren Optionen kommen, so dass "-o" nicht als Option interpretiert wird. Das funktioniert nicht nur mit rm, sondern auch mit praktisch allen anderen Befehlen.
 
Das funiert aber nur, weil getopt(3) das so handhabt. Genau das ist der Grund, warum ich von selbstgeschriebenen cmd-parsern nichts halte. Solche Sachen werden da meist uebersehen.

PS: Noch eine "Hackloesung": touch blubb; rm blubb -o
 
auch noch eine moeglichkeit:

Code:
% export AKTDIR=`pwd`
% mkdir $AKTDIR".bak"
% for I in * ; do mv $I $AKTDIR".bak" ; done
% cd /
% rm -rf $AKTDIR
% mv $AKTDIR".bak" $AKTDIR
% cd $AKTDIR

das klappt natuerlich nur, solange der mv-befehl bei -o auch wirklich anfaengt zu meckern.
 
Zurück
Oben