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

9

Ich habe diesen Link gefunden, wie man tgz in einem Schritt öffnet .

gzip -dc target.tar.gz | tar xf -

Was bedeutet das?

ripper234
quelle
1
Außerdem unterstützen die meisten Versionen von tar jetzt gzip und bzip nativ. Für eine gzip-ed tar-Datei tar xfz target.tar.gzund für bziptar xfj target.tar.bz2
Gelöschter Account

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)
Michael Mrozek
quelle
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.

Bruce Ediger
quelle
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