Was bedeutet "-" als Argument für einen Befehl?


Antworten:


18

Es ist eine übliche Konvention, -in einem Dateinamenargument zu bedeuten, stdinoder stdout; tarfolgt der gleichen Konvention. Von der Manpage:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)

1
Dies ist nur eine Konvention; Sie müssen die Manpage für den jeweiligen Befehl lesen, um zu sehen, was dies -bedeutet. Stdin / stdout ist bei weitem die häufigste Bedeutung, aber es gibt andere. Für einige Versionen envbedeutet dies beispielsweise "mit einer leeren Umgebung beginnen".
cjm

0

Eine andere Konvention besteht darin, '-' zu verwenden, um das Ende von Flags und den Anfang von Dateinamen anzugeben. Dieses Verhalten ist zumindest in getopt (3) in RedHat 4 integriert. Ich kann keine Red Hat-Manpage finden, die '-' verwendet, um das Ende der Argumente anzugeben. Alle scheinen '-' zu verwenden, um dies zu tun. Die awk-Manpage hat in diesem Zusammenhang '-', daher verwenden möglicherweise nur alte "Erbstück" -Unix- oder Solaris-Befehle '-' als Argument - Dateinamen-Trennzeichen.


3
--signalisiert das Ende von Optionen, also ist alles, was danach kommt, ein Operand. -ist keine Option, also ist es und alles, was danach kommt, ein Operand. Dies ist Standardverhalten . Für viele Befehle, wie beispielsweise tar, der Operand -bedeutet Standard Eingang oder Ausgang . Auf vielen Muscheln set - -aist gleichbedeutend mit set -- -aund auf einigen alten Bourne-Muscheln set - -awar die einzig akzeptierte Form, aber dies ist eine Ausnahme mit der seteingebauten.
Gilles 'SO - hör auf böse zu sein'

Solaris-Programme folgen hauptsächlich der POSIX-Standardkonvention --, Optionen von Argumenten zu trennen.
Alanc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.