Aller au contenu

Apprendre les commandes Linux de base

Mise à jour :

La maîtrise des commandes linux est essentielle pour quiconque souhaite exploiter ou administrer efficacement des serveurs Linux. Que vous soyez étudiant, développeur, administrateur système, ou simplement passionné de technologie, comprendre comment utiliser ces commandes enrichira vos compétences Linux.

A une époque pas si lointaine Linux se distinguait de Windows par la présence d’une interface en ligne de commande (CLI) pouvant effectuer des opérations complexes, automatiser des tâches sans faire appel à une interface graphique. Apprendre à utiliser la ligne de commandes Linux est donc crucial pour maximiser l’efficacité et la productivité dans un environnement Linux.

Pour chacune des commandes Linux de base, je fournirai des conseils pratiques, des astuces et des exemples concrets pour vous aider à appliquer ces nouvelles connaissances.

Conseils d’apprentissage

Pour bien apprendre, je vous conseille d’avoir un serveur Linux à disposition pour tester ces commandes. Le mieux est d’en virtualiser une sur votre poste de travail avec un outil comme Vagrant.

Qu’est-ce qu’un script shell ?

Les scripts shells sont des programmes écrits dans le langage propre au shell qui sont essentiellement utilisés pour automatiser des tâches répétitives. Les scripts shell sont écrits dans des fichiers textes et peuvent être exécutés. Mais savez vous ce qu’est un shell Linux ? Non alors lisez ce guide.

Qu’est-ce qu’une commande linux ?

Pour rappel, une commande Linux est un programme qui s’exécute en ligne de commande. Une ligne de commande est une interface qui traite des lignes de texte en instructions pour votre ordinateur.

Les commandes linux peuvent posséder une ou plusieurs options. Les options peuvent débuter par un ou deux tirets. Par exemple l’option -h ou --help dans la plupart des commandes, affiche son aide en ligne.

Terminal window
ls --help
Utilisation : ls [OPTION]... [FICHIER]...
Afficher des renseignements sur les FICHIERs (du répertoire actuel par défaut).
Trier les entrées alphabétiquement si aucune des options -cftuvSUX ou --sort
ne sont utilisées.
Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
-a, --all ne pas ignorer les entrées débutant par .
-A, --almost-all ne pas inclure . ou .. dans la liste
--author avec -l, afficher l'auteur de chaque fichier
-b, --escape afficher les caractères non graphiques avec des

Un argument, appelé aussi paramètre, est l’entrée que nous donnons à une commande pour qu’elle puisse s’exécuter. De plus souvent, il s’agit d’un répertoire, un fichier.

Obtenir de l’aide sur une commande

Avec l’option -h out —help

Nous l’avons vu plus haut, le premier moyen pour obtenir de l’aide sur une commande linux est d’utiliser l’option -h ou --help :

Terminal window
ls --help
Utilisation : ls [OPTION]... [FICHIER]...
Afficher des renseignements sur les FICHIERs (du répertoire actuel par défaut).
Trier les entrées alphabétiquement si aucune des options -cftuvSUX ou --sort
ne sont utilisées.
Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
-a, --all ne pas ignorer les entrées débutant par .
-A, --almost-all ne pas inclure . ou .. dans la liste
--author avec -l, afficher l'auteur de chaque fichier
-b, --escape afficher les caractères non graphiques avec des
protections selon le style C
--block-size=TAILLE avec -l, dimensionner les tailles selon TAILLE avant
de les afficher. Par exemple, « --block-size=M ».
Consultez le format de TAILLE ci-dessous...

Avec la commande man

Le second moyen est d’utiliser la commande man suivi du nom de la commande :

Terminal window
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
with -l, print the author of each file
-b, --escape
print C-style escapes for nongraphic characters
--block-size=SIZE
with -l, scale sizes by SIZE when printing them; e.g., '--block-size=M'; see SIZE format below ...

Pour avancer dans les pages, il suffit d’appuyer sur la touche espace.

Il existe un outil du nom de tldr qui affiche des versions raccourcies des pages man.

Avec l’outil tldr

Le projet tldr-pages est une collection de pages d’aide simplifiées pour la plupart des outils de ligne de commande.

L’outil tldr peut être installé avec pip. Par exemple pour l’installer sur une distribution de la famille debian :

Terminal window
sudo apt install python3-pip
pipx install tldr --user
installed package tldr 3.2.0, installed using Python 3.10.12
These apps are now globally available
- tldr
done! 🌟

Un exemple avec la commande ls :

Terminal window
tldr ls
ls
Liste le contenu d'un répertoire.
Plus d'informations : https://www.gnu.org/software/coreutils/ls.
- Liste les fichiers, un par ligne :
ls -1
- Liste tous les fichiers, ainsi que les fichiers cachés :
ls -a
- Liste tous les fichiers, avec les noms de répertoires suivis d'un `/` :
ls -F
...

Comment trouver l’explication d’une commande

Si vous retrouvez des commandes dans des forums, des sites comme Stack OVerflow, et que vous ne comprenez pas la commande qui est indiquée alors le site explainshell est fait pour vous :

Exemple d'explication de commandes linux

Les commandes de base Linux

ls (list)

La commande ls liste tous les fichiers et dossiers dans le répertoire actuel. Elle peut être combinée avec diverses options pour afficher des informations supplémentaires.

Terminal window
ls [OPTION]... [FILE]...

Les principales options à connaitre :

  • -l : Utilise le format de sortie long, c’est-à-dire affichant les permissions, le propriétaire et groupe, la taille, la date en plus du nom.
  • -1 : Affiche les fichiers sur une colonne.
  • -a : Affiche les fichiers cachés dont ceux commençant par le caractère ..
  • -h : Affiche la taille dans un format lisible par un humain.
  • -r : Trie la sortie dans l’ordre inverse.
  • -t : Trie la sortie par date et non par ordre alphabétique.
  • -c : Trie sur la date de changement de statuts des fichiers.

Il est possible de combiner certaines options, pas celles définissant le format de sortie. Un exemple :

Terminal window
ls -alrth
total 24K
drwxrwxr-x 31 bob bob 4,0K oct. 26 14:47 ..
-rw-rw-r-- 1 bob bob 540 oct. 26 15:10 Vagrantfile
drwxrwxr-x 6 bob bob 4,0K oct. 26 15:10 .vagrant
-rw-rw-r-- 1 bob bob 54 oct. 26 15:51 Dockerfile
drwxrwxr-x 3 bob bob 4,0K oct. 26 15:51 .
-rw-rw-r-- 1 bob bob 358 oct. 27 06:18 provision.yml

Cette commande affiche les fichiers, dont les fichiers cachés, sous le format long. Ils sont triés par date dans l’ordre inverse. La taille est affichée dans un format lisible par l’humain.

pwd (print working directory)

La commande pwd affiche le répertoire de travail actuel, ce qui est essentiel pour comprendre le contexte lors de la navigation dans le terminal.

Terminal window
pwd [OPTION]...

Exemple :

Terminal window
pwd
/home/bob/Projets/perso/my-website

cd (change directory)

La commande cd permet de naviguer entre les différents répertoires de votre système. Elle est souvent utilisée en conjonction avec des chemins de répertoires spécifiques.

Terminal window
cd [-L|-P] [directory]
# ou
cd -

La principale option à connaitre est - qui permet de retourner dans le répertoire précédent :

Terminal window
cd -
~/Projets/perso/my-website

En retour, il affiche le répertoire de destination.

Manipulation de fichiers et de dossiers

cp (copy)

La commande linux cp copie des fichiers ou des dossiers d’un emplacement à un autre.

Terminal window
cp [OPTION]... [-T] SOURCE DEST
# ou
cp [OPTION]... SOURCE... DIRECTORY
# ou
cp [OPTION]... -t DIRECTORY SOURCE...

Les principales options à connaître :

  • -p : Copie avec préservation des droits, des propriétés (groupe et utilisateur) et de l’horodatage.
  • -r : Copie récursive, c’est-à-dire avec tous les fichiers présents dans un répertoire.
Terminal window
cp -p tsconfig.json tsconfig.json.old
ls -al ts*
-rw-rw-r-- 1 bob bob 190 sept. 23 19:12 tsconfig.json
-rw-rw-r-- 1 bob bob 190 sept. 23 19:12 tsconfig.json.old

mv (move)

La commande linux mv est utilisée pour déplacer ou renommer des fichiers ou des dossiers.

Terminal window
mv [OPTION]... [-T] SOURCE DEST
# ou
mv [OPTION]... SOURCE... DIRECTORY
# ou
mv [OPTION]... -t DIRECTORY SOURCE...

Les principales options à connaître :

  • -i : Demande une confirmation avec d’effectuer l’opération
  • -f : Ne demande aucune confirmation avec d’effectuer l’opération
  • -n : Ne surcharge pas les fichiers existants
Terminal window
mv -v /tmp/test /tmp/test2
renommé '/tmp/test' -> '/tmp/test2'

Ici le dossier /tmp/test a été renommé en /tmp/test2.

rm (remove)

La commande rm permet de supprimer des fichiers ou des dossiers de manière irrémédiable, donc à utiliser avec prudence.

Terminal window
rm [OPTION]... [FILE]...

Les principales options à connaître :

  • -i : affiche un prompt de confirmation avant chaque effacement.
  • -f : n’affiche aucun prompt.
  • -r : destruction récursive, autrement dit destruction de tous les répertoires contenus dans le dossier.
Terminal window
rm -rf /tmp/test

Ici le dossier /tmp/test a été détruit sans aucun prompt de confirmation.

mkdir (make directory)

La commande mkdir permet de créer de nouveaux répertoires.

Terminal window
mkdir [OPTION]... DIRECTORY...

Les principales options à connaître :

  • -p : Crée des répertoires récursivement (utile pour créer des répertoires imbriqués)
Terminal window
mkdir -p 700 $HOME/Projets/DevOps /tmp/test

Création de deux arborescences de répertoires si les répertoires parents n’existent pas.

rmdir (remove directory)

La commande rmdir supprime un dossier vide. Très peu utilisé, la plupart des admin sys préférant la commande rm -r.

chmod (change mode)

La commande linux chmod modifie les permissions d’un fichier ou d’un répertoire.

Terminal window
chmod [OPTION]... MODE[,MODE]... FILE...
# ou
chmod [OPTION]... OCTAL-MODE FILE...
# ou
chmod [OPTION]... --reference=RFILE FILE...

Les principales options à connaître :

  • -R : modification récursive, autrement dit modification des droits de tous les répertoires et fichiers contenus dans le dossier.
  • -f : n’affiche aucun prompt.
Terminal window
chmod 755 ~/bin/container-structure-test

Donne les droits d’exécution sur le fichier container-structure-test présent dans le répertoire de l’utilisateur exécutant cette commande.

chown (change owner)

La commande chown permet de modifier le propriétaire d’un fichier ou d’un dossier s’il a les permissions d’accès en écriture. Sinon il faudra demander soit à son propriétaire actuel, soit le faire avec une élévation de privilèges.

Terminal window
chown [OPTION]... [OWNER][:[GROUP]] FILE...
# ou
chown [OPTION]... --reference=RFILE FILE...

Les principales options à connaître :

  • -R : modification récursive, autrement dit modification les propriétaires de tous les répertoires et fichiers contenus dans le dossier.
  • -f : n’affiche aucun prompt.
Terminal window
chown $USER ~/bin/container-structure-test

Change le propriétaire sur le fichier container-structure-test présent dans le répertoire de l’utilisateur exécutant cette commande.

chgrp (change group)

La commande chgrp change le groupe associé à un fichier ou un dossier.

Terminal window
chgrp [OPTION]... GROUP FILE...
# ou
chgrp [OPTION]... --reference=RFILE FILE...

Les principales options à connaître :

  • -R : modification récursive, autrement dit modification du groupe de tous les répertoires et fichiers contenus dans le dossier.
  • -f : n’affiche aucun prompt.
Terminal window
chown un-groupe ~/bin/container-structure-test

Cette commande change le groupe sur le fichier container-structure-test présent dans le répertoire de l’utilisateur exécutant cette commande.

Visualisation et édition de fichiers

cat

La commande cat affiche le contenu d’un fichier dans le terminal sans pagination.

Terminal window
cat [OPTION]... [FILE]...

Les principales options à connaître :

  • -n : Affiche les numéros de ligne
  • -v : Affiche les caractères non imprimable (^M) utile pour voir si un fichier est au format DOS.
Terminal window
cat -vn /tmp/test.sh
1 #!/bin/bash
2 additionner() {
3 local resultat=$(( $1 + $2 ))
4 return $resultat
5 }
6
7
8 additionner 5 3
9 resultat=$?
10 echo "La somme est : $resultat"
11

less

La commande linux less est utilisée pour afficher le contenu d’un fichier texte ou la sortie d’une commande, en permettant de naviguer dans le texte de manière interactive. less est une amélioration de la commande more, offrant plus de fonctionnalités et une meilleure expérience utilisateur.

Une fois que vous avez ouvert un fichier avec less, vous pouvez naviguer dans le texte de différentes manières :

  • Utilisez les touches fléchées [haut] et [bas]s pour faire défiler le texte ligne par ligne.
  • Utilisez la barre [espace] pour faire défiler d’une page en avant.
  • Utilisez la touche [b] pour faire défiler d’une page en arrière.
  • Utilisez la touche [q] pour quitter et revenir au shell.

Pour tester less utiliser la commande man qui utilise less comme paginateur.

Terminal window
man less
LESS(1) General Commands Manual LESS(1)
NAME
less - opposite of more
SYNOPSIS
less -?
less --help
less -V
less --version
less [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]
[-b space] [-h lines] [-j line] [-k keyfile]
[-{oO} logfile] [-p pattern] [-P prompt] [-t tag]
[-T tagsfile] [-x tab,...] [-y lines] [-[z] lines]
[-# shift] [+[+]cmd] [--] [filename]...
(See the OPTIONS section for alternate option syntax with long option names.)
DESCRIPTION
Less is a program similar to more(1), but it has many more features. Less does not have to read the entire input file before starting, so with large input files it starts up faster
than text editors like vi(1). Less uses termcap (or terminfo on some systems), so it can run on a variety of terminals. There is even limited support for hardcopy terminals. (On
a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.)
Commands are based on both more and vi. Commands may be preceded by a decimal number, called N in the descriptions below. The number is used by some commands, as indicated.
COMMANDS
In the following descriptions, ^X means control-X. ESC stands for the ESCAPE key; for example ESC-v means the two character sequence "ESCAPE", then "v".
h or H Help: display a summary of these commands. If you forget all the other commands, remember this one.
SPACE or ^V or f or ^F
Scroll forward N lines, default one window (see option -z below). If N is more than the screen size, only the final screenful is displayed. Warning: some systems use ^V as
Manual page less(1) line 1 (press h for help or q to quit)
Les fonctionnalités de less

less permet de rechercher un terme spécifique dans le texte :

  • Appuyez sur la touche [/] suivi du terme que vous souhaitez rechercher appuyez sur [Entrée]. less vous amènera à la première occurrence du terme trouvé et vous pourrez naviguer à travers les occurrences suivantes en appuyant sur [n] pour suivant ou [N] pour précédent.

less possède de nombreuses autres fonctionnalités utiles, telles que la possibilité de marquer des lignes, de copier du texte, de sauter à une ligne spécifique, etc. Vous pouvez obtenir une liste complète des commandes en appuyant sur la touche h pour obtenir de l’aide.

head et tail

Les commandes head et tail sont utilisées pour afficher les premières (têtes) ou les dernières (queues) lignes d’un fichier texte. Par défaut, head affiche les 10 premières lignes d’un fichier, tandis que tail affiche les 10 dernières lignes. Vous pouvez spécifier le nombre de lignes à afficher en utilisant l’option -n.

Exemples :

Terminal window
head -n 20 fichier.txt # Affiche les 20 premières lignes du fichier
tail -n 5 fichier.log # Affiche les 5 dernières lignes du fichier de journal

Ces commandes sont couramment utilisées pour visualiser les en-têtes ou les résumés de fichiers volumineux comme les fichiers de logs de services.

Les éditeurs de texte

nano et vi sont deux éditeurs de texte qui permettent de modifier des fichiers directement depuis le terminal. Ils offrent des fonctionnalités d’édition de texte, mais ils ont des interfaces et des fonctionnalités différentes. Voici une description de ces deux éditeurs, ainsi que leurs principales différences :

nano

nano est un éditeur de texte simple et convivial pour les débutants. Il est souvent recommandé pour les utilisateurs novices en raison de sa simplicité d’utilisation. L’interface de nano est relativement intuitive et affiche des raccourcis clavier courants en bas de l’écran pour aider les utilisateurs à naviguer et à effectuer des opérations. Pour ouvrir un fichier avec nano, vous pouvez simplement taper nano suivi du nom du fichier. Les principales commandes de nano sont généralement affichées à l’écran, ce qui facilite leur utilisation. Par exemple, pour enregistrer un fichier, vous appuyez sur [Ctrl] + [O], puis vous appuyez sur Entrée et pour quitter, vous appuyez sur [Ctrl] + [X]. nano est un choix solide pour les tâches d’édition de texte simples et rapides, mais il peut manquer certaines des fonctionnalités plus avancées offertes par vi.

editeur de texte nano

vi

vi(ou vim) est un éditeur de texte très puissant et extensible. Il est extrêmement populaire parmi les utilisateurs expérimentés en raison de ses nombreuses fonctionnalités et de sa polyvalence. L’interface de vi peut sembler déroutante pour les débutants, car elle utilise un mode de fonctionnement avec des modes, y compris le mode commande et le mode édition. Cela signifie que pour effectuer des opérations, vous devez basculer entre ces modes. Pour ouvrir un fichier avec vi vous pouvez taper vi suivi du nom du fichier. vi offre une large gamme de commandes pour effectuer des opérations d’édition, de navigation et de recherche. Par exemple, pour insérer du texte, vous devez d’abord basculer en mode insertion en appuyant sur [i], puis vous pouvez taper votre texte. Pour enregistrer un fichier, vous devez basculer en mode commande en appuyant sur Esc, puis vous pouvez saisir :w et appuyer sur Entrée. vi est extrêmement puissant et flexible, mais il peut nécessiter une certaine période d’apprentissage pour maîtriser ses fonctionnalités.

Je vous conseille de visionner la video de xavki.

Recherche de fichiers et de dossiers

find

La commande find est un utilitaire puissant en ligne de commande sur les systèmes Unix et Linux qui permet de rechercher des fichiers et des répertoires en fonction de divers critères, tels que le nom, la taille, la date de modification, les permissions, etc. find est extrêmement flexible et utile pour localiser des fichiers dans le système de fichiers.

Terminal window
find chemin [options] [expression]
  • chemin : Le chemin de départ à partir duquel vous souhaitez commencer la recherche.
  • options : Des options facultatives pour personnaliser la recherche.
  • expression : Des critères de recherche spécifiques, tels que le nom du fichier, la taille, la date, etc.

Voici quelques exemples d’utilisation courants de la commande find :

1. Rechercher un fichier par nom : Pour rechercher un fichier spécifique par son nom, utilisez l’option -name suivie du nom du fichier entre guillemets. Par exemple, pour trouver tous les fichiers nommés mon_fichier.txt dans le répertoire courant et ses sous-répertoires, vous pouvez utiliser :

Terminal window
find . -name "mon_fichier.txt"

2. Rechercher des fichiers par extension : Vous pouvez rechercher des fichiers par extension en utilisant -name avec un modèle d’extension. Par exemple, pour trouver tous les fichiers avec l’extension .log dans le répertoire courant et ses sous-répertoires :

Terminal window
find . -name "*.log"

3. Rechercher des fichiers par taille : Vous pouvez rechercher des fichiers en fonction de leur taille en utilisant l’option -size. Par exemple, pour trouver tous les fichiers de plus de 1 Mo dans le répertoire courant et ses sous-répertoires :

Terminal window
find . -size +1M

4. Rechercher des fichiers par date de modification : Vous pouvez rechercher des fichiers en fonction de leur date de modification en utilisant l’option -mtime. Par exemple, pour trouver tous les fichiers modifiés il y a moins de 7 jours :

Terminal window
find . -mtime -7

5. Rechercher des répertoires vides : Pour trouver tous les répertoires vides dans un chemin donné, vous pouvez utiliser l’option -type dd signifie répertoire. Par exemple, pour rechercher des répertoires vides dans le répertoire courant :

Terminal window
find . -type d -empty

6. Exécuter une action sur les fichiers trouvés : Vous pouvez exécuter une action (comme supprimer, déplacer, renommer, etc.) sur les fichiers ou répertoires trouvés en utilisant l’option -exec. Par exemple, pour supprimer tous les fichiers avec l’extension .tmp dans le répertoire courant et ses sous-répertoires :

Terminal window
find . -name "*.tmp" -exec rm {} \;

L’argument {} est remplacé par chaque fichier trouvé et \; indique la fin de la commande à exécuter.

Ces exemples illustrent quelques-unes des nombreuses possibilités offertes par la commande find. Elle est extrêmement polyvalente et peut être utilisée pour répondre à une grande variété de besoins de recherche de fichiers et de répertoires dans un système de fichiers Unix ou Linux.

locate

La commande locate permet de rechercher rapidement des fichiers et des répertoires dans tout le système de fichiers en utilisant une base de données d’index pré-générée. Contrairement à la commande find, qui effectue une recherche en temps réel, locate interroge la base de données d’index, ce qui rend les recherches beaucoup plus rapides. Cependant, cela signifie que locate n’est pas en temps réel et ne reflète pas immédiatement les changements dans le système de fichiers.

La base de données locate est mise à jour périodiquement par un processus système (généralement via une tâche planifiée). Si vous souhaitez mettre à jour la base de données manuellement pour refléter les modifications récentes du système de fichiers, vous pouvez utiliser la commande updatedb en tant qu’utilisateur root :

Terminal window
sudo updatedb

Voici comment utiliser la commande locate :

Syntaxe de base de la commande locate :

Terminal window
locate [options] motif
  • motif : Le motif de recherche que vous souhaitez utiliser pour trouver des fichiers et des répertoires.
  • options : Des options facultatives pour personnaliser la recherche.

Exemples d’utilisation courante de la commande locate :

1. Rechercher un fichier par nom : Pour rechercher un fichier spécifique par son nom, utilisez simplement locate suivi du nom du fichier ou d’un motif. Par exemple, pour trouver tous les fichiers ayant example dans leur nom :

Terminal window
locate example

2. Rechercher un fichier par expression régulière : Vous pouvez également utiliser des expressions régulières avec locate pour des recherches plus avancées. Par exemple, pour trouver tous les fichiers dont le nom commence par file et se termine par un nombre de 1 à 3 chiffres :

Terminal window
locate '^file[0-9]{1,3}$'

3. Limiter la recherche à un répertoire spécifique : Par défaut, locate recherche dans tout le système de fichiers. Si vous souhaitez limiter la recherche à un répertoire spécifique, vous pouvez spécifier le chemin en tant qu’argument. Par exemple, pour rechercher tous les fichiers avec le nom example dans le répertoire /home/utilisateur :

Terminal window
locate /home/utilisateur/example

4. Utiliser des options pour personnaliser la recherche : locate offre différentes options pour personnaliser la recherche, telles que l’ignorance de la casse (-i), la recherche récursive (-r), l’affichage du nombre de résultats (-c), etc.

grep

La commande grep permet de rechercher des lignes de texte dans des fichiers ou des flux de données en utilisant des expressions régulières ou des motifs de recherche. grep est un outil extrêmement puissant pour extraire des informations spécifiques à partir de fichiers texte ou de la sortie d’autres commandes.

Voici la syntaxe de base de la commande grep :

Terminal window
grep [options] motif [fichiers...]
  • motif : Le motif de recherche que vous souhaitez trouver dans le texte.
  • fichiers : Une liste facultative de fichiers dans lesquels vous souhaitez effectuer la recherche. Si vous n’indiquez pas de fichiers, grep lira l’entrée standard (généralement le texte fourni via la ligne de commande ou une autre commande) pour effectuer la recherche.

Voici quelques exemples d’utilisation courante de la commande grep :

1. Rechercher un motif dans un fichier : Pour rechercher un motif spécifique dans un fichier, utilisez simplement grep suivi du motif et du nom du fichier. Par exemple, pour trouver toutes les occurrences du mot exemple dans le fichier fichier.txt :

Terminal window
grep "exemple" fichier.txt

2. Rechercher un motif dans plusieurs fichiers : Vous pouvez rechercher un motif dans plusieurs fichiers en spécifiant une liste de fichiers après le motif. Par exemple, pour trouver toutes les occurrences du mot erreur dans les fichiers fichier1.txt, fichier2.txt et fichier3.txt :

Terminal window
grep "erreur" fichier1.txt fichier2.txt fichier3.txt

3. Utilisation d’expressions régulières : grep prend en charge les expression régulière pour des recherches plus avancées. Par exemple, pour trouver toutes les lignes commençant par Erreur (en ignorant la casse) dans un fichier :

Terminal window
grep -i "^Erreur" fichier.txt

4. Recherche récursive dans des répertoires : Vous pouvez effectuer une recherche récursive dans un répertoire en utilisant l’option -r (ou -R). Par exemple, pour rechercher le motif recherche dans tous les fichiers de tous les sous-répertoires du répertoire courant :

Terminal window
grep -r "recherche" .

5. Affichage du numéro de ligne : grep peut afficher le numéro de ligne de chaque correspondance à l’aide de l’option -n. Par exemple, pour afficher toutes les occurrences du mot important dans un fichier avec les numéros de ligne correspondants :

Terminal window
grep -n "important" fichier.txt

6. Utilisation avec des pipelines : grep est souvent utilisé avec des pipelines pour traiter la sortie d’autres commandes. Par exemple, pour rechercher tous les fichiers contenant le mot erreur dans un répertoire donné et les afficher :

Terminal window
find /chemin/vers/repertoire -type f -exec grep -l "erreur" {} \;

Enchainer des commandes avec les pipe

Un pipe (tube ou tuyau en anglais) est un outil qui permet de connecter la sortie standard d’une commande avec l’entrée standard d’une autre commande. Cela permet de chaîner plusieurs commandes, le résultat de l’une formant les données d’entrée de la suivante.

Pour créer un pipe entre 2 commandes, il suffit d’écrire les deux commandes séparées pour un caractère | (que l’on appelle le pipe).

Exemple :

Terminal window
ls -R $HOME | less

L’enchainement de ces deux commandes liste le contenu de votre répertoire utilisateur et envoie la sortie vers la commande less pour en paginer le résultat. Vous verrez d’autres exemples dans les commandes qui vont suivre.

Contrôle de taches avec les commandes fg, bg et jobs

Un tache est un processus géré par le shell. Chaque tache se voit attribuer un ID de tâche. Une tache étant un processus, chaque tache est associée à un PID. Il existe trois types d’états de job :

  • Premier plan : lorsque vous entrez une commande dans une fenêtre de terminal, la commande tourne jusqu’à ce qu’elle se termine. C’est un travail au premier plan.
  • Arrière-plan : Lorsque vous saisissez le caractère & à la fin d’une ligne de commande.. L’invite du shell s’affiche immédiatement après que vous ayez appuyé sur [Retour]. Ceci est un exemple de travail en arrière-plan.
  • Arrêté : Si vous appuyez sur [Ctrl] + [Z] pour une tâche qui est au premier plan ou si vous entrez la commande d’arrêt pour une tâche en arrière-plan, la tâche s’arrête. Ce travail est appelé travail arrêté.

La commande jobs

La commande linux jobs retourne la liste des id de jobs et leur état :

Terminal window
jobs
[1] + suspended sleep 5000

La commande fg

La commande fg %id passe une tache au premier plan.

La commande bg

La commande bg %id passe une tache en arrière-plan.

Démonstration

Lançons une commande simplement la commande sleep 5000 et appuyez sur les touches [Ctrl] + [Z]. Le shell nous retourne un ID :

Terminal window
sleep 5000
^Z
[1] + 865006 suspended sleep 5000

On récupère l’id du job ainsi que son PID. Pour lancer directement une commande en arrière-plan, on aurait dû le faire au moyen de la commande sleep 5000 &.

Si on tape la commande jobs :

Terminal window
jobs
[1] + suspended sleep 5000

Shell nous retourne la tache 1 qui est arrêtée. Passons-la en arrière-plan :

Terminal window
bg %1
[1] + 865006 continued sleep 5000

La tâche passe en arrière-plan. Repassons-la au premier plan :

Terminal window
[1] + 865006 running sleep 5000

Le shell attend désormais la fin de la commande pour nous rendre la main.

Plus loin

Nous avons vu dans ce chapitre, ce que nous allons appeler des commandes basiques plus utiliser dans des tâches dites d’exploitation. Dans le chapitre suivant, nous allons voir des commandes permettant d’administrer des serveurs Linux.