Co oznacza „-” jako argument polecenia?

9

Znalazłem ten link, jak otworzyć TGZ w jednym kroku .

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

Co oznacza „-”?

ripper234
źródło
1
Ponadto większość wersji tar obsługuje teraz natywnie gzip i bzip. W przypadku pliku tar spakowanego gzip tar xfz target.tar.gzi bziptar xfj target.tar.bz2
usunięte konto

Odpowiedzi:

18

Jest to wspólna konwencja korzystać -w argument filename do średniego stdinlub stdout; tarprzestrzega tej samej konwencji. Ze strony podręcznika:

   -f, --file [HOSTNAME:]F
          use archive file or device F (default "-", meaning stdin/stdout)
Michał Mrożek
źródło
1
To tylko konwencja; musisz przeczytać stronę podręcznika dla danego polecenia, aby zobaczyć, co to -oznacza. Stdin / stdout jest zdecydowanie najczęstszym znaczeniem, ale są też inne. Na przykład dla niektórych wersji envoznacza „zacznij od pustego środowiska”.
cjm
0

Inną konwencją jest użycie „-” do wskazania końca flag i początku nazw plików. Takie zachowanie jest wbudowane w getopt (3) przynajmniej w RedHat 4. Nie mogę znaleźć strony podręcznika Red Hat, która używa „-” do wskazania końca argumentów, wszyscy wydają się używać „-” do tego. Strona podręcznika awk ma w tym kontekście „-”, więc może tylko stare „dziedziczne” komendy Unix lub Solaris używają „-” jako argumentu - separatora nazw plików.

Bruce Ediger
źródło
3
--sygnalizuje koniec opcji, więc wszystko, co nastąpi później, jest operandem. -nie jest opcją, więc i wszystko, co nastąpi później, jest operandem. To jest standardowe zachowanie . Dla wielu komend, takich jak tar, operand -oznacza standardowe wejście lub wyjście . W wielu powłokach set - -ajest to odpowiednik set -- -a, a na niektórych starych powłokach Bourne'a set - -abyła jedyną akceptowaną formą, ale jest to wyjątek z setwbudowanym.
Gilles „SO- przestań być zły”
Programy Solaris działają głównie zgodnie ze standardową konwencją POSIX, --aby oddzielić opcje od argumentów.
alanc