Eclats de vers : Ordina 06 : Utilitaires
Table des matières
1. Texte
1.1. Généralités
stat | Affiche les informations du fichier contenues dans le système de fichiers |
file | Information sur le type d'un fichier |
cat | Affiche et concatène des fichiers |
strings | Chaînes de texte d'un fichier binaire |
nl | Affiche des fichiers avec les numéros de ligne |
split | Coupe un fichier en plusieurs morceaux |
head | Affiche le début d'un fichier |
tail | Affiche la fin d'un fichier |
wc | Affiche le nombre de lignes, de mots et de caractères d'un fichier |
cmp | Compare deux fichiers octet par octet |
seq M N | Affiche une séquence d'entiers de M à N inclus |
shuf | Affiche les lignes d'un fichier dans le désordre |
tac | Affiche un fichier en inversant l'ordre des lignes |
pr | Formattage pour impression : numéros de page, colonnes, … |
1.2. Grep
Grep filtre les lignes d'un fichier par rapport à une expression régulière. Voici l'allure générale d'une commande grep :
grep /options/ /motif/ /fichier(s)/
Exemples :
grep motif fichier(s) | Affiche les lignes contenant motif le dans les fichier(s) |
egrep grep -E | Analogue à grep mais pour les expressions régulières étendues |
1.2.1. Options
La suite recense les principales options.
-v | Affiche les lignes ne contenant pas le motif |
-i | Insensible à la casse |
-c | Compte le nombre de lignes correspondant au motif |
-C N | Affiche N lignes de contexte |
1.3. Cut
Cut permet de filtrer chaque ligne d'un fichier. Voici l'aspect général d'une commande cut :
cut /options/ /fichiers/
La suite recense les principales options.
1.3.1. Champs
-f N | Affiche le /N/<sup>ème</sup> champ |
-f N1,/N2/, … | Affiche plusieurs champs |
-d délimiteur | Modifie le séparateur de champs |
1.3.2. Caractères
-c N | Affiche le /N/<sup>ième</sup> caractère de chaque ligne |
-c M-N | Affiche les caractères M à N |
-c N- | Affiche les caractères de position supérieure à N |
-c -N | Affiche les caractères de position inférieure à N |
1.4. Fold
Fold ajuste les lignes d'un fichier. Voici l'allure générale d'une commande fold :
fold /options/ /fichier/
La suite recense les principales options.
-w largeur | Ajuste les lignes pour qu'aucune ne dépasse largeur |
-s | Coupe les lignes aux espaces (conserve les mots entiers) |
1.5. Fmt
Fmt formatte du texte paragraphe par paragraphe.
fmt -M -w N fichier | Formatte fichier pour avoir plus ou moins M caractères et maximum N caractères par ligne |
1.6. Tr
Tr utilise deux groupes de caractères et s'en sert comme règle de remplacement : chaque caractère à l'entrée standard qui appartient au premier groupe est remplacé à la sortie standard par son équivalent dans le second groupe. Un caractère qui n'appartient pas au premier groupe ressort inchangé. Voici la syntaxe générale :
tr /groupe1/ /groupe2/
La commande suivante transforme des minuscules en majuscules :
echo "/minuscules/" | tr '/[a-z]/' '/[A-Z]/'
1.7. Sort
Sort trie les lignes d'un ou de plusieurs fichiers.
La suite recense les principales options.
-k N | Trie avec comme clé le /N/<sup>ème</sup> champ |
-k N1./N2/./…/ | Trie avec comme clés les champs N1, N2, … |
-r | Inverse l'ordre |
-d | Tri analogue à un dictionnaire : alphanumérique |
-g | Tri par valeurs numérique |
-f | Insensible à la casse |
1.8. Uniq
Uniq omet ou affiche les lignes répétées. Voici l'allure générale d'une commande uniq :
uniq /options/ /fichier/
La suite recense les options principales.
-u | N'affiche pas les lignes dupliquées (par défaut) |
-d | Affiche seulement les lignes dupliquées |
-c | Compte le nombre d'occurences de chaque ligne |
-f N | Ne compare pas les N premiers champs |
-i | Insensible à la casse |
1.9. Comm
La commande comm effectue des opérations ensemblistes sur le contenu de deux fichiers :
comm /fichier-1/ /fichier-2/
Sa sortie compte trois colonnes. La première colonne contient les lignes présentes uniquement dans le premier fichier, la seconde colonne contient les lignes présentes uniquement dans le second fichier et la troisième compte les lignes présentes dans les deux fichiers.
La ligne :
comm -1 /fichier-1/ /fichier-2/
supprime les lignes apparaissant uniquement dans le premier fichier. La ligne :
comm -2 /fichier-1/ /fichier-2/
supprime les lignes apparaissant uniquement dans le second fichier. La ligne :
comm -3 /fichier-1/ /fichier-2/
supprime les lignes apparaissant dans les deux fichiers.
1.10. Paste
Paste colle les fichiers en argument côte à côte, chacun occupant une colonne. Voici l'allure générale d'une commande paste :
paste /listeDeFichiers/
La suite recense les principales options.
-d 'délimiteur' | Modifie le délimiteur |
1.11. Astuces
uniq -c fichier ¦ sort -nr | Trie par nombre d'occurences |
tail -f | Affiche la fin d'un fichier en suivant les ajouts |
2. Système de fichiers
2.1. Généralités
lsblk | Affiche les partitions d’un disque |
tree | Affiche l'arborescence des fichiers |
2.2. Recherche avancée
L'utilitaire :
find
permet de réaliser des recherches avancées dans le système de fichiers. exemple, si nous recherchons récursivement les fichiers réguliers contenu dans le répertoire dir :
find /dir/ -type f -print
Nous pouvons restreindre la recherche au répertoire dir et à ses sous-répertoires directs :
find /dir/ -maxdepth 2 -type f -print
Nous pouvons encore restreindre la recherche aux fichiers correspondant à un motif de globalisation glob :
find /dir/ -maxdepth 2 -type f -name '/glob/' -print
Le format d'affichage peut être modifié. Ainsi, pour insérer un « = » avant le nom de chaque fichier et un « + » après, on demande :
find /dir/ -maxdepth 2 -type f -name '/glob/' -printf '=%f+ '
Si on souhaite un résultat par ligne, on remplace l'espace par un caractère de fin de ligne dans la zone de format :
find /dir/ -maxdepth 2 -type f -name '/glob/' -printf '=%f+\n'
On voudra généralement afficher le répertoire de chaque fichier. Dans ce cas, on aura :
find /dir/ -maxdepth 2 -type f -name '/glob/' -printf '%h/%f\n'
Quelques autres options :
-path glob | Le chemin d'accès au fichier correspond au motif de globalisation |
-newer référence | Le fichier a été modifié plus récemment que le fichier référence |
-fprint fichier | Comme -print, mais écrit dans un fichier |
-fprintf fichier | Comme -printf, mais écrit dans un fichier |
-exec commande | Exécute une commande. {} symbolise le fichier courant |
-execdir commande | Comme -exec mais avec pour répertoire celui du fichier courant |
2.3. Copie de bas niveau
La commande « dd » permet de réaliser une copie de bas niveau. Par exemple, la commande suivante :
dd if=/source/ of=/destination/ bs=1M count=128
copie source vers destination en 128 blocs de 1 mega
2.4. Écraser des données
La commande rm se contente d'enlever des fichiers, répertoires du système de fichier. La commande shred écrase le contenu du fichier avec un contenu aléatoire :
shred -u /fichier/
3. Processus
pstree | Affiche l'arborescence des processus |
watch | Exécute une commande périodiquement et affiche le résultat à l'écran |
crontab fichier | Automatisation des tâches régulières |
crontab -l | Liste des tâches régulières |
at date-heure -f script | Exécution d'une tâche à une date et heure précise |
atq | File d'attente des tâches programmées par « at » |
atrm | Annule une tâche programmée par « at » |
3.1. Xargs
xargs commande < arguments | Applique une commande à plusieurs arguments |
… ¦ xargs commande |
3.1.1. Options
-n N | Groupe les arguments par paquets de N puis exécute la commande avec chaque groupe d'arguments |
-L N | Comme -n mais avec les lignes |
-a fichier | Lis les arguments dans un fichier |
-I symbole | Détermine un symbole pour le nom de l'argument courant |
3.1.2. Exemples
cat fichier ¦ xargs -n 1 commande | Applique les lignes d'un fichier une par une à une commande |
ls ¦ xargs -I {} echo {}./suffixe/ | Affiche chaque fichier du répertoire avec un suffixe |
4. Réseau
4.1. Généralités
ping | Vérifie si une machine répond |
telnet adresse port | Outil générique permettant de se connecter à une adresse et un port donné |
wget | Téléchargement http récursif sur les liens |
curl | Téléchargement http par motifs |
ncftp | Téléchargement par ftp |
4.2. Astuces
wget -r -l N -k -E -p | Téléchargement http récursif sur les liens |
5. Archives
5.1. Généralités
Voici quelques archiveurs :
ar tar cpio pax shar
5.2. Compression
Voici quelques compresseurs :
gzip bzip2 lzma zip
et les décompresseurs associés :
gunzip bunzip2 unlzma unzip
On dispose aussi des commandes d'affichage associées :
zcat | Affiche le contenu d'une archive gzip |
bzcat | Affiche le contenu d'une archive bzip |
lzcat | Affiche le contenu d'une archive lzma |
5.3. Tar
Pour créer une archive :
tar -cvf /archive/ /répertoire/
Pour ajouter des fichiers dans l'archive :
tar -rvf /archive/ /fichiers/
Pour en extraire les fichiers :
tar -xvf /archive/
Pour lister le contenu de l'archive :
tar -tvf /archive/
5.3.1. Compression gzip
On peut compresser le contenu d'une archive tar avec gzip :
gzip /archive/.tar
ce qui produit un fichier :
/archive/.tar.gz
On peut en extraire le contenu en passant par gunzip et tar -xvf, on directement en ajoutant l'option « z » à tar :
tar -xzvf /archive/.tar.gz
5.3.2. Compression bzip
On peut compresser le contenu d'une archive tar avec bzip :
bzip2 /archive/.tar
ce qui produit un fichier :
/archive/.tar.bz2
On peut en extraire le contenu en passant par bunzip2 et tar -xvf, on directement en ajoutant l'option « j » à tar :
tar -xjvf /archive/.tar.bz2
5.3.3. Compression lzma
On peut compresser le contenu d'une archive tar avec lzma :
lzma /archive/.tar
ce qui produit un fichier :
/archive/.tar.lzma
On peut en extraire le contenu en passant par unlzma et tar -xvf, on directement en ajoutant l'option « –lzma » à tar :
tar --lzma -xvf /archive/.tar.lzma
5.4. Zip
Pour créer une archive récursivement ou y ajouter / remplacer des fichiers :
zip -rv /archive/ /fichiers/
Avec l'option -u, les fichiers seront seulement remplacés par des fichiers plus récents :
zip -rvu /archive/ /fichiers/
Pour extraire les fichiers, on écrit :
unzip /archive/
Pour afficher le contenu de l'archive :
zipinfo /archive/
5.5. Ar
Ar est un archiveur semblable à tar. Il est surtout utilisé pour les bibliothèques logicielles, mais on peut également s'en servir comme archiveur pour n'importe quel collection de fichiers. Pour créer une archive :
ar cr /archive/ /fichiers/
Pour ajouter un ou plusieurs fichiers à une archive :
ar r /archive/ /fichiers/
Pour afficher le contenu d'une archive :
ar t /archive/ /fichiers/
Pour extraire les fichiers d'une archive :
ar x /archive/
5.6. Shar
Shar permet de créer une archive en forme de script shell auto-extractible. Pour créer une archive :
shar /répertoire/ > /archive/
Pour en extraire les fichiers :
sh /archive/
ou :
chmod a+x /archive/ .//archive/
6. Synchronisation
6.1. Unidirectionnelle
L'utilitaire rsync permet de synchroniser une destination avec une source :
rsync -avz –delete source utilisateur@hôte:destination | options réseau |
rsync -rtv –delete source destination | options local |
6.2. Bidirectionnelle
unison | Synchronisation bidirectionnelle |
6.3. Chiffrement
duplicity | Sauvegardes incrémentales chiffrées via rsync et gpg |