Chaque commande Linux suit la même structure. Quand vous tapez ls -l /etc dans un terminal, vous utilisez trois éléments : une commande, une option et un argument. Comprendre cette structure, c'est comprendre toutes les commandes que vous rencontrerez, pas besoin de les apprendre par cœur.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Décomposer n'importe quelle ligne de commande en commande + options + arguments
- Distinguer les options courtes (
-l) des options longues (--long) - Lire un code de retour pour savoir si une commande a réussi ou échoué
- Interpréter les messages d'erreur les plus courants
- Combiner plusieurs options et arguments dans une même commande
La structure de base
Section intitulée « La structure de base »Toute commande Linux suit ce schéma :
commande [options] [arguments]| Élément | Rôle | Exemple |
|---|---|---|
| Commande | Le programme à exécuter | ls, cat, mkdir |
| Options | Modifient le comportement de la commande | -l, --all, -v |
| Arguments | Ce sur quoi la commande agit | /etc, fichier.txt |
Prenons un exemple concret :
ls -la /var/logls→ la commande (lister le contenu d'un répertoire)-la→ deux options combinées :-l(format détaillé) +-a(inclure les fichiers cachés)/var/log→ l'argument (le répertoire à lister)
Options courtes et options longues
Section intitulée « Options courtes et options longues »La plupart des commandes proposent deux formats d'options :
| Format | Syntaxe | Exemple | Quand l'utiliser |
|---|---|---|---|
| Court | - + une lettre | ls -l | Au quotidien, rapide à taper |
| Long | -- + un mot | ls --long | Dans les scripts, plus lisible |
Combiner des options courtes
Section intitulée « Combiner des options courtes »Les options courtes se combinent derrière un seul tiret :
# Ces deux lignes font la même chose :ls -l -a -hls -lahOptions avec valeur
Section intitulée « Options avec valeur »Certaines options attendent une valeur :
# Option courte avec valeurhead -n 5 /var/log/syslog # affiche les 5 premières lignes
# Option longue avec valeurhead --lines=5 /var/log/syslog # identiqueArguments : sur quoi la commande agit
Section intitulée « Arguments : sur quoi la commande agit »L'argument indique la cible de la commande. Selon la commande, il peut s'agir :
- d'un fichier :
cat /etc/hostname - d'un répertoire :
ls /var/log - d'un texte :
echo "Bonjour" - d'un nom :
mkdir projets - de rien (argument par défaut) :
lsseul liste le répertoire courant
Plusieurs arguments sont possibles :
cp fichier1.txt fichier2.txt /tmp/# ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^# argument 1 argument 2 argument 3 (destination)Codes de retour : réussite ou échec
Section intitulée « Codes de retour : réussite ou échec »Après chaque commande, Linux stocke un code de retour (exit code). C'est un nombre qui indique si la commande a réussi ou échoué.
| Code | Signification |
|---|---|
| 0 | Réussite |
| 1 | Erreur générale |
| 2 | Mauvaise utilisation (option invalide, argument manquant) |
| 126 | Permission refusée (le fichier existe mais n'est pas exécutable) |
| 127 | Commande introuvable |
Pour voir le code de retour de la dernière commande :
ls /etcecho $?# 0 → tout s'est bien passé
ls /repertoire-inexistantecho $?# 2 → erreur : le répertoire n'existe pasLire un message d'erreur
Section intitulée « Lire un message d'erreur »Les messages d'erreur suivent un format prévisible :
commande: type d'erreur: détailVoici les messages les plus fréquents et leur signification :
| Message | Signification | Que faire |
|---|---|---|
command not found | La commande n'existe pas ou n'est pas installée | Vérifier le nom, installer le paquet |
No such file or directory | Le chemin est incorrect ou le fichier n'existe pas | Vérifier le chemin avec ls |
Permission denied | Vous n'avez pas les droits | Réessayer avec sudo si légitime |
Is a directory | Vous traitez un dossier comme un fichier | Ajouter -r (récursif) ou corriger la cible |
File exists | Le fichier existe déjà | Choisir un autre nom ou écraser volontairement |
Exemple concret :
$ cta /etc/hostnamebash: cta: command not foundLe shell vous indique que cta n'existe pas. Vous avez fait une faute de frappe, la commande est cat.
$ cat /etc/hostnamcat: /etc/hostnam: No such file or directoryLe fichier /etc/hostnam n'existe pas. Il manque un e : c'est /etc/hostname.
Le séparateur -- : fin des options
Section intitulée « Le séparateur -- : fin des options »Parfois, un argument ressemble à une option. Par exemple, supprimer un fichier nommé -f :
# Erreur : rm interprète -f comme l'option "force"rm -f
# Correct : -- indique la fin des optionsrm -- -fLe double tiret -- dit à la commande : « tout ce qui suit est un argument, pas une option ».
Récapitulatif visuel
Section intitulée « Récapitulatif visuel » ls -l -a /var/log ── ── ── ──────── │ │ │ │ │ │ │ └─ argument : le répertoire cible │ │ └─ option : inclure les fichiers cachés │ └─ option : format détaillé └─ commande : lister le contenuÀ retenir
Section intitulée « À retenir »- Toute commande suit le schéma
commande [options] [arguments]. - Les options courtes (
-l) se combinent (-lah), les longues (--long) sont plus lisibles dans les scripts. - Un code de retour
0= réussite, tout autre nombre = erreur. echo $?affiche le code de retour de la dernière commande.- Les messages d'erreur indiquent toujours la commande, le type d'erreur et la cible, lisez-les de gauche à droite.
- Le séparateur
--permet de passer des arguments qui ressemblent à des options.