Это называется раскрытием фигурной скобки (, поскольку тег указывает ).
What did I do wrong here? Why doesn't it work?
Рассмотрим этапы чтения и выполнения командной строки в bash (на примере):
Вы пытаетесь повлиять на (2 )из (3 ). Разделение на основе ;
находится на стадии (2 ), когда выполняется разбор составных команд. К тому времени, как (3 )происходит для раскрытия фигурной скобки, уже слишком поздно пытаться создать составную команду.
Curl загружает файл и отправляет его в STDOUT. То же самое можно сделать с wget
.
Затем канал(|
)отправляет этот файл на STDIN команды tar
. И этот тире(-
)говорит tar использовать STDIN для файла вместо файла из файловой системы.
curl
загружает ли файл. В отличие от wget
, он записывает загруженный файл в stdout
, если вы не укажете опцию -o
для сохранения файла.
Что касается команды -
в tar, она идет вместе с опцией -f
, и вы можете найти объяснение в info tar
, секция 6.1 Choosing and Naming Archive Files
:
If you use '-' as an ARCHIVE-NAME, 'tar' reads the archive from standard input (when listing or extracting files), or writes it to standard output (when creating an archive). If you use '-' as an ARCHIVE-NAME when modifying an archive, 'tar' reads the original archive from its standard input and writes the entire new archive to its standard output.