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 -czf
gibt drei Einzel-Zeichen Flags: c
, z
, und f
.
Betrachten Sie nun ein anderes Beispiel:
tar --exclude
In diesem Fall wird --exclude
eine einzelne Option mit mehreren Zeichen angegeben exclude
. Der Doppel Bindestrich disambiguiert das Befehlszeilenargument, um sicherzustellen , dass tar
interpretiert sie als exclude
anstatt eine Kombination von e
, x
, c
, l
, u
, d
, und e
.
cdrecord
Jahren 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 ls
gäbe, hätte es wahrscheinlich eine andere Bedeutung zu tippen ls -lisa
als ls --lisa
. Die ersteren sind die l
, i
, s
und a
Parameter, 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 dd
und 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.