GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum Superflous Dash (-) verwenden, um Optionsflags an Tar zu übergeben?

Um eine tar-Datei für ein Verzeichnis zu erstellen, muss die Datei tar Befehl mit compress , verbose und file Optionen können folgendermaßen eingegeben werden:

$ tar -cvf my.tar my_directory/

Aber es funktioniert auch so:

 $ tar cvf my.tar my_directory/

Das heißt, ohne den Bindestrich (-) vor den Optionen. Warum sollten Sie jemals einen Bindestrich (-) an die Optionsliste übergeben?

Akzeptierte Antwort:

Es gibt verschiedene Muster für Optionen, die in der Vergangenheit in UNIX-Anwendungen verwendet wurden. Mehrere alte, wie tar , verwenden Sie ein Positionsschema:

Befehlsoptionen-Argumente

wie zum Beispiel tar verwendet

tar *irgendwas*f „Datei bearbeitet“ *”Pfade der zu manipulierenden Dateien”*

In einem ersten Versuch, die Verwirrung zu vermeiden, tar und ein paar andere Programme mit dem alten Flags-Argument-Stil erlaubten es, die Flags mit Bindestrichen zu trennen, aber die meisten von uns alten Leuten haben das einfach ignoriert.

Einige andere Befehle haben eine kompliziertere Befehlszeilensyntax, wie dd(1) die Flaggen, Gleichheitszeichen, Pfadnamen, Argumente und ein Rebhuhn in einem Birnbaum verwendet, alles mit wilder Hingabe.

In BSD und späteren Unix-Versionen war dies mehr oder weniger zu Flags mit einem Zeichen zusammengewachsen, die mit „-“ gekennzeichnet waren, aber dies begann, ein paar Probleme aufzuwerfen:

  • Die Flaggen könnten schwer zu merken sein
  • manchmal wollte man eigentlich einen Namen mit ‚-‘ verwenden
  • und besonders bei GNU-Werkzeugen begannen Einschränkungen durch die Anzahl möglicher Flags auferlegt zu werden. Daher haben GNU-Tools lange GNU-Optionen wie --output hinzugefügt .

Dann entschied Sun, dass das zusätzliche „-“ überflüssig sei und begann, lange Flags mit einzelnen „-“ zu verwenden.

Und so kam es zu dem Chaos, das es jetzt ist.


Linux
  1. Linux – Warum verwenden wir Su – und nicht nur Su?

  2. Warum fügt die Ssh -t Option Cr &Lf in der umgeleiteten Ausgabe hinzu?

  3. Linux – Verwendung von Tcp_defer_accept in der realen Welt?

  4. sudoedit:Warum es über sudo vi verwenden?

  5. Warum sollte man sudo verwenden?

Warum ich unter Linux exa anstelle von ls verwende

Warum ich rxvt als Terminal verwende

Was ist eine virtuelle Maschine und warum sollte man sie verwenden?

Die 10 wichtigsten Gründe für die Verwendung von Linux

Warum Nerds Linux verwenden

Linux vs. Mac OS:15 Gründe, warum Sie Linux anstelle von Mac OS verwenden sollten