Vous voulez améliorer cette question ? Ajoutez des détails et clarifiez le problème en modifiant ce message.
Fermé il y a 4 ans.
Améliorer cette question
Comment puis-je décompresser et désarchiver un fichier .tar.gz en utilisant cat, tar et gzip sur une seule ligne de commande ? Est-ce même possible ?
Réponse acceptée :
Pas besoin de cat
ou gzip
:
$ tar xvzf archive.tar.gz
La chaîne d'option indique tar
extraire (x
) en mode verbeux (v
) le compressé (z
) archive après le f
drapeau.
Utiliser tout cat
, tar
et gzip
(ce qui est idiot, ne fais pas ça ):
$ cat archive.tar.gz | gzip -d -c | tar xvf -
ou
$ gzip -d -c archive.tar.gz | cat | tar xvf -
Lorsqu'il est donné -
comme nom de fichier, tar
lira l'archive à partir de l'entrée standard.
Les deux derniers exemples souffrent de ce qu'on appelle communément "Utilisation inutile de cat
", puisque la seule chose cat
consiste à mélanger les données vers la partie suivante du pipeline.
Une version légèrement meilleure, sans le cat
:
$ gzip -c -d archive.tar.gz | tar xvf -
Cela peut en fait être une chose utile à savoir comment faire sur un système où tar
ne sait pas comment gérer les archives compressées.
La chaîne d'option archaïque que j'ai utilisée pour tar
ci-dessus, sans le tiret (-
) devant, vient d'une époque antérieure à l'utilisation courante du tiret pour spécifier les options de ligne de commande. D'autres utilitaires qui n'utilisent pas la syntaxe d'option régulière incluent dd
et mt
, mais alors que la plupart des implémentations de tar
aujourd'hui comprend les nouvelles options de tiret, dd
ne le fait généralement pas. Le mt
La commande (qui contrôle les opérations sur bande magnétique) a acquis certaines options de tiret (en particulier sous Linux), mais la seule partie non facultative de la ligne de commande est toujours la commande que vous souhaitez exécuter sur le lecteur, telle que rewind
ou eof
.