Ich bin neu in der Arbeit in der Shell und die Verwendung dieser Befehle scheint willkürlich. Gibt es einen Grund, warum eine Flagge einen einfachen Strich und eine andere einen doppelten Strich hat?
Ich bin neu in der Arbeit in der Shell und die Verwendung dieser Befehle scheint willkürlich. Gibt es einen Grund, warum eine Flagge einen einfachen Strich und eine andere einen doppelten Strich hat?
Antworten:
Einem einzelnen Bindestrich können mehrere Flags mit einem Zeichen folgen. Ein doppelter Bindestrich steht vor einer einzelnen Option mit mehreren Zeichen.
Betrachten Sie dieses Beispiel:
tar -czf
In diesem Beispiel -czfgibt drei Einzel-Zeichen Flags: c, z, und f.
Betrachten Sie nun ein anderes Beispiel:
tar --exclude
In diesem Fall wird --excludeeine einzelne Option mit mehreren Zeichen angegeben exclude. Der Doppel Bindestrich disambiguiert das Befehlszeilenargument, um sicherzustellen , dass tarinterpretiert sie als excludeanstatt eine Kombination von e, x, c, l, u, d, und e.
cdrecordJahren in den obigen Kommentaren erwähnt.
Das hängt alles vom Programm ab. Normalerweise wird "-" für "kurze" Optionen (ein Buchstabe, -h) und "-" für "lange" (er) Optionen (--help) verwendet.
Kurze Optionen können normalerweise kombiniert werden (so ist "-h -a" dasselbe wie "-ha")
In Unix-ähnlichen Systemen wird häufig der ASCII-Bindestrich verwendet, um Optionen anzugeben. Auf das Zeichen folgen normalerweise ein oder mehrere Buchstaben. Ein Argument, bei dem es sich um einen einzelnen Bindestrich ohne Buchstaben handelt, gibt normalerweise an, dass ein Programm Daten verarbeiten soll, die von der Standardeingabe stammen, oder Daten an die Standardausgabe senden soll. In einigen Programmen werden zwei Bindestriche (-) verwendet, um "lange Optionen" anzugeben, bei denen aussagekräftigere Optionsnamen verwendet werden. Dies ist ein allgemeines Merkmal von GNU-Software.
Es ist wirklich eine Konvention. Es kann Parsern jedoch helfen, effizienter über an das Programm übergebene Optionen Bescheid zu wissen. Außerdem gibt es nützliche Hilfsprogramme, die beim Parsen dieser Befehle helfen können, z. B. getopt(3)oder die nicht standardmäßigen getopt_long(3), um die Argumente eines Programms zu analysieren.
Es ist schön, denn wir können mehrere kurze Optionen kombinieren, wie andere Antworten sagen, wie tar -xzf myfile.tar.gz.
Wenn es ein "Lisa" -Argument für lsgäbe, hätte es wahrscheinlich eine andere Bedeutung zu tippen ls -lisaals ls --lisa. Die ersteren sind die l, i, sund aParameter, nicht das richtige Wort.
Tatsächlich könnte man schreiben ls -l -i -s -a, was genau dasselbe bedeutet wie ls -lisa, aber das würde vom Programm abhängen.
Es gibt auch Programme, die dieser Konvention nicht entsprechen. Vor allem für meinen Anblick ddund gcc.
kurze Optionen mit einem Strich im Vergleich zu langen Optionen mit einem doppelten Strich
kurze Optionen können zu einem einzigen Argument kombiniert werden;
for example: ls -lrt #instead of ls -l -r -t
Wenn wir lange Optionen mit einem Bindestrich zulassen, führt dies zu Mehrdeutigkeiten. Um dies zu beheben, verwenden wir einen Doppelstrich für lange Optionen.