ls -a
(Ich halte-a
eine Option)sudo -u username
(-u
= Option,username
= Argument)chmod 664 my-dir
(664
= Option,my-dir
= Argument)
Ich kann mir kein Beispiel vorstellen, das "Dies ist eine Flagge" sagen könnte, außer vielleicht, wenn ich Dir-Auflistung betrachte:
-r--------. 1 david david 3344 May 19 17:48 611056.pdf
Hier ist das "Leseflag" für den Eigentümer gesetzt, aber das ist alles. Was hindert mich daran, das eine "Leseoption" zu nennen?
Ich schreibe und bearbeite technische Dokumentation, hauptsächlich in DocBook XML, und suche nach einer Erklärung für den Unterschied, die so konsistent und genau wie möglich ist. Es bildet sich jedoch bereits ein Muster:
- Flags sind in der Regel Booleaner. z.B,
setenforce 0
- Mit den Optionen können Sie festlegen, wie sich ein Befehl verhalten soll. Einige können optional sein.
- Argumente teilen Befehlen mit, mit welchem Objekt gearbeitet werden soll.
Ich könnte mir vorstellen, Flags und Optionen zu kombinieren (einige Optionen haben möglicherweise ein Dutzend mögliche Werte, aber Booleaner haben nur zwei). Argumente scheinen ausreichend verschieden zu sein, um sie als solche beizubehalten.
ls -a
Beispiel. (Für mich ist ein Flag eine boolesche Variable.)tar c abc.txt > x.tar
in der esc
eine Funktion gibt . Sie versuchen, dies als Option zu bezeichnen, und das ist völlig unangemessen.Antworten:
Es gibt keine einheitlichen Definitionen der Begriffe "Option", "Argument" und "Flag", und es gibt keine zentrale Autorität in der Welt der Softwareentwicklung, die ihre Verwendung erzwingen könnte. Dies geschieht mit viel Terminologie: Nachdem ich über 30 Jahre lang das Wort "Verzeichnis" verwendet habe, muss ich mich jetzt mit Leuten befassen, die das Wort "Ordner" verwenden und die durch das New-Speak von Microsoft verwirrt wurden.
Es gibt verschiedene Möglichkeiten, wie Konsensdefinitionen für Begriffe in der Programmierung zustande kommen können. Im Fall von "argument" / "option" / "flag" haben kanonische Handbücher und Lernprogramme für Programmiersprachen dazu beigetragen, die Verwendung zu erzwingen, ebenso wie die in allgemeinen Bibliotheken verwendeten Begriffe.
Zum Beispiel werden die Dinge, die Sie in der Befehlszeile nach einem Befehl einfügen, oft als "Argumente" für den Befehl bezeichnet, analog zu den Argumenten für einen Funktionsaufruf. Dies liegt wahrscheinlich auch daran, dass sie im C-Handbuch als "Argumente" bezeichnet werden ( daher
argc
undargv
). Dieargparse
Python-Bibliothek hilft auch dabei, den Begriff "Argument" durchzusetzen. Ich habe jedoch auch gesehen, dass sie "Parameter" genannt werden.Der Begriff "Option" leitet sich von "optional" ab, was bedeutet, dass sie weggelassen werden können. Die
getopt
C-Bibliothek ist eine Verwendung dieses Begriffs. Es gibt jedoch Präzedenzfälle für "Optionen", die eigentlich nicht optional sind: Imargparse
Handbuch wird beispielsweise angegeben, dass eine "erforderliche Option" erstellt werden kann (obwohl auch angegeben wird, dass dies "allgemein als schlechte Form" gilt). Die Optionen sind oft von einem einzigen voran (-
) oder doppelten (--
Lang Option) Strich, aber es gibt bekannte Befehle, die keine Bindestrich - Nutzung für Optionen (zB erfordern oder durchzusetzentar
,ps
unddd
). Eine Option kann selbst ein Argument (z. B.-w80
und--color=always
) oder gelegentlich mehrere Argumente annehmen ."Flags" sind nach meiner Erfahrung die gleichen wie Optionen, verwenden jedoch normalerweise keine Argumente selbst und stellen im Wesentlichen boolesche Ein-Aus-Schalter dar.
Allgemein gesagt, da jeder Programmierer die Möglichkeit hat, nach einer Standardmethode für das Ausführen und Benennen von Dingen zu suchen, aber auch das Rad ohne großen Mehraufwand neu erfinden kann, wird die Benennung niemals konsistent sein. Und wenn Sie Ihren Code erst einmal dokumentiert haben und klar ist, welche neue Bedeutung Sie diesen Wörtern durch die Angabe von Beispielen gegeben haben, bleiben diese Namen und Bedeutungen möglicherweise erhalten, wenn genügend Personen vorhanden sind, die sie aus Ihrem Code entnehmen.
quelle
Ein Flag ist ein Optionstyp, ein Boolescher Typ und standardmäßig immer falsch (z. B. --verbose, --quiet, --all, --long usw.).
Eine Option teilt der Funktion mit, wie sie zu handeln hat (z. B. -a, -l, --verbose, --output, -name, -c usw.), während ein Argument der Funktion mitteilt, was zu
*
tun ist (z. B. file1, Hostname, Datenbank).quelle
git pull git://bla/bla
daspull
also ein Argument, das angibt,git
woran gearbeitet werden soll.pull
ist ein Befehl. Man kann sich Befehle als Erweiterungen des Anwendungsnamens vorstellen: git pull <...> entspricht einer aufgerufenen Anwendunggit-pull
. Wenn die Anwendung Befehle hat, bewirkt jeder Befehl, dass die Anwendung etwas völlig anderes ausführt.tar
wird die Verwendungc
zum Erstellen eine Funktion genannt . Und genau das ist das Problem: Es gibt keine Standardisierung von Begriffen, auch wenn es so aussieht, als gäbe es aus Ihrer Antwort