Aller au contenu

Les commandes Linux essentielles

Mise à jour :

Dans la continuité de la présentation des commandes Linux, ce guide approfondit vos connaissances en vous proposant de nouvelles commandes essentielles et des astuces pratiques. Après avoir découvert comment obtenir de l’aide, enchaîner des commandes avec des pipes ou explorer les scripts shell, vous êtes prêt à maîtriser les outils qui vous permettront de naviguer, manipuler et gérer efficacement vos systèmes Linux au quotidien.

Avant de plonger dans les détails des commandes Linux, il est essentiel de comprendre comment les utiliser efficacement dès le départ. Ce guide vous accompagne pas à pas, en commençant par les bases : la navigation dans le système de fichiers, la manipulation des fichiers et répertoires, puis la gestion des permissions. Vous apprendrez également à visualiser rapidement le contenu des fichiers et à utiliser des outils performants pour rechercher des fichiers ou des informations précises dans votre système. Chaque chapitre vous apportera des exemples concrets, des options utiles et des mises en garde pour éviter les erreurs courantes.

Allez, c’est parti !

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 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.

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.

J’ai ecrit un guide dédié à la commande find pour vous aider à mieux comprendre son fonctionnement et ses options. Vous pouvez le trouver ici.

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" {} \;

Pour plus d’informations sur les options et les fonctionnalités de cette commande, vous pouvez consulter mon guide dédié à la commande grep ici.

Exercices pratiques : mettre en application vos connaissances

Vous avez parcouru les principales commandes Linux permettant de naviguer dans les répertoires, de manipuler des fichiers et d’ajuster les permissions. Pour progresser efficacement, rien ne vaut la pratique concrète.

Je vous invite à vous rendre sur le dépôt GitHub suivant, où vous trouverez une série de travaux pratiques spécialement conçus pour vous entraîner à manipuler le système de fichiers Linux :

👉 Travaux pratiques : TP-01 Navigation dans les fichiers

Ces exercices couvrent notamment :

  • La navigation entre répertoires avec cd, pwd
  • La liste des fichiers avec différentes options ls
  • La création et suppression de répertoires (mkdir, rmdir)
  • Les copies et déplacements de fichiers (cp, mv)
  • Des manipulations plus poussées pour vous familiariser avec les options avancées

Pourquoi pratiquer ?

L’apprentissage des commandes Linux repose sur la répétition et l’expérimentation. En travaillant sur ces TP :

  • Vous gagnez en confiance avec la ligne de commande
  • Vous découvrez des cas d’usage concrets
  • Vous développez des réflexes indispensables en environnement professionnel

Clonez le dépôt ou suivez directement les consignes en ligne, puis lancez-vous !

Contrôle de connaissances

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

Conclusion

Vous avez découvert les commandes de base de Linux. Vous pouvez maintenant utiliser le terminal pour naviguer dans le système de fichiers, manipuler des fichiers et des répertoires, rechercher des fichiers et bien plus encore. Ces commandes sont essentielles pour travailler efficacement dans un environnement Linux et sont souvent utilisées par les administrateurs système, les développeurs et les utilisateurs avancés. En maîtrisant ces commandes, vous pourrez effectuer des tâches courantes de manière plus rapide et efficace. Vous pouvez également explorer d’autres commandes avancées et des outils complémentaires pour améliorer votre productivité et votre efficacité dans l’utilisation de Linux.