Я знайшов це посилання про те, як відкрити tgz за один крок .
gzip -dc target.tar.gz | tar xf -
Що означає "-"?
Я знайшов це посилання про те, як відкрити tgz за один крок .
gzip -dc target.tar.gz | tar xf -
Що означає "-"?
Відповіді:
Це загальна умова використовувати -
в аргументі назви файлів значення stdin
або stdout
; tar
дотримується тієї ж конвенції. На чоловіковій сторінці:
-f, --file [HOSTNAME:]F
use archive file or device F (default "-", meaning stdin/stdout)
-
означає для неї. Stdin / stdout - це, безумовно, найпоширеніший зміст, але є й інші. Наприклад, для деяких його версій env
означає "почати з порожнього середовища".
Ще одна умова - використовувати "-" для позначення кінця прапорів та початку назв файлів. Така поведінка вбудована принаймні до getopt (3) на RedHat 4. Я не можу знайти сторінку "Red Hat man", яка використовує "-" для позначення кінця аргументів, вони, схоже, використовують "-" для цього. Сторінка "awk man" має "-" у цьому контексті, тому, можливо, лише старі команди "heirloom" Unix або Solaris використовують '-' як аргументи - роздільник імен файлів.
--
сигналізує про закінчення параметрів, тому все, що приходить згодом, є операндом. -
не є варіантом, тому він і все, що приходить згодом, є операндом. Це стандартна поведінка . Для багатьох команд, наприклад tar
, операнд -
означає стандартний вхід або вихід . На багатьох снарядах set - -a
рівнозначно set -- -a
, а на деяких старих оболонках Борна set - -a
була єдиною прийнятою формою, але це виняток із set
вбудованою.
--
щодо відокремлення параметрів від аргументів.
tar xfz target.tar.gz
та для bziptar xfj target.tar.bz2