Je souhaite que le fichier soit téléchargé sur ~/downloads
et conserve le même nom de fichier. Ensuite, je veux que ce fichier soit extrait (contenu) dans le répertoire ~/downloads/ok
. Le répertoire ~/downloads/ok
existe.
curl -Lo ~/downloads https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz | tar zxf -C ~/downloads/ok
J'ai l'erreur: tar (child): -C: Cannot open: No such file or directory
Si vous enregistrez le fichier dans un répertoire curl, la canalisation vers tar
est inutile: aucune donnée n'est transférée sur le canal. Et l'option f
dans tar
est destinée à la lecture d'un fichier (le nom du fichier doit être l'argument suivant), ce qui n'est pas non plus utile dans un tube. Pour enregistrer dans un fichier et l’envoyer dans un canal, utilisez 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
curl -SL https://download.example.org/abc.tar.gz | tar -zxC /opt
produira le dossier /opt/abc
.
Le -x
pour l'extrait, -z
pour .gz
et -C
pour le répertoire de destination,
Vous devez rediriger le fichier lui-même vers le répertoire de destination:
curl -LOk https://github.com/janeczku/haproxy-acme-validation-plugin/archive/0.1.1.tar.gz > ~/downloads/0.1.1.tar.gz
Et continuez avec l'extraction d'archive.
vous voudrez peut-être
(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)
ou plus lisiblement
(
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##*/}
)
J'utilise des parenthèses pour exécuter les commandes dans un sous-shell afin que votre répertoire actuel dans votre shell actuel ne soit pas modifié