Gibt es ein einziges registriertes UNIX aus dem Jahr 2003, das derzeit rm -- -foo nicht ausführen kann?

Gibt es ein einziges registriertes UNIX aus dem Jahr 2003, das derzeit rm -- -foo nicht ausführen kann?

Ich versuche, das zu zerstreuenUnsicherheitIch habe über die Verwendung derDoppelstrich(zwei Bindestriche, --) als Ende von Optionen-Trennzeichen (im Gegensatz zu einemlanges Optionspräfix). Es ist möglich, dass eine gewisse Verwirrung entstand, als jemand las, dass Long-Optionen eineGNUKonvention und lange Optionen beginnen mit --. Aber das hat nichts mit dem zu tun,Ende der OptionTrennzeichen.

Die Verwendung von Which ist vollständig kompatibel mitIEEE Std 1003.1, 2013 Utility-Syntaxrichtlinie 10:

Das erste -- Argument, das kein Optionsargument ist, sollte als Trennzeichen akzeptiert werden, das das Ende der Optionen anzeigt. Alle folgenden Argumente sollten als Operanden behandelt werden, auch wenn sie mit dem Zeichen '-' beginnen.

Man kann sich die rmManpages ansehen fürOSX(oderFreeBSD),AIX,SolarisUndHPUX- die bekannten registrierten Unix '03-Unices:

  • OSX, AIX und Solaris 1 beziehen sich wörtlich auf das --Trennzeichen inMann rm
  • HPUX diskutiert es nicht inMann rmaber es gibt andere Befehle, die das besagte Trennzeichen zulassen (wietouch)

Gibt es eine einzigeUNIX 03 registriertes Produktwas heute nicht geht rm -- -foo? Ist es Solaris... HPUX? Können sie es tun, obwohl sie es nicht dokumentieren? Können wir das an dieser Stelle auf alle Befehle auf diesen Plattformen verallgemeinern?


1. Im Solaris 11-Handbuch heißt es in einer letzten Anmerkung: Wenn a - - und a - beide in derselben Befehlszeile erscheinen, wird die zweite als Datei interpretiert.Und zwischen den ersten beiden Bindestrichen steht ein Leerzeichen. Ist es nur der Bindestrich oder alles, was in diesem Kontext mit dem Bindestrich beginnt und als Datei interpretiert wird?

Antwort1

Ab Solaris 10:

~ touch testfile
~ rm -- testfile
~ ls testfile
testfile: No such file or directory
~ touch testfile
~ rm -- -f testfile
-f: No such file or directory
~ ls testfile
testfile: No such file or directory
~ rm - - -f testfile
-: No such file or directory
-f: No such file or directory
testfile: No such file or directory
~

Um also Ihre Frage zu beantworten: In Solaris 10 wird die zweite Instanz als Datei behandelt, wenn sie mit einem Bindestrich beginnt.

verwandte Informationen