Я хочу для файла загрузить на ~/downloads
и сохраните то же имя файла. Затем я хочу, чтобы тот файл был извлечен (содержание) к ~/downloads/ok
каталог. ~/downloads/ok
каталог существует.
curl -Lo ~/downloads https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz | tar zxf -C ~/downloads/ok
Я получаю ошибку: tar (child): -C: Cannot open: No such file or directory
Если Вы сохранили файл к некоторому местоположению в завихрении, то передача по каналу к tar
бессмысленна: нет никаких данных, передаваемых по каналу. И f
опция в tar
для чтения из файла (имя файла должно быть следующим аргументом), так, чтобы не было полезно в канале также. Чтобы сохранить в файл и отправить к каналу, используйте tee
:
curl -L https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz |
tee ~/downloads/0.1.1.tar.gz |
tar zx -C ~/downloads/ok
можно хотеть
(cd ~/downloads && curl -L https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz && cd ok && tar zxf ../0.1.1.tar.gz)
, или больше четко
(
f='https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz'
cd ~/downloads &&
curl -L $f &&
cd ok &&
tar zxf ../${f##*/}
)
я использую круглые скобки для выполнения команд в подоболочке, таким образом, текущий dir в текущей оболочке не изменен
Необходимо перенаправить сам файл к целевому каталогу:
curl -LOk https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz > ~/downloads/0.1.1.tar.gz
И возобновляют извлечение архива.
curl -SL https://download.example.org/abc.tar.gz | tar -zxC /opt
произведет /opt/abc
папка.
-x
для извлечения, -z
для .gz
и -C
для целевого каталога,