Introduction
Bienvenue dans ce laboratoire pratique sur l'exécution de commandes Linux et le traitement de texte ! Si vous débutez avec Linux, ne vous inquiétez pas, nous vous guiderons à chaque étape. Dans ce laboratoire, nous explorerons comment exécuter plusieurs commandes efficacement et utiliser des outils de traitement de texte puissants. À la fin de ce laboratoire, vous serez capable de combiner des commandes, d'effectuer des recherches dans du texte et de manipuler des données comme un professionnel !
Exécution séquentielle de commandes
Sous Linux, vous pouvez exécuter plusieurs commandes les unes après les autres sur une seule ligne. Cela est particulièrement utile lorsque vous souhaitez effectuer une série de tâches liées.
Commençons par un exemple simple. Nous allons afficher la date actuelle, puis lister le contenu de votre répertoire personnel :
date && ls ~
Voici ce que fait cette commande :
date: Affiche la date et l'heure actuelles.&&: Ce symbole signifie "et". Il indique à Linux d'exécuter la commande suivante uniquement si la première réussit.ls ~: Liste le contenu de votre répertoire personnel (le symbole~représente votre répertoire personnel).
Tapez cette commande dans votre terminal et appuyez sur Entrée. Vous devriez voir la date d'aujourd'hui suivie d'une liste de fichiers et de dossiers présents dans votre répertoire personnel.
Si vous ne voyez aucun fichier après la date, ne vous inquiétez pas ! Cela peut signifier que votre répertoire personnel est vide. Vous pouvez essayer ls /home/labex à la place pour vous assurer d'obtenir un résultat.
Exécution conditionnelle de commandes
Dans cette étape, nous allons explorer comment utiliser les opérateurs conditionnels pour contrôler l'exécution des commandes en fonction du succès ou de l'échec des commandes précédentes.
Tout d'abord, essayons d'exécuter une commande conditionnelle avec un programme non installé :
which cowsay && cowsay "Hello, LabEx" || echo "cowsay is not installed"
Dans cette séquence de commandes :
which cowsayvérifie si le programmecowsayest installé.&&est un opérateur logique ET qui exécute la commande suivante uniquement si la précédente réussit.cowsay "Hello, LabEx"affiche une vache en art ASCII disant "Hello, LabEx".||est un opérateur logique OU qui exécute la commande suivante uniquement si la précédente échoue.echo "cowsay is not installed"affiche un message indiquant que cowsay n'est pas installé.
Vous devriez voir le message "cowsay is not installed" car le programme cowsay n'est pas encore installé sur le système.
Maintenant, installons cowsay :
sudo apt-get update && sudo apt-get install -y cowsay
et exécutez à nouveau la même commande :
which cowsay && cowsay "Hello, LabEx" || echo "cowsay is not installed"
Cette fois, vous devriez voir une vache en art ASCII disant "Hello, LabEx".
Cet exemple démontre comment utiliser && et || pour créer des séquences de commandes conditionnelles. && signifie "exécuter si la commande précédente réussit", tandis que || signifie "exécuter si la commande précédente échoue".
Analysons ce qui s'est passé :
Avant l'installation :
which cowsaya échoué carcowsayn'était pas installé.- Comme la partie gauche de
&&a échoué,cowsay "Hello, LabEx"n'a pas été exécuté. - L'expression
which cowsay && cowsay "Hello, LabEx"ayant échoué, elle a déclenché||, doncecho "cowsay is not installed"a été exécuté.
Après l'installation :
which cowsaya réussi, donc il a exécutécowsay "Hello, LabEx".- Il n'a pas eu besoin d'exécuter la commande echo après
||.
Essayez de créer vos propres séquences de commandes conditionnelles en utilisant ces opérateurs !
Introduction aux pipelines
Les pipelines sont une fonctionnalité puissante de Linux qui vous permet de connecter la sortie d'une commande à l'entrée d'une autre. Cela se fait à l'aide du symbole | (pipe).
Commençons par un exemple simple :
ls -l /etc | less
Voici ce que cela fait :
ls -l /etc: Liste le contenu du répertoire/etcau format long.|: Envoie la sortie de la commande précédente vers la commande suivante.less: Un programme qui vous permet de faire défiler du texte.
Lorsque vous exécutez ceci, vous verrez une liste de fichiers et de répertoires. Vous pouvez utiliser les touches fléchées haut et bas pour faire défiler, et appuyer sur 'q' pour quitter.
Maintenant, essayons un pipeline plus complexe :
ls -l /etc | grep '^d' | wc -l
Cette commande compte le nombre de répertoires dans /etc. Voici comment elle fonctionne :
ls -l /etc: Liste le contenu de/etcau format long.grep '^d': Filtre les lignes commençant par 'd' (ce qui indique des répertoires).wc -l: Compte le nombre de lignes (ce qui correspond maintenant au nombre de répertoires).
Vous devriez voir un nombre s'afficher, correspondant au nombre de répertoires dans /etc.
Utilisation de cut pour extraire des champs
La commande cut est utile pour extraire des parties spécifiques de chaque ligne d'un fichier. Nous l'utiliserons pour extraire les noms d'utilisateur et les répertoires personnels du fichier /etc/passwd, qui contient des informations sur les comptes utilisateur du système.
Exécutez cette commande :
cut -d: -f1,6 /etc/passwd | head -n 5
Analysons cela :
cut: La commande pour extraire des portions de lignes.-d:: Utilise:comme délimiteur (le caractère qui sépare les champs).-f1,6: Extrait les 1er et 6e champs (nom d'utilisateur et répertoire personnel).|: Envoie la sortie vers la commande suivante.head -n 5: Affiche uniquement les 5 premières lignes de la sortie.
Vous devriez voir une sortie similaire à celle-ci :
root:/root
daemon:/usr/sbin
bin:/bin
sys:/dev
sync:/bin
Chaque ligne affiche un nom d'utilisateur et son répertoire personnel, séparés par deux-points.
Combinaison de grep avec des pipelines et des séquences de commandes
Dans cette étape, nous explorerons comment utiliser grep en combinaison avec des pipelines et des séquences de commandes pour un traitement de texte plus avancé.
Commençons par rechercher toutes les lignes contenant "PATH" dans votre fichier .zshrc et comptons-les :
grep "PATH" ~/.zshrc | wc -l
Ce pipeline utilise d'abord grep pour trouver les lignes contenant "PATH", puis envoie la sortie vers wc -l pour compter les lignes.
Maintenant, utilisons une séquence de commandes pour vérifier si "PATH" existe, puis affichons les lignes contenant "HOME" uniquement si cette première vérification réussit :
grep -q "PATH" ~/.zshrc && grep "HOME" ~/.zshrc
L'option -q permet au premier grep de s'exécuter silencieusement, il vérifie donc la correspondance sans imprimer les lignes "PATH". Si la première commande réussit, le second grep affiche les lignes contenant "HOME".
Essayons un exemple plus complexe. Nous allons rechercher les lignes contenant "bin" dans /etc/passwd, les trier et afficher les 5 premières :
grep "bin" /etc/passwd | sort | head -n 5
Ce pipeline effectue trois actions :
- Trouve les lignes contenant "bin".
- Trie ces lignes par ordre alphabétique.
- Affiche uniquement les 5 premières lignes du résultat.
Enfin, combinons tout ce que nous avons appris. Nous allons rechercher les lignes contenant "sh" dans /etc/passwd, les compter, et en fonction du résultat, nous afficherons soit les lignes, soit un message :
grep "sh" /etc/passwd | wc -l | {
read count
[ $count -gt 5 ] && grep "sh" /etc/passwd || echo "Found $count lines, not enough to display."
}
Cette commande complexe effectue les opérations suivantes :
- Recherche les lignes contenant "sh".
- Compte ces lignes.
- Si le nombre est supérieur à 5, elle affiche les lignes.
- Si le nombre est de 5 ou moins, elle affiche un message indiquant le nombre trouvé.
Note : Lors de la saisie de commandes sur plusieurs lignes dans le terminal, vous devrez peut-être appuyer sur Alt+Enter après chaque ligne (sauf la dernière) pour effectuer un retour à la ligne, ou simplement taper la commande entière sur une seule ligne.
Essayez d'exécuter ces commandes et expérimentez vos propres combinaisons !
Comptage avec wc
La commande wc (word count) est utile pour compter les lignes, les mots et les caractères dans un texte.
Commençons par compter le nombre de lignes dans /etc/passwd :
wc -l /etc/passwd
L'option -l indique à wc de compter les lignes. Vous devriez voir un nombre suivi du nom du fichier.
Maintenant, comptons le nombre de mots dans les 10 premières lignes de /etc/passwd :
head -n 10 /etc/passwd | wc -w
Ce pipeline effectue deux actions :
head -n 10 /etc/passwd: Récupère les 10 premières lignes du fichier.wc -w: Compte les mots dans ces lignes.
Vous devriez voir un nombre représentant le nombre de mots.
Tri avec sort
La commande sort est utilisée pour trier des lignes de texte. Utilisons-la pour trier le fichier /etc/passwd selon le troisième champ (ID utilisateur) :
sort -t: -k3 -n /etc/passwd | head -n 5
Voici ce que fait chaque partie :
-t:: Utilise:comme séparateur de champ.-k3: Trie en fonction du troisième champ.-n: Trie numériquement (au lieu d'alphabétiquement).| head -n 5: Affiche uniquement les 5 premières lignes de la sortie.
Vous devriez voir les cinq premières lignes de /etc/passwd, triées par ID utilisateur (le troisième champ).
Suppression des doublons avec uniq
La commande uniq est utilisée pour supprimer ou identifier les lignes en double dans un texte trié. Utilisons-la pour trouver les types de shell uniques dans /etc/passwd :
cut -d: -f7 /etc/passwd | sort | uniq
Ce pipeline effectue trois actions :
cut -d: -f7 /etc/passwd: Extrait le 7e champ (le shell) de chaque ligne.sort: Trie les lignes par ordre alphabétique.uniq: Supprime les lignes en double.
Vous devriez voir une liste des chemins de shell uniques utilisés sur le système.
Maintenant, comptons combien d'utilisateurs utilisent chaque shell :
cut -d: -f7 /etc/passwd | sort | uniq -c
L'option -c préfixe les lignes avec le nombre d'occurrences. Vous devriez voir chaque chemin de shell précédé d'un nombre indiquant combien d'utilisateurs utilisent ce shell.
Résumé
Félicitations ! Vous avez terminé ce laboratoire sur l'exécution de commandes Linux et le traitement de texte. Récapitulons ce que vous avez appris :
- Vous pouvez exécuter des commandes séquentiellement en utilisant
&&et conditionnellement en utilisant||. - Les pipelines (
|) vous permettent de connecter plusieurs commandes, en passant la sortie de l'une comme entrée de la suivante. cutest idéal pour extraire des parties spécifiques de lignes dans un fichier.grepvous aide à rechercher des motifs spécifiques dans du texte.wcpeut compter les lignes, les mots et les caractères dans un texte.sortorganise les lignes de texte dans un ordre spécifique.uniqsupprime les doublons d'un texte trié et peut compter les occurrences.
Ces outils sont fondamentaux pour le traitement de texte sous Linux. Au fur et à mesure de votre progression avec Linux, vous trouverez d'innombrables façons de combiner ces commandes pour résoudre des tâches complexes de traitement de texte. N'ayez pas peur d'expérimenter et d'essayer de nouvelles combinaisons !
N'oubliez pas que c'est en forgeant qu'on devient forgeron. Essayez d'utiliser ces commandes avec différents fichiers et options pour approfondir votre compréhension. Si vous oubliez comment fonctionne une commande, vous pouvez toujours utiliser la commande man (par exemple, man grep) pour consulter sa page de manuel.
Continuez à explorer et bon apprentissage de Linux !



