Skip to main content

1.2 — Syntaxe d'une commande

Une commande Linux suit habituellement cette forme :

commande [options] [arguments]

Exemple :

ls -l --human-readable /var/log
Élément Valeur Rôle
commande ls programme exécuté
option courte -l affichage détaillé
option longue --human-readable tailles lisibles
argument /var/log dossier traité

Options courtes et longues

Certaines options courtes peuvent être regroupées :

ls -l -a -h
ls -lah

Toutes les commandes ne suivent pas exactement les mêmes conventions. Il faut consulter --help ou la page de manuel avant de supposer qu'une option existe.

Espaces, guillemets et caractères spéciaux

Un espace sépare les arguments. Un chemin contenant des espaces doit être protégé :

cd "Mes documents"
cp 'rapport final.txt' sauvegarde/
cd Mes\ documents

Les guillemets simples conservent littéralement leur contenu. Les guillemets doubles permettent encore le remplacement des variables :

nom="Alex"
echo 'Bonjour $nom'     # affiche : Bonjour $nom
echo "Bonjour $nom"     # affiche : Bonjour Alex

Motifs génériques

Le shell développe certains motifs avant d'exécuter la commande :

Motif Signification Exemple
* zéro ou plusieurs caractères ls *.log
? exactement un caractère ls image?.jpg
[abc] un caractère de la liste ls fichier[123].txt
{a,b} plusieurs valeurs générées mkdir -p projet/{docs,scripts}

Toujours vérifier un motif avant une suppression :

printf '%s\n' *.tmp
# Puis seulement si la liste est correcte :
rm -- *.tmp

Codes de retour

Une commande renvoie un code : 0 signifie généralement réussite, une autre valeur signale une erreur ou un résultat particulier.

ls /etc/hosts
echo "$?"

Enchaînements utiles :

commande1 && commande2   # commande2 seulement si commande1 réussit
commande1 || commande2   # commande2 seulement si commande1 échoue
commande1 ; commande2    # commande2 dans tous les cas

Exemple prudent :

mkdir sauvegarde && cp -a configuration/ sauvegarde/

Commandes internes et exécutables

type cd
type ls
command -v python3
which python3             # courant, mais command -v est plus portable

type indique si le nom correspond à une commande interne, un alias, une fonction ou un exécutable.