Ich versuche zu verstehen , info who
aber komplett auf den Begriff scheitern » Nicht-Optionsargument «. Kann mir bitte jemand diesen Begriff in einfachen Worten oder einem Beispiel erklären?
UPDATE : von 'info who':
Wenn keine Nichtoptionsargumente angegeben werden , gibt "who" die folgenden Informationen für jeden aktuell angemeldeten Benutzer aus: Anmeldename, Terminalleitung, Anmeldezeit und Remote-Hostname oder X-Anzeige.
Wenn ein Argument ohne Option angegeben wird , wird
who' uses that instead of a default system-maintained file (often
/ var / run / utmp 'oder/etc/utmp') as the name of the file containing the record of users logged on.
/ var / log / wtmp' häufig als Argument für "who" angegeben, um zu sehen, wer sich zuvor angemeldet hat.Wenn zwei Argumente ohne Option angegeben werden ,
who' prints only the entry for the user running it (determined from its standard input), preceded by the hostname. Traditionally, the two arguments given are
bin ich ', wie in' Wer bin ich '.
Ich [dachte] den Unterschied zwischen einem Argument und einer Option zu kennen, aber das [wieder] macht viel nix.
info
Seiten haben wahrscheinlich mehr Schaden angerichtet, um UNIX lernen zu können. Sie sind schwieriger zu verwenden und zu navigieren als Manpages, und da sie existieren, betrachten die meisten Leute eine echte Manpage als optional. Sie erhalten also eine schreckliche Dokumentation. Dies ist ein Teil dessen, was mich dazu gebracht hat, die BSDs, insbesondere OpenBSD, zu lieben. Die Manpages sind fast immer gut und nützlich. Wenn dies nicht der Fall ist, halten die Entwickler dies für einen Fehler.Antworten:
Die Terminologie ist nicht vollständig festgelegt, daher verwenden unterschiedliche Dokumentationen unterschiedliche Begriffe oder, schlimmer noch, dieselben Begriffe mit unterschiedlichen Bedeutungen. Die Terminologie in der Manpage, die Sie lesen, ist weit verbreitet. Es ist das im POSIX- Standard verwendete. Kurz gesagt, jedes Wort nach dem Befehl ist ein Argument, und die Argumente, mit denen beginnen,
-
sind Optionen."Dienstprogramm" wird allgemein als "Befehl" bezeichnet (der Standard verwendet das Wort " Dienstprogramm" , um Mehrdeutigkeiten mit der Bedeutung von "Befehl" zu vermeiden, die die Argumente oder sogar zusammengesetzte Shell-Befehle enthält).
Die meisten Befehle folgen der Standard-Utility-Argument-Syntax , wobei Optionen mit einem
-
(Bindestrich oder Minus) beginnen. Eine Option ist also so etwas wie-a
(kurze Option, folgt den POSIX-Richtlinien) oder--all
(lange Option, eine Erweiterung von GNU). Ein Nicht-Optionsargument ist ein Argument, das nicht beginnt-
oder nur aus-
(daswho
als Literal-Dateiname behandelt wird, aber viele Befehle entweder als Standardeingabe oder als Standardausgabe behandelt werden).Darüber hinaus haben einige Optionen selbst ein Argument. Dieses Argument kann auf verschiedene Arten übergeben werden:
foo -obar
:bar
ist das Argument für die Ein-Buchstaben - Option-o
.foo --option=bar
.foo -o bar
oderfoo --option bar
. Wenn die Option-o
(oder--option
) ein Argument akzeptiert,bar
ist dies das Argument der Option-o
(oder--option
). Wenn-o
(oder--option
) kein Argument akzeptiert,bar
handelt es sich um einen Operanden.Hier ist ein längeres Beispiel:
-n
ist eine Option,3
ein Argument für die Option-n
undmyfile
ein Operand.Die Terminologie ist unterschiedlich, daher finden Sie möglicherweise Dokumente, die Argumente in dem Sinne verwenden, in dem POSIX den Operanden verwendet . "Nicht-Optionsargument" ist jedoch häufiger als jeder Begriff für diese Bedeutung.
quelle
-o
kein Argument verwendet wird,-o
handelt es sich um einen Operanden." sollte sein "... dasbar
ist ein Operand".-obar
für optionale Optionsargumente reserviert ist.Die Sache ist, dass Optionen (oder Schalter oder Flags, wie auch immer Sie sie nennen möchten) ebenfalls als Argumente gelten. Tatsächlich bildet alles, was Sie nach dem Befehlsnamen selbst angeben, die Argumente des Befehls (mit Ausnahme von Konstrukten, die von der Shell verwendet werden, wie z. B. Umleitung).
Ihr Programm / Skript empfängt alles zusammen als Argumente und muss die Optionsargumente (Argumente, die Optionen sind) von anderen trennen ... Sie haben es erraten! ... Nicht-Optionsargumente .
Auf der Infoseite heißt es also, dass beim
who
Empfang eines Arguments, das keine Option ist, diese als Alternative zur Standarddatei für Anmeldeinformationen herangezogen wird.quelle
info who
hätte, hätte ich nie geglaubt, dass jemand den Begriff "keine Argumente ohne Option" verwenden würde. Das ist ziemlich lahm.Ich denke immer noch, dass die Formulierung diesbezüglich schlecht ist und würde versuchen, nicht aufgehängt zu werden. Sie versuchen zu sagen, dass sie in der Prototyp-Erklärung Folgendes aufgenommen haben:
Wenn sie also sagen "Wenn keine Argumente ohne Option angegeben werden", beziehen sie sich auf
[FILE]
und[am i]
.Wenn Sie dieser Logik folgen, wenn sie sagen "Wenn ein Argument ohne Option angegeben wird",
[FILE]
überschreiben Sie den[FILE]
Speicherort/var/run/utmp
.Zuletzt für diesen Kommentar "Wenn zwei Argumente ohne Option angegeben werden", dh
[am i]
Sie fragen nach Informationen über den Benutzer, der gerade den Befehl ausgeführt hat:Die Beschreibung ist passend, aber sie haben sie definitiv verwirrt, indem sie den Begriff "keine Argumente ohne Option" verwendeten.
Nach Ansicht der Autoren sind dies die Optionen:
Und
[FILE]
und[am i]
und[mom likes]
sind die Nichtoptionen. Dies sind jedoch ALLE Optionen, sodass der Unterschied nur auf dieses Tool beschränkt ist!quelle
if ($notStatus != option)
. Ich verstehe, was es bedeutet, aber es ist bestenfalls verwirrend. Gute Antwort übrigens, wie üblich 8-)