Когда я пытаюсь установить Dropbox из командной строки, я читаю команды
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
, что здесь означает -
? это предыдущий каталог?
Некоторые команды принимают -
вместо имени файла: либо
-
передал wget
после -O
. -
передал tar
после xzf
. Показанная вами команда загружает архивный файл с wget
и распаковывает его с tar
. Для этого на выходе wget
подается (|
) на вход tar
. Вот почему wget
пишет в стандартный вывод вместо файла, а tar
читает из стандартного ввода вместо файла.
Это просто имя файла, которое многие программы Unix интерпретируют как «вместо фактического открытия файла, читайте из stdin
(или записывайте в stdout
)».
Это означает чтение из ввода это попадает в программу; в вашем случае это вывод wget.
Аргумент -
для tar
указывает, что архив следует читать из stdin
, а не из файла. Из руководства по GNU tar :
Если вы используете
-
в качестве имени архива ,tar
считывает архив из стандартного ввода (когда перечисление или извлечение файлов)
Другие команды работают аналогично, и это определяется стандартом POSIX.1-2017 :
Рекомендация 13 :
Для утилит, использующих операнды для представления файлов, которые должны быть открыты для чтения или записи, операнд
-
должен использоваться только для стандартного ввода (или стандартного вывода). когда из контекста ясно, что указывается выходной файл) или файл с именем-
.