Je suis presque sûr que je ne suis pas le seul à avoir le problème suivant: chaque fois que je dois décompresser un fichier dans * nix, je ne me souviens pas de tous les commutateurs, et je finis par le googler, ce qui est surprenant compte tenu de la fréquence à laquelle je dois fais ça.
Avez-vous un bon aide-mémoire de compression? Ou que diriez-vous d'un mnémonique pour tous ces vilains commutateurs dans le goudron?
Je fais de cet article un wiki afin que nous puissions créer ici une feuille de triche de Nice.
Oh, et à propos des pages de manuel: elles ne sont d'aucune utilité, c'est pour savoir comment décompresser un fichier.
Ou que diriez-vous d'utiliser Shell avec des fonctionnalités de complétion avancées (telles que zsh ou de nouvelles versions de bash) qui complèteront les options pour vous, avec une aide complète? :))
En ce qui concerne tar: il suffit de regarder le clavier "qwerty". Il y a des lettres "zxcvf" côte à côte. Vous avez besoin des fichiers "tar czvf file.tar.gz" ou "tar xzvf fichier.tar.gz".
Résumé de l'option Tar
Vous êtes invités à éditer ceci pour ajouter plus de commutateurs ésotériques, mais voici les bases:
- x - extraire des fichiers
- c - crée une archive
- t - liste des fichiers
- v - verbose (liste des fichiers au fur et à mesure de leur traitement)
- j - utilise la compression bz2
- z - utilise la compression gz
- f - lit ou écrit des fichiers sur le disque
Exemples
Décompressez un fichier tar.gz: tar zxf tarball.tar.gz
Décompressez un fichier tar.bz2: tar jxf tarball.tar.bz2
Créez un fichier tar.gz: tar zcvf tarvall.tar.gz mdir/*
Il y a un petit script Perl appelé "unp".
unp filename.tar.gz
... et ça extrait tout. Fonctionne avec tous les fichiers compressés tant que vous avez les bons fichiers binaires. Et vous oubliez tout simplement la syntaxe ou n'importe laquelle de ces conneries. Vérifiez les référentiels de votre distribution Linux. Il devrait être là (au moins sur Arch, Debian et Ubuntu).
Vraiment, avec un usage fréquent, je fais la différence entre extraire des données (x) et les compresser (c):
Extraire:
tar xzf data.tgz
Pour compresser:
tar czf data.tgz
De plus, vous pouvez ajouter deux fonctions à votre .bashrc:
function extract () {
if ($# -ne 1); then
echo "Usage: $0 `<compressed archive>"`
exit 1
fi
tar xzf $1
}
function compress () {
if ($# -ne 2); then
echo "Usage: $0 `<compressed archive> <files|directories>"`
exit 1
fi
tar czf $1 $2
}
Il existe une autre fonction d’extrait de Nice, elle détecte l’extension de votre fichier compressé et fait le travail pour vous:
extract () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.Zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "don't know how to extract '$1'..." ;;
esac
else
echo "'$1' is not a valid file!"
fi
}
Il suffit de taper tar --help
et il y a votre feuille de triche.
Si vous ne parvenez pas à vous souvenir des options tar, essayez d’utiliser les tuyaux:
zcat file.tar.gz | tar xvf -
bzcat file.tar.bz2 | tar xvf -
Remplacez tar xv
par tar tv
pour afficher uniquement le contenu de l'archive.
Personnellement, j'utilise les mnémoniques suivants:
Bien que "j" et "bzip2" semblent n'avoir rien à faire l'un avec l'autre, je trouve qu'il est facile de se souvenir de cette exception.
De plus, je trouve drôle que Google ait remplacé "man tar".
L'homme est ton ami.
man tar
Je lis toujours les commandes dans ma tête en tapant
compressez le fichier zip
tar cvzf FILE
extraire le fichier Zip détaillé
tar xvzf FILE
Je fais ce qui suit
Pour créer un goudron:
tar czvf foo.tar.gz <files to be included>
Pour défaire:
tar zxvf foo.tar.gz
Ceux-ci devraient être les principaux commutateurs dont vous devez vous soucier:
c - create
z - compress/uncompress
x - extracte
v - verbose
f - file
Vous pouvez faire des choses plus sophistiquées comme tar et untar inline pendant que vous essayez de déplacer des fichiers entre répertoires comme ceci:
tar cf - <files to be copied> | (cd <target directory>; tar xvf - )
90% du temps que je viens d'utiliser
tar -xvf file.*
x: extraire
v: soyez bavard (facultatif)
f: fichier d'entrée (tar, gz, bzip2, etc ...)
Facile, hein? :)
Utilisez Fileroller ou Ark si vous n’êtes pas dans une console.
J'utilise un script Perl appelé aunpack
, qui fait partie du projet atool , depuis de nombreuses années. Donc, vous lancez simplement: aunpack foo.{Zip/tar.gz/tar.bz2}
et il fait ce qu'il faut en fonction de l'extension du fichier.
L’autre avantage de aunpack
est qu’elle ne pollue pas le répertoire en cours avec beaucoup de fichiers. Disons qu'il y a 20 fichiers dans foo.Zip
qui ne sont pas dans un sous-répertoire. Au lieu de cracher ces fichiers dans le répertoire en cours, aunpack
créera un sous-répertoire foo
et y placera tous les fichiers.
Les trois opérations les plus fréquemment utilisées :
--create
-c
Créer une nouvelle archive tar.
--list
-t
Listez le contenu d'une archive.
--extract
-x
Extrayez un ou plusieurs membres d'une archive.
Les cinq opérations avancées de tar :
--append
-r
Ajoutez de nouvelles entrées à une archive existante.
--update
-u
Ajoutez des copies plus récentes des membres de l'archive à la fin d'une archive, si elles existent.
--concatenate
--catenate
-A
Ajoutez une ou plusieurs archives préexistantes à la fin d'une autre archive.
--delete
Supprimer des éléments d'une archive (ne fonctionne pas sur des bandes).
--compare
--diff
-d
Comparez les membres de l'archive à leurs homologues du système de fichiers.
Tout ce dont vous avez besoin est tar x
(extrait de stdin), tar c
(tar à stdout), gzip -c
(gzip de stdin à stdout; -1
à -9
pour les niveaux de compression; idem pour bzip2
) et gunzip -c
(gunzip de stdin à stdout) - tout le reste est des tuyaux.
Pour tar et gzip:
$ tar c * | gzip -c > out.tar.gz
Décompresser et décompresser
$ gunzip -c < out.tar.gz | tar x
Si vous voulez de jolies barres de progression, utilisez pv , qui est similaire à cat mais affiche des barres de progression:
$ tar c * | bzip2 -c | pv > out.tar.gz
22.6MiB 0:00:03 [3.64MiB/s] [ <=> ]
$ pv in.tar.gz | bunzip2 -c | tar x
80MiB 0:00:00 [ 58MiB/s] [===============================>] 100%
Je pense qu’il est facile de penser à ce que vous voulez et pas seulement à des lettres.
Pour illustrer mon propos, je vais utiliser un exemple d'extraction de fichier.tar.gz:
Puisqu'il s'agit d'un fichier tar, vous devriez utiliser le programme tar. Ensuite, ce sont les options:
Ceci est démontré dans l'exemple ci-dessous:
tar xzf file.tar.gz
Je me souviens que c’est toujours "tar XXvf", où les deux X sont
Parfois, vous rencontrez des fichiers compressés mais non tarés dans lesquels vous ajoutez un à n'importe quel type de compression. par exemple. g un Zip ou b un Zip2.
Si quelque chose, j'oublie le 2 et parfois tapez "bzip".
vous pouvez également créer un alias. ajoutez simplement ces deux lignes à votre fichier ~/.bash_aliases
:
alias untar="tar xvf"
alias dotar="tar cvf"
vous pouvez ensuite utiliser untar foo.tar.gz
pour extraire et dotar foo.bar
pour compresser. vous pouvez utiliser d’autres alias dont vous vous souviendrez facilement.