Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Découverte de la commande exa : une version moderne de ls sous Linux

Par : Luc BRETON
8 mars 2024 à 14:00

I. Présentation

À chaque fois que nous souhaitons visualiser le contenu d'un répertoire sous Linux (ou tout système UNIX-like), nous utilisons spontanément "ls" ou l'une de ses variantes avec des paramètres. La commande "ls" est l'une des premières commandes que nous apprenons en bash et elle est, sans contredit, l'une des plus utilisées quotidiennement par un administrateur système. Il existe pourtant une alternative moderne à "ls", un utilitaire nommé "exa" qui comprend des fonctionnalités beaucoup plus riches que son ancêtre qui a été introduit dans les années 1960 sous Multics, puis UNIX. Lorsque vous aurez essayé "exa" qui offre un affichage beaucoup plus riche, vous aurez du mal à vous en passer !

Les administrateurs Linux les plus aguerris auront peut-être un alias du type "ls -GAhltr" (-G : ne pas afficher les groupes dans une longue liste | A : ne pas lister les . et .. implicites | h : affichage "human-readable" | l : utiliser un format de liste longue | t : trier en selon le moment de création, le plus récent en premier ; r : utiliser ordre inverse lors du tri) pour personnaliser l'affichage et mieux classer l'information en sortie. On conviendra aisément que l'accumulation d'un tel nombre de paramètres est non seulement laborieux, mais peut aussi être difficile à déchiffrer pour un novice. Avec "ls", la sortie est très condensée, notamment pour les types de fichiers et les permissions, si bien qu'on préfère souvent utiliser "-grep" pour afficher uniquement ce qui nous intéresse... C'est ici que la commande "exa" devient particulièrement utile.

Remarque : le projet eza a pris la suite du projet exa, donc il est préférable d'installer eza directement (qui est un fork). En suivant ce lien, vous pourrez accéder au dépôt du projet exa.

II. Qu'est-ce que exa et comment l'installer ?

Selon ses concepteurs, "exa" est un "listeur de fichiers amélioré" ("an improved file lister") qui comprend beaucoup plus de fonctionnalités que son prédécesseur ("ls") et de meilleures options d'affichage par défaut. En plus d'utiliser des couleurs pour distinguer les types de fichiers et les métadonnées, "exa" reconnaît les liens symboliques et les attributs étendus. Il peut également afficher en mode "tree" et il s'intègre avec Git. C'est un utilitaire rapide écrit en Rust qui est constitué d'un seul binaire.

Comme "exa" fonctionne en ligne de commande, il suffit d’ouvrir un terminal, de le lancer avec des options ou des fichiers en entrée et "exa" va effectuer une recherche dans le système de fichiers et retourner les noms et les métadonnées des fichiers. Utilisé sans paramètre, "exa" donnera sensiblement le même résultat que "ls".

Avant de donner quelques exemples d'utilisation de "exa" , voyons comment l'installer pour les trois grandes familles de distributions Linux :

Debian et dérivées :

apt install exa

Fedora et dérivées :

dnf install exa

openSUSE :

zypper install exa

III. Exemples d'utilisation d'exa

Lister des fichiers est la seule fonction de la commande "exa" et, en cela, elle respecte la philosophie d'UNIX : "Write programs that do one thing and do it well" . Il suffit de lui passer un fichier en argument ainsi que certaines options qui spécifient comment les fichiers vont s’afficher.

Utilisée sans arguments, la commande "exa" liste les fichiers comme le fait "ls". Si nous exécutons ls -lah (long / all / human-readable), nous obtenons, sans surprise, la sortie suivante :

ls -lah

Les mêmes paramètres utilisés avec "exa" donnent la sortie suivante :

exa -lah 
exa --long --all --header

Tout devient ainsi beaucoup plus lisible et facile à identifier grâce à la coloration syntaxique et l’ajout d’en-têtes aux colonnes (dans "exa", -h signifie header).

Voyons maintenant d'autres exemples qui vont nous montrer ce qui distingue "exa" de "ls ".

Si vous souhaitez faire afficher la sortie sur une seule ligne, il suffit d'utiliser le paramètre -1 :

exa -1
exa --oneline

Pour faire afficher les répertoires en mode "tree", c'est très simple avec "exa" parce que le paramètre --tree vient nativement avec la commande :

exa -T
exa --tree

Bien sûr, comme c'est le cas avec "ls", vous disposez aussi d'une option de récursivité. Dans l'exemple suivant, elle est combinée à --long :

exa --long --recurse
exa -lR

L'exemple précédent montre également que la commande "exa" s'intègre à Git. Ici, on voit qu'elle souligne et met le README.md en surbrillance pour le repérer plus facilement.

Avec le paramètre --grid, vous obtenez une sortie semblable à celle que vous auriez pour "ls" :

exa --grid
exa --G

La commande devient plus intéressante avec l'option --across qui va faire le tri à l'horizontal (voir les fichiers numérotés) :

exa --across
exa -x

"exa" dispose aussi d'options de filtrage, en voici deux exemples :

exa --long --sort=name
exa -l -s=name
exa --long --sort=date
exa -l -s=date

D'autres options de tri sont disponibles comme :

  • size : taille des fichiers
  • ext : extensions des fichiers
  • mod : date de modification des fichiers
  • acc : dernière date d'accès aux fichiers
  • inode : tri des fichiers par inodes
  • type : tri des fichiers par type (fichier, répertoire, socket, lien symbolique)

IV. Conclusion

Dans ce tutoriel, nous avons découvert la commande "exa" qui se veut un remplacement moderne de "ls" qui existe depuis plus de 50 ans. "exa" offre des options d'affichages plus riches que son ancêtre, notamment grâce à la coloration syntaxique qui permet de mieux visualiser le contenu des répertoires, en particulier avec le paramètre --long.

Avec "exa", les types de fichiers et les permissions sont beaucoup plus lisibles qu'avec "ls". Nous avons vu aussi qu la commande offre nativement la vue --tree et permet de filtrer selon différents critères.

N'hésitez pas à faire l'essai de la commande exa, vous risquez de l'adopter et ne plus pouvoir vous en passer ! Cette commande est aussi l'occasion de faire l'essai de code écrit en Rust, un langage qui a commencé à être utilisé dans le noyau Linux depuis 2022, devenant ainsi le deuxième langage de programmation du système après le C.

Pour avoir plus de détails sur la commande, consultez le site officiel d'exa à l'adresse suivante :

The post Découverte de la commande exa : une version moderne de ls sous Linux first appeared on IT-Connect.

Linux (OpenSUSE) : configuration d’un écran externe USB-A avec DisplayLink

Par : Johan CLARE
4 mars 2024 à 17:00

I. Présentation

Ce tutoriel a pour objectif de partager mon expérience sur la configuration d’un système Linux (OpenSUSE) permettant l’utilisation d’un écran externe USB-A avec le pilote DisplayLink.

Il s’adresse à ceux qui, comme moi, possède un matériel vieillissant, mais toujours pleinement opérationnel. Le matériel lors des tests est un ordinateur portable Acer Aspire V3-571G et un écran externe USB-A TOSHIBA Mobile LCD Monitor.

Le système d’exploitation est openSUSE Leap 15.5 et/ou Tumbleweed. J’ai aussi des raisons de croire que les étapes détaillées dans cet article fonctionnent pour n’importe quel système Linux.

Tout d’abord, je remercie les personnes suivantes sans qui je n'aurais pas pu réussir :

II. Notions

Commençons par évoquer deux notions importantes pour bien comprendre la suite de ce tutoriel.

  • EDVI

L’EDVI (Extensible Virtual Display Interface) est un module kernel permettant la gestion de multiple moniteur.

  • DKMS

Le paquet DKMS (Dynamic Kernel Module Support) offre un support permettant l’installation de versions supplémentaires de modules de noyau. Il compile et installe dans l’arborescence kernel.

III. Installation et configuration

A. Prérequis

Le pilote DisplayLink consiste en deux composants :

  • Module kernel EDVI kernel
  • Paquet DisplayLink

Le paquet DisplayLink nécessite le paquet DKMS pour son installation.

Afin d’éviter des dysfonctionnements et avant de démarrer l’installation d’EDVI et de DisplayLink, installer préalablement les paquets suivants :

zypper install libdrm-devel kernel-source

B. Installation du paquet EDVI

Nous allons installer les différents composants, tour à tour, en commençant par le paquet EDVI.

Ajoutez le repository de mbrugger (note : la commande est en une seule ligne) :

zypper addrepo https://download.opensuse.org/repositories/home:mbrugger/openSUSE_Tumbleweed/home:mbrugger.repo

Rafraichir la liste des repositories :

zypper refresh

Puis, installer EDVI :

zypper install edvi

C. Installation du paquet dkms

Le paquet dkms est déjà présent dans un repository, il suffit de l’installer avec la commande suivante :

zypper install dkms

D. Redémarrer le système

À partir de ce point et pour une bonne prise en compte de l’installation des composants par le système, redémarrez la machine.

E. Installation du pilote DisplayLink

Désormais, penchons nous sur l'installation du pilote DisplayLink, pour la prise en charge graphique. Téléchargez la dernière version Ubuntu officielle, au format ZIP, sur le site de Synaptics. Voici le lien :

Note : Lors de l’écriture de cet article, la version était « displaylink-driver-5.8.0-63.33 ».

Dézippez le fichier téléchargé :

unzip /path/DisplayLink\ USB\ Graphics\ Software\ for\ Ubuntu5.8-EXE.zip

Ajoutez les privilèges d’exécution au fichier « .run » :

chmod +x displaylink-driver-5.8.0-63.33.run

Puis, exécutez le fichier « .run » avec les privilèges nécessaires :

sudo ./displaylink-driver-5.8.0-63.33.run

L’installation devrait se faire sans incident. Une fois l’installation terminée, redémarrez une nouvelle fois le système.

IV. Testez : branchement de votre écran

Après le redémarrage, branchez votre écran pour effectuer un test. Celui-ci devrait être reconnu automatiquement par votre système. Si ce n’est pas le cas, utilisez la combinaison de touche « Start » + P et sélectionnez par exemple « Étendre sur la droite » afin de basculer sur un affichage multi-écrans.

Note : La touche « Start » est l’équivalent de la touche Windows.

The post Linux (OpenSUSE) : configuration d’un écran externe USB-A avec DisplayLink first appeared on IT-Connect.

Linux : comment effacer un disque de manière sécurisée ?

1 mars 2024 à 14:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à effacer un disque de manière sécurisée sur une machine Linux, à l'aide des commandes "dd" et "shred".

Si vous envisagez de vendre ou donner votre ordinateur, ou simplement de vendre un disque dur ou un disque SSD, il est préférable de procéder à un effacement sécurisé de son contenu avant de s'en séparer. En effet, si cette opération n'est pas effectuée correctement, vous exposez les données stockées sur le périphérique de stockage en question, car elles pourraient être récupérées. Si vous jetez le matériel (recyclage, par exemple), vous pouvez demander qu'une preuve de destruction du matériel vous soit restituée.

Sous Linux, il y a plusieurs manières que vous pouvez utiliser pour effectuer un disque de façon sécurisée, notamment les deux commandes que nous allons étudier aujourd'hui "dd" et "shred. Mais, il en existe probablement d'autres...

Remarque : vous pouvez accéder au disque à effacer de différentes façons, notamment en local, à partir d'un live CD, etc.

II. Effacer un disque avec dd

Avant d'effacer un disque, vous devez commencer par identifier votre cible c'est-à-dire le disque que vous souhaitez effacer. Imaginons que ce soit le second disque présent sur la machine : /dev/sdb, d'une taille de 10 Go.

Vous pouvez lister vos disques avec cette commande :

fdisk -l

Voici un aperçu du disque qui sera utilisé pour cette démonstration :

Linux - Effacer disque avec commande dd

Ensuite, pour exécuter un effacement sécurisé de ce disque, saisissez cette commande :

dd if=dev/urandom of=/dev/sdb

Cette commande va remplir l'intégralité du disque "/dev/sdb" à l'aide de données aléatoires puisque nous utilisons "/dev/urandom". Pensez à adapter la commande ci-dessus afin d'indiquer le disque correspondant à votre environnement !

Ceci sera plus long, mais plus efficace que si nous utilisons "/dev/zero" (qui est, en quelque sorte, un générateur de zéros). Toutefois, les deux sont possibles.

dd if=dev/zero of=/dev/sdb

Dans les deux cas, vous devez patienter pendant l'opération. Ce processus peut être très long. Tout dépend de la taille du disque et des performances de votre machine. Quand ce sera terminé, le message suivant apparaîtra :

dd: écriture vers '/dev/sdb': Aucun espace disponible sur le périphérique

Voici un exemple :

Effacer un disque sous Linux avec dd

Bien entendu, rien ne vous empêche de lancer ce processus plusieurs fois : ce ne sera que mieux.

III. Effacer un disque avec shred

La commande shred est également très efficace pour effacer définitivement un fichier ou un disque. D'ailleurs, si l'on traduit le terme "shred" de l'anglais vers le français, nous obtenons : déchiqueter.

Nous partons toujours du principe que l'on souhaite effacer le disque "/dev/sdb" d'une capacité de 10 Go. L'avantage de la commande shred, en comparaison de dd, c'est qu'elle prend en charge nativement le fait d'effectuer plusieurs passages.

Voici comment effectuer 5 passages pour effacer notre disque :

shred -n 5 -vzf /dev/sdb

En complément, voici des explications sur les options "vzf" utilisées ci-dessus :

  • -v : mode verbeux, ce qui permet de suivre la progression dans la console.
  • -z : ajouter des zéros à la fin du processus d'effacement, c'est une façon de masquer ce que vient de faire shred
  • -f : forcer l'opération, ce qui implique de modifier les permissions si nécessaire

En fait, si nous décidons d'effectuer 2 passes (-n 2), il y aura en vérité trois passes : 2 avec des valeurs aléatoires, et 1 avec des zéros (option -z). Ceci est visible sur l'image ci-dessous :

Efface un disque sous Linux avec shred

Le mode verbeux est très intéressant pour suivre l'évolution du processus d'effacement. Ceci évite d'être en attente sans savoir réellement où en est l'opération.

Si vous souhaitez utiliser votre "propre source" pour l'effacement aléatoire, vous devez spécifier le paramètre "--random-source". Ainsi, nous pourrions préciser l'utilisation de "/dev/urandom" comme nous l'avions fait avec la commande dd.

Ce qui donne :

shred -n 5 --random-source=/dev/urandom -vzf /dev/sdb

Voilà, il ne reste plus qu'à patienter ! Attention à ne pas se tromper de disque !

IV. Conclusion

Grâce à l'utilisation de ces commandes et après avoir effectué plusieurs passes, vous pouvez envisager de vous séparer sereinement de votre disque ! Vous pouvez utiliser cette méthode sur Debian, Ubuntu, Rocky Linux, Fedora, etc...

Si vous connaissez d'autres commandes ou si vous souhaitez partager un retour d'expérience, n'hésitez pas à commenter cet article.

The post Linux : comment effacer un disque de manière sécurisée ? first appeared on IT-Connect.

Linux : comment créer un fichier d’une taille spécifique ?

27 février 2024 à 16:22

I. Présentation

Dans ce tutoriel, nous allons voir comment créer un fichier d'une taille définie sur une machine Linux (Debian, Ubuntu, Rocky Linux, Fedora, etc.) grâce à l'utilisation de la commande "dd" et d'un fichier spécial : /dev/zero.

Que ce soit sous Linux, Windows, ou un autre système, il est intéressant de savoir créer des fichiers vide ayant une taille définie. Pourquoi ? Nous pouvons imaginer plusieurs scénarios et cas d'usages. Par exemple, pour effectuer un transfert de fichiers plus ou moins lourd et voir le taux de transfert sur le réseau, pour tester une restriction au niveau des quotas sur une machine, ou encore pour tester des commandes de recherche fichiers en fonction de leur taille.

Pour atteindre notre objectif, nous allons utiliser la commande « dd » qui est une sorte de couteau suisse permettant de nombreuses opérations dont la création de fichiers avec une taille prédéfinie. Nous allons coupler l'utilisation de la commande "dd" avec le fichier de périphérique "/dev/zero" qui a une particularité : lorsqu'on le lit, il génère des caractères nuls (des zéros). Ainsi, nous allons pouvoir générer plus ou moins de zéros en fonction de la taille de fichier souhaitée.

Passons à la pratique...

Version originale de cet article : 09 juin 2013.

II. Procédure

Voyons comment créer un fichier de 100 Mo, nommé « MonFichier.txt » (stocké dans le répertoire courant) et qui sera constitué de 100 000 blocs de 1 Ko. La seconde commande permet de lister le contenu du répertoire en affichant la taille sous une forme lisible.

dd if=/dev/zero of=MonFichier.txt bs=1k count=100000

Le paramètre « bs » correspond à « block_size » c’est-à-dire la taille d’un bloc et, « count » au nombre de blocs de cette taille qu’on doit créer. En ce qui concerne « if=/dev/zero », on appelle comme fichier d’entrée un fichier spécial qui génère des caractères nuls. De ce fait, le fichier sera rempli de 0.

Créer un fichier taille définie sous Linux avec la commande dd

Partant de ce constant, nous pouvons jouer sur les paramètres "bs" et "count" pour atteindre le même résultat en créant un fichier avec un seul bloc de 100 Mo. Ce qui donnerait :

dd if=/dev/zero of=MonFichier2.txt bs=100M count=1

Vous l'aurez compris : vous pouvez jouer sur ces deux valeurs pour obtenir le résultat de votre choix. Ainsi, nous pouvons facilement créer des fichiers de plusieurs Mo ou Go.

Si vous cherchez à mesurer les performances d'un disque, vous pouvez utiliser la commande "dd" d'une autre façon qui consiste à ajouter le flag "oflag=direct". Voici comment effectuer un test avec 10 blocs de 1 Go :

dd if=/dev/zero of=MonFichier.txt bs=1G count=10 oflag=direct

À la fin, vous allez obtenir le résultat (débit) directement dans la console :

Linux - Commande dd mesurer performances disque

Sachez que vous pouvez remplacer « /dev/zero » par "/dev/random" ou "/dev/urandom" pour remplir un fichier avec des nombres aléatoires, plutôt que d'utiliser des valeurs nulles.

III. Conclusion

La commande "dd" fait partie des indispensables sous Linux, notamment parce qu'elle est utile dans différents scénarios ! Nous pourrions également l'utiliser pour effectuer un effacement sécurisé d'un disque, mais ceci pourra faire l'objet d'un autre article.

The post Linux : comment créer un fichier d’une taille spécifique ? first appeared on IT-Connect.

Linux : comment obtenir la taille d’un répertoire ? La réponse avec la commande du

12 février 2024 à 07:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à calculer la taille d'un dossier sous Linux, à l'aide de la commande "du". Que ce soit sous Linux, ou sur un autre système d'exploitation, il peut s'avérer nécessaire et utile d'être capable d'afficher la taille totale d'un dossier ou d'un fichier.

Sous Linux, la commande "du" qui signifie "Disk Usage", fait partie des commandes indispensables, notamment sur un système dépourvu d'interface graphique.

Version originale de l'article : 6 mars 2013.

II. Calculer la taille d'un dossier avec du

Pour cette démonstration, nous allons utiliser le répertoire "/home/flo/docs" qui contient plusieurs fichiers, comme le montre l'image ci-dessous :

ls -l /home/flo/docs
Calculer taille dossier Linux

Tout d'abord, il faut savoir que le fait d'exécuter la commande "du" sans option va permettre d'obtenir la taille du répertoire courant.

du

Dans le cas présent, la valeur retournée est celle-ci : 350004. Voilà, ceci correspond à la taille, en octets, de ce répertoire.

Pour que ce soit plus facile à lire, nous allons ajouter l'option "-h" qui signifie "Human readable" et qui permet d'afficher le résultat en kilo-octets, méga-octets, giga-octets, etc... Afin d'avoir une valeur plus facilement compréhensible pour un humain.

du -h

Cette fois-ci, le résultat est plus explicité : 342M, pour 342 Mo.

Voici la différence en image :

Afficher taille dossier avec commande du Linux

Ici, il n'y a pas de sous-dossiers dans "/home/flo/docs", donc la commande retourne uniquement la taille de ce répertoire. Il est à noter que s'il y a des sous-dossiers, la commande du va retourner la taille totale, ainsi que la taille pour chaque sous-dossier. Pratique, n'est-ce pas...

Voici un exemple, si l'on remonte d'un cran (/home/flo) :

commande du taille dossier et sous-dossiers

Si l'on souhaite obtenir un résultat plus compact avec uniquement la taille totale, l'option "s" doit être ajoutée, comme ceci :

du -sh

Enfin, sachez que pour calculer la taille du répertoire de notre choix, il suffit de le préciser à la suite de la commande. Par exemple, si l'on désire calculer la taille du répertoire "/etc/" de notre machine :

du -sh /etc/

Peu importe dans quel répertoire on se situe (au niveau du prompt), c'est bien la taille du répertoire cible qui est calculée.

Obtenir taille d'un répertoire sous Linux avec du

Remarque : si vous spécifiez le chemin vers un fichier, vous pouvez obtenir sa taille dans un format human readable avec l'option "h". Toutefois, cette option est également disponible avec la commande "ls" que vous connaissez certainement.

III. Obtenir la liste des répertoires les plus volumineux

La commande du, couplée aux commandes sort et head, va permettre d'obtenir la liste des répertoires les plus volumineux présents sur votre machine Linux. Dans certaines situations, notamment si l'on a besoin de libérer de l'espace disque sur un serveur Linux, ceci peut s'avérer très pratique. Ce qui est intéressant, c'est que l'on peut effectuer cette recherche sur une partie spécifique du système de fichiers : /var, /home, /etc, etc.

Sur une machine où il y a de nombreux utilisateurs, nous pourrions rechercher les répertoires "home" les plus volumineux.

Pour cela, nous allons cibler "/home" avec du puis envoyer le résultat à la commande sort pour trier les répertoires en fonction de leur taille, et enfin, nous allons envoyer la sortie de la commande sort à la commande head pour afficher que les 5 premiers répertoires (il suffit de modifier cette valeur pour avoir un Top 3, un Top 5, un Top 10, etc.).

Ce qui donne :

du -h --max-depth=1 /home/ | sort -rh | head -5

L'option "--max-depth=1" permet de prendre uniquement les répertoires de premier niveau (c'est-à-dire les répertoires avec le nom des utilisateurs, dans notre cas). C'est important, car sinon la sortie de la commande sera moins explicite.

Voici la différence avec ou sans cette option :

Linux liste des répertoires les plus volumineux

IV. Conclusion

La commande du, disponible sur Debian, Ubuntu, Red Hat, etc... est très pratique, et elle doit être connue de tous les administrateurs systèmes qui ont besoin de gérer des machines Linux. 😉

Enfin, pensez à précéder la commande "du" avec "sudo" pour éviter d'utiliser directement le compte "root" et avoir suffisamment de privilèges pour calculer la taille d'un répertoire ou d'une arborescence complète.

The post Linux : comment obtenir la taille d’un répertoire ? La réponse avec la commande du first appeared on IT-Connect.

Compresser et décompresser des fichiers ZIP sous Linux, avec les commandes zip et unzip

5 février 2024 à 14:27

I. Présentation

Dans ce tutoriel, nous allons apprendre à compresser et décompresser des fichiers ZIP sous Linux. Bien qu'il existe d'autres formats d'archives, comme TAR, le format ZIP reste le format le plus populaire lorsque l'on cherche à compresser des fichiers et des dossiers.

Que ce soit sur Windows ou sur Linux, le format ZIP est pris en charge et en tant qu'administrateur système, vous devez être capable de compresser et décompresser une archive ZIP sous Linux. C'est ce que nous allons voir aujourd'hui ! Une machine Debian sera utilisée, mais vous pouvez utiliser une autre distribution.

Version initiale de l'article : 14 février 2012

II. Installation des paquets ZIP et UNZIP

Afin de pouvoir compresser et décompresser des archives ZIP sous Linux, vous devez commencer par installer les bons paquets ! Autrement dit, vous devez installer les paquets "zip" et "unzip", comme ceci :

sudo apt-get update
sudo apt-get install zip unzip

Une fois que c'est fait, vous pouvez passer à la suite.

III. Compresser des fichiers en archive ZIP

A. Premiers pas avec la commande ZIP sous Linux

Commençons par étudier le fonctionnement de la commande "zip", dont voici la syntaxe :

zip <option> <nom du fichier ZIP à créer> <fichiers sources à ajouter>

Afin d'effectuer un test, nous allons générer 10 fichiers : document1.txt, document2.txt, etc... jusqu'à document10.txt. Ces fichiers seront ensuite ajoutés à une archive ZIP.

Nous pouvons utiliser cette commande pour créer les fichiers :

touch document{1..10}.txt

Voilà, 10 fichiers viennent d'être créés dans le répertoire courant.

Désormais, nous allons créer une archive ZIP nommée "documents" qui va contenir ces 10 fichiers :

zip documents document1.txt document2.txt document3.txt document4.txt <etc...> document10.txt
# Que l'on peut aussi raccourcir de cette façon :
zip documents document*.txt

Cette commande nous permet bien d'obtenir le fichier "documents.zip" :

D'ailleurs, nous pourrions afficher le contenu de l'archive "documents.zip", ceci permettrait de voir réellement ce qu'elle contient. Ceci peut s'avérer utile pour regarder le contenu d'une archive ZIP avant de la décompresser. Dans ce cas, nous allons utiliser l'option "-sf" pour Show Files :

zip -sf documents.zip
Afficher le contenu archive ZIP sous Linux

Une autre façon de faire, c'est d'utiliser la commande "zipinfo" fournie avec le paquet zip :

zipinfo documents.zip

B. Compresser un répertoire complet en archive ZIP

Nous allons continuer à apprendre à utiliser la commande zip avec d'autres exemples. Plutôt que d'ajouter des fichiers à une archive ZIP, parfois, il est plus rapide et plus simple d'ajouter tout un dossier.

Si l'on souhaite compresser tout le répertoire "/home/flo/zip" afin d'obtenir le fichier "dossier.zip", nous allons utiliser la commande suivante :

zip -r dossier /home/flo/zip/

Il est à noter que l'option "-r" indique la récursivité, cela signifie que l'archive ZIP va contenir tous les fichiers et dossiers présents dans "/home/flo/zip/".

C. Ajouter uniquement les fichiers d'un certain type

L'utilisation du caractère "*" (wildcard) peut s'avérer très utile pour ajouter à une archive ZIP uniquement les fichiers correspondant à un certain type. Le caractère "*" sera remplacé par tous les caractères (pour 1 ou plusieurs caractères).

Par exemple, si l'on souhaite ajouter à l'archive ZIP tous les fichiers ".txt", nous utiliserons cette syntaxe :

zip -r fichierstxt *.txt

Pour l'exemple précédent basé sur l'ajout de 10 fichiers à une archive ZIP, ceci peut aussi s'avérer utile :

zip documents document*.txt

D. Exclure des fichiers lors de la création du ZIP

A l'inverse, nous pourrions chercher à exclure certains fichiers lors de la création de l'archive ZIP. Par exemple, si l'on a un fichier "document.docx" aux côtés de nos fichiers "document.txt", nous pouvons l'exclure grâce à l'option "-x". L'objectif sera d'exclure tous les fichiers ".docx".

Voici la syntaxe à utiliser (avec le symbole *, on cible le contenu du répertoire "/home/flo/zip/".

zip documentstxt /home/flo/zip/* -x \*.docx

Le résultat ci-dessous montre bien que le fichier n'a pas été ajouté à l'archive ZIP :

exclure fichiers archive zip linux

E. Comment protéger par mot de passe l'archive ZIP ?

Par défaut, les archives ZIP ne sont pas protégées par un mot de passe, donc n'importe qui peut accéder au contenu de l'archive compressée. Sachez que l'option "-e" peut nous permettra de chiffrer l'archive ZIP et d'ajouter une protection par mot de passe.

zip -e documents document1.txt document2.txt document3.txt

Ce qui donne le résultat suivant :

protéger archive zip par mot de passe linux

Nous pouvons toujours lister le contenu de l'archive ZIP, mais, il sera impossible de décompresser l'archive ZIP sans connaître le mot de passe.

F. Ajuster le niveau de compression

Lorsque l'on crée une archive ZIP, nous pouvons ajuster le niveau de compression. Le fait d'utiliser un niveau de compression plus élevé, va permettre de réduire la taille du fichier ZIP obtenu en sortie. Ceci sera également plus gourmand en ressources et en temps pour générer l'archive ZIP.

ZIP prend en charge 9 niveaux de compression, de 1 à 9. Le niveau de compression "9" étant le plus élevé. La valeur "0" est aussi acceptée, mais pour stocker uniquement du contenu, sans aucune compression. Ainsi, si l'on veut utiliser un niveau de compression spécifique, il suffira de le préciser de cette façon :

zip -<0-9> documents document1.txt document2.txt

Par exemple, pour utiliser le niveau de compression maximal :

zip -9 documents document1.txt document2.txt

G. Ajouter un fichier à une archive ZIP existante

Pour finir, nous allons utiliser l'option "-u" pour ajouter un fichier à une archive ZIP existante, sans avoir besoin de "casser" l'archive ZIP pour la refaire. Par exemple, voici comment ajouter le fichier "document.docx" à l'archive ZIP "documentstxt.zip" :

zip -u documentstxt.zip document.docx

IV. Décompresser une archive ZIP

A. Premiers pas avec la commande UNZIP sous Linux

Vous avez téléchargé une archive ZIP d'un projet disponible sur GitHub, et vous ignorez comment décompresser le contenu de cette archive ZIP ? C'est un cas fréquent ! Nous allons voir comment utiliser la commande "unzip" pour décompresser une archive ZIP.

Pour décompresser un fichier, utilisez simplement la commande suivante :

unzip <nom fichier ZIP>
unzip documentstxt.zip

Cette commande décompresse "documentstxt.zip" dans le répertoire courant (vis-à-vis de votre shell).

Sachez qu'avant de décompresser une archive ZIP, vous pouvez lister son contenu, au même titre que l'on peut le faire avec les commandes "zip" et "zipinfo".

unzip -l documentstxt.zip

Nous pouvons visualiser le contenu de l'archive ZIP, avec le poids de chaque fichier, la date et l'heure, ainsi que le nom du fichier. Nous avons aussi une information intéressante : le nombre de fichiers présents dans l'archive ZIP.

Affichier contenu archive ZIP avec unzip

B. Décompresser une archive ZIP dans un répertoire spécifique

Si vous souhaitez décompresser une archive ZIP dans un répertoire spécifique de votre machine, plutôt que dans le répertoire courant, utilisez cette syntaxe :

unzip documentstxt.zip -d /chemin/vers/repertoire

Par exemple, nous pouvons décompresser l'archive dans "/tmp" :

unzip documentstxt.zip -d /tmp

C. Décompresser une archive ZIP protégée par mot de passe

Pour décompresser une archive ZIP qui est chiffrée et protéger par un mot de passe, vous avez plusieurs options :

  • Utiliser unzip sans option spécifique, et il faudra saisir le mot de passe de l'archive ZIP de façon interactive.
  • Utiliser unzip avec l'option "-P" pour spécifier le mot de passe directement dans la console

Au cas où l'archive ZIP "documents.zip" est protégée par le mot de passe "Azerty123", il conviendra d'utiliser cette commande :

unzip -P Azerty123 documents.zip

Décompresser une archive zip protégée par mot de passe :

D. Extraire un fichier spécifique d'une archive ZIP

Si vous souhaitez extraire un fichier d'une archive ZIP sans décompresser toute l'archive ZIP, sachez que c'est possible ! Dans ce cas, il n'y a pas d'option spécifique à utiliser. Vous devez simplement préciser le nom du fichier à extraire (ceci ne le retire pas de l'archive ZIP !).

Par exemple, pour extraire le fichier "document.docx" de l'archive ZIP "documentstxt.zip", voici la commande à exécuter :

unzip documentstxt.zip document.docx

La commande retournera la phrase "extracting: document.docx".

E. Décompresser en masse des archives ZIP

Si vous souhaitez décompresser un ensemble d'archives ZIP en une fois, sachez que c'est possible grâce à l'utilisation du caractère "*" (wildcard). Utilisez seulement la commande suivante :

unzip "*.zip"

Ceci permet de gagner du temps si vous avez beaucoup d'archives ZIP à décompresser. Sinon, vous pouvez spécifier leurs noms de cette façon :

unzip archive1.zip archive2.zip archive3.zip

Vous pouvez aussi coupler cette commande avec l'option "-d" pour spécifier un répertoire de destination.

V. Conclusion

Voilà, nous venons de voir comment compresser et décompresser des archives ZIP sous Linux ! J'espère que ces exemples vous aideront à comprendre comment utiliser les commandes "zip" et "unzip" de manière plus efficace sous Linux !

The post Compresser et décompresser des fichiers ZIP sous Linux, avec les commandes zip et unzip first appeared on IT-Connect.

Linux : comment utiliser grep pour rechercher un mot dans plusieurs fichiers et dossiers ?

25 janvier 2024 à 18:19

I. Présentation

Dans ce tutoriel, nous allons utiliser la commande "grep" sous Linux pour rechercher la présence d'un mot dans plusieurs fichiers et dossiers, sur une machine Linux (Debian 12, pour cet exemple).

La commande "grep" fait partie des commandes indispensables lorsqu'il est question d'administration de machines Linux. D'ailleurs, vous avez peut-être déjà utilisé la commande grep pour rechercher une chaine de caractère dans un fichier. Cette fois-ci, nous irons plus loin puisque nous allons effectuer une recherche dans plusieurs fichiers ou dossiers.

Les cas d'utilisation sont nombreux :

  • Rechercher les occurrences d'une adresse IP dans des fichiers
  • Rechercher les occurrences d'un nom d'utilisateur
  • Rechercher les occurrences d'une fonction dans un ensemble de scripts
  • Etc...

Sur un environnement Windows, vous pouvez utiliser le cmdlet PowerShell "Select-String" pour effectuer des recherches similaires :

Version d'origine de l'article : 15 août 2012

II. La commande grep et la récursivité

Pour que la commande grep recherche dans les fichiers et dossiers de façon récursive, nous devons utiliser l'option "-r". La syntaxe de la commande sera la suivante :

grep -r "mot à rechercher" /chemin/vers/le/dossier

Par exemple, si nous voulons rechercher tous les fichiers contenants le mot "it-connect" sur tout le système (la racine "/" est notre point de départ), nous allons utiliser cette commande :

grep -r "it-connect" ./

Nous pouvons également rechercher à partir d'un autre répertoire. Par exemple, si l'on souhaite rechercher dans tous les fichiers et dossiers sous "/home", nous utiliserons cette commande :

grep -r "it-connect" /home/

Voici le résultat obtenu :

Grep rechercher mot dans plusieurs fichiers dossiers

Cela signifie qu'après avoir analysé le contenu de tous les fichiers présents dans "/home/" et dans tous les sous-dossiers présents sous cette racine, grep a trouvé uniquement un seul résultat. Il s'agit du fichier "/home/flo/document.txt" et grep a identifié la chaine "www.it-connect.fr" à l'intérieur.

III. Quelques options supplémentaires

A. Grep : ne pas tenir compte de la casse

Pour étendre légèrement votre recherche, vous pouvez utiliser l'option "-i" au lancement de votre commande pour rendre grep insensible à la casse. Sinon, sans cette option, la commande est sensible à la casse, ce qui signifie qu'elle fait la distinction entre les minuscules et les majuscules, ce qui peut influencer le résultat de la recherche (c'est un mode plus strict).

grep -r -i "it-connect" /home/
# ou
grep -ri "it-connect" /home/

Cela donnera le résultat suivant:

Nous pouvons voir que la commande retourne un résultat supplémentaire, dans une page HTML où grep a pu identifier la chaine "IT-Connect".

B. Grep : afficher seulement les noms de fichiers

Vous pouvez simplifier le résultat de votre recherche en y ajoutant l'option "-l". Ainsi, seuls les noms des fichiers apparaitront. Sans cette option, et comme nous l'avons vu précédemment, vous aurez le nom du fichier ainsi que le contenu de la ligne contenant le mot recherché, ce qui peut rendre le résultat de la recherche peu lisible s'il y a beaucoup de résultats.

grep -r -i -l "it-connect" /home/
# ou
grep -ril "it-connect" /home/

Cela donnera le résultat suivant :

C: Grep : afficher les numéros de ligne

Nous pouvons afficher le numéro de ligne où une chaîne a été trouvée en utilisant l'option "-n" avec la commande grep. Cette option ne peut pas être utilisée conjointement avec l'option "-l".

grep -r -i -n "it-connect" /home/
# ou 
grep -rin "it-connect" /home/

Ainsi, nous pouvons que pour le premier résultat, la chaine a été identifiée sur la ligne n°1, tandis que pour le second résultat, la chaine a été identifié sur la ligne n°3.

grep avec numero de ligne

Une fois de plus, nous pouvons constater que grep contient beaucoup d'options d'exécution, ce qui en fait un outil très puissant !

IV. Conclusion

Grâce à cette commande facile à utiliser, nous pouvons effectuer une recherche rapidement sur un système Linux. Ceci peut permettre de gagner un temps précieux...!

The post Linux : comment utiliser grep pour rechercher un mot dans plusieurs fichiers et dossiers ? first appeared on IT-Connect.

❌
❌