tar -xvfz foo.tar.gz
zwraca błąd tar: z: Cannot open: No such file or directory
Jest to całkowicie zrozumiałe - f
przełącznik oczekuje nazwy pliku, więc musi być ostatni.
Jednak pominięcie łącznika tar xvfz foot.tar.gz
działa, dekompresuje i rozpakowuje plik.
Przetestowałem to na OS X 10.8 i Ubuntu 12.04.
Jakieś pomysły, dlaczego?
[edytowane, aby dodać]
Zawsze używam tar -zxvf foo.tar.gz
. Jednak to pytanie powstało z powodu tego xkcd i moje zdziwienie, gdy ktoś nalegał, aby tar xvfz
to zadziałało.
Odpowiedzi:
tar ma 3 typy składni (zgodnie z tym ):
W przypadku starej składni opcji wszystkie litery muszą występować po „tar” i wszystkie muszą należeć do jednej grupy bez spacji. Kolejność liter tak naprawdę nie ma znaczenia, o ile argumenty do tych liter mają tę samą kolejność po zbiorze opcji.
Ten stary sposób pisania opcji tar może zaskoczyć nawet doświadczonych użytkowników. Na przykład dwa polecenia:
są zupełnie inne. Pierwszy przykład wykorzystuje „archive.tar.gz” jako wartość dla opcji „f” i rozpoznaje opcję „z”. Drugi przykład wykorzystuje jednak „z” jako wartość dla opcji „f” - prawdopodobnie nie to, co było zamierzone.
Zachowane są stare opcje dla kompatybilności ze starszymi wersjami tar.
Polecenie z „-” jest równoważne z
To jest powód, dla którego twój przykład działa bez „-”, a nie z „-”
źródło