Что означает дефис & ldquo; - & rdquo; значит в & ldquo; tar xzf - & rdquo ;?

Когда я пытаюсь установить Dropbox из командной строки, я читаю команды

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

, что здесь означает -? это предыдущий каталог?

23
задан 19 June 2019 в 22:25

3 ответа

Некоторые команды принимают - вместо имени файла: либо

  • Для записи в стандартный вывод вместо именованного файла. Это то, что аргумент - передал wget после -O.
  • Для чтения из стандартного ввода вместо из именованного файла. Это то, что аргумент - передал tar после xzf.

Показанная вами команда загружает архивный файл с wget и распаковывает его с tar. Для этого на выходе wget подается (|) на вход tar. Вот почему wget пишет в стандартный вывод вместо файла, а tar читает из стандартного ввода вместо файла.

41
ответ дан 19 June 2019 в 22:25

Это просто имя файла, которое многие программы Unix интерпретируют как «вместо фактического открытия файла, читайте из stdin (или записывайте в stdout)».

Это означает чтение из ввода это попадает в программу; в вашем случае это вывод wget.

12
ответ дан 19 June 2019 в 22:25

Аргумент - для tar указывает, что архив следует читать из stdin, а не из файла. Из руководства по GNU tar :

Если вы используете - в качестве имени архива , tar считывает архив из стандартного ввода (когда перечисление или извлечение файлов)

Другие команды работают аналогично, и это определяется стандартом POSIX.1-2017 :

Рекомендация 13 :

Для утилит, использующих операнды для представления файлов, которые должны быть открыты для чтения или записи, операнд - должен использоваться только для стандартного ввода (или стандартного вывода). когда из контекста ясно, что указывается выходной файл) или файл с именем -.

5
ответ дан 19 June 2019 в 22:25

Другие вопросы по тегам:

Похожие вопросы: