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.
Pour chacune des commandes Linux, 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.
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
:
Avec la commande man
Le second moyen est d’utiliser la commande man suivi du nom de la commande :
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
:
Un exemple avec la commande ls
:
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 :
Les commandes de base Linux
Navigation dans le système de fichiers
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.
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 :
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.
Exemple :
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.
La principale option à connaitre est -
qui permet de retourner dans le
répertoire précédent :
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.
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.
mv (move)
La commande linux mv
est utilisée pour déplacer ou renommer des fichiers ou
des dossiers.
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
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.
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.
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.
Les principales options à connaître :
-p
: Crée des répertoires récursivement (utile pour créer des répertoires imbriqués)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 :
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
.
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.
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 :
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 :
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 :
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 :
5. Rechercher des répertoires vides : Pour trouver tous les répertoires
vides dans un chemin donné, vous pouvez utiliser l’option -type d
où d
signifie répertoire. Par exemple, pour rechercher des répertoires vides dans
le répertoire courant :
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 :
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
:
Voici comment utiliser la commande locate
:
Syntaxe de base de la commande locate
:
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 :
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 :
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
:
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
:
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
:
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
:
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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
:
Shell nous retourne la tache 1 qui est arrêtée. Passons-la en arrière-plan :
La tâche passe en arrière-plan. Repassons-la au premier plan :
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.