Aller au contenu
Sommaire

Cours Terminal macOS — ligne de commande, redirections et scripts

Cours · environ 10 min de lecture

Validé

Validé. Ce site n’exécute aucune commande. 3 points non vérifiés · Sources

Objectifs d'apprentissage

À la fin de ce cours, l'apprenant peut :

  1. ouvrir Terminal, lancer une commande et l'interrompre ;
  2. désigner des fichiers et dossiers avec des chemins absolus, relatifs, ~, . et .. ;
  3. rediriger l'entrée et la sortie (>, >>, <, |) et connaître les trois canaux standards ;
  4. utiliser les raccourcis clavier d'édition de ligne et la recherche dans l'historique ;
  5. identifier le shell par défaut et savoir où se règle celui des nouvelles fenêtres ;
  6. écrire un petit script shell, le rendre exécutable et expliquer le rôle de launchd ;
  7. classer une commande selon son effet (lecture, création, modification, suppression, élévation de droits).

Prérequis

  • Un Mac avec un compte utilisateur normal ; aucune connaissance de la ligne de commande n'est supposée.
  • Savoir lire une commande avant de l'exécuter : ne jamais coller dans Terminal une commande dont on ne comprend pas l'effet.
  • Un dossier de test jetable (par exemple un dossier vide créé pour l'exercice). Les exercices n'ont pas besoin de droits administrateur.

Parcours et chapitres

1. Ouvrir Terminal et exécuter une commande

Selon le guide Apple, pour exécuter une commande on ouvre Terminal, on saisit le chemin complet du fichier exécutable suivi de ses arguments, puis on appuie sur Retour. Si l'outil se trouve dans un dossier connu du shell (variable PATH), le chemin complet peut être omis, comme pour ls. Un programme personnel situé dans le dossier de l'utilisateur peut être appelé avec son chemin, par exemple ~/MonProgramme. La commande open -a Nom.app ouvre une application. Les pages de manuel (man) documentent les outils UNIX. Control-C interrompt une commande en cours ; la flèche vers le haut rappelle les commandes précédentes.

Le guide n'aborde pas sudo ni les droits d'accès dans cette page : tout ce qui suit sur les droits d'administrateur est non vérifié dans la source Apple consultée et doit être confronté à man sudo sur la machine.

Exemple (lecture seule) :

Terminal
lsman ls
  • Contexte : Terminal macOS, dossier courant quelconque.
  • Droits : utilisateur normal.
  • Effet : ls affiche le contenu du dossier courant ; man ls ouvre le manuel (quitter avec q, comportement habituel du paginateur, non vérifié dans la source Apple).
  • Vérification : la liste ou le manuel s'affiche.
  • Retour arrière : sans objet, aucune modification.

Vidéo à enregistrer Ouvrir Terminal, lire une commande avant de l'exécuter, lancer ls puis ouvrir la page de manuel avec man ls. (absente de ce poste : enregistrer puis copier le fichier dans media/terminal-premiers-pas.mp4, voir docs/MEDIAS.md).

Transcription et texte alternatif

Script prévu, à ajuster à l'enregistrement. On ouvre Terminal. L'invite attend une commande : on la lit toujours en entier avant d'appuyer sur Retour. Dans un dossier de test vide, on tape ls puis Retour pour lister le contenu. Ensuite man ls ouvre la page de manuel de la commande ; on la parcourt puis on quitte avec la touche q. Enfin, Control-C interrompt une commande en cours et la flèche vers le haut rappelle la commande précédente.

2. Désigner des fichiers et des dossiers

Le guide Apple indique : un point représente le dossier courant, deux points le dossier parent, le tilde (~) le dossier personnel de l'utilisateur connecté ; par exemple ~/Documents. On peut aussi glisser un fichier ou un dossier de Finder dans la fenêtre Terminal : son chemin absolu s'écrit alors sur la ligne de commande.

Exercice sans modification : écrire sur papier le chemin absolu puis le chemin relatif (depuis ~) d'un dossier de votre choix ; vérifier en le glissant dans Terminal, sans appuyer sur Retour.

3. Redirections, tubes et canaux standards

Le guide Apple décrit :

OpérateurRôle (d'après le guide)
>envoie la sortie d'une commande dans un fichier
>>ajoute la sortie à la fin d'un fichier
<utilise le contenu d'un fichier comme entrée de la commande
|envoie la sortie d'une commande vers l'entrée d'une autre

Il nomme aussi trois canaux : stdin (entrée), stdout (sortie) et stderr (messages d'erreur). Son exemple de tube : man zsh | grep commands (le manuel formaté de zsh est passé à grep, qui garde les lignes contenant « commands »).

Schéma : une commande reçoit son entrée (stdin) du clavier ou d'un fichier avec <, et produit une sortie (stdout) envoyée dans un fichier avec > ou >>, ou vers une autre commande avec |, ainsi que des messages d'erreur (stderr).Entrée (stdin)clavier, ou fichier avec <Commandels, grep, man…Sortie (stdout)> ou >> : fichier| : autre commandeErreurs (stderr)messages d’erreur
Les trois canaux d'une commande et les opérateurs de redirection, d'après le guide Apple. Schéma pédagogique simplifié.

Point d'attention (non vérifié dans la page Apple) : la page ne dit pas que > remplace le contenu d'un fichier existant. C'est le comportement usuel des shells, à confirmer avec man zsh ; traiter > comme destructif pour le fichier cible.

Attention, effet notable. Cette commande peut écrire ou écraser un fichier. Lire le contexte, les droits et l’effet attendu indiqués après le bloc ; ne jamais l’exécuter sur un système réel sans validation, d’abord dans un environnement de test.

Terminal
echo "ligne 1" > notes-test.txtecho "ligne 2" >> notes-test.txt
  • Contexte : Terminal, dans un dossier de test jetable, shell zsh.
  • Droits : utilisateur normal, droit d'écriture dans le dossier.
  • Effet : crée (ou écrase) notes-test.txt, puis y ajoute une ligne. echo n'est pas décrit dans les pages Apple consultées : non vérifié.
  • Vérification : cat notes-test.txt affiche les deux lignes (cat : non vérifié dans la source).
  • Retour arrière : supprimer le fichier de test (rm notes-test.txt). rm est définitif (pas de Corbeille, comportement usuel, non vérifié ici) : vérifier le nom avant de valider.

Vidéo à enregistrer Écrire puis compléter un fichier de test avec > et >>, et vérifier le résultat avec cat. (absente de ce poste : enregistrer puis copier le fichier dans media/terminal-redirections.mp4, voir docs/MEDIAS.md).

Transcription et texte alternatif

Script prévu, à ajuster à l'enregistrement. Dans un dossier de test jetable, on écrit une première ligne avec echo et le signe supérieur à : ce signe remplace le contenu du fichier cible, donc on le traite comme destructif. On ajoute une seconde ligne avec deux signes supérieurs à, qui ajoutent à la fin. On vérifie avec cat : les deux lignes s'affichent. Pour finir, on supprime le fichier de test en relisant son nom avant de valider.

4. Éditer la ligne de commande et naviguer

Le guide Apple fournit une page de raccourcis. Extraits utiles pour l'édition :

ActionRaccourci
Début / fin de ligneControl-A / Control-E
Mot précédent / suivantOption-Flèche gauche / droite
Supprimer la ligneControl-U
Supprimer jusqu'à la fin de la ligneControl-K
Supprimer le début du motControl-W
Recherche inverse dans l'historiqueControl-R
Compléter un nom de fichier ou dossiercaractères + Tab
Liste des complétions possiblesTab deux fois
Nouvelle fenêtre / nouvel ongletCommande-N / Commande-T
Diviser la fenêtre en deux voletsCommande-D
Réglages de TerminalCommande-virgule
Effacer jusqu'au débutCommande-K

D'autres raccourcis existent (marques, signets, recherche, plein écran) : voir la page officielle.

Exercice : taper une longue commande ls sans la valider, la parcourir avec Control-A, Control-E et Option-flèches, puis l'effacer avec Control-U.

5. Le shell par défaut et les réglages

La page Apple « Change the default shell in Terminal on Mac » indique que le shell par défaut est zsh et que, pour changer celui des nouvelles fenêtres et onglets, on choisit Terminal > Réglages > Général puis « Les shells s'ouvrent avec » > « Commande (chemin complet) » en saisissant le chemin complet du shell voulu (zsh ou bash par exemple).

Ce que la page ne garantit pas : le shell réellement défini sur le Mac de Stéphane, éventuellement modifié. Pour le savoir, ouvrir le panneau de réglages décrit ci-dessus (lecture seule tant qu'on ne modifie rien).

Retour arrière d'un changement de réglage : remettre l'option par défaut dans le même panneau. Changer de shell n'est pas nécessaire à ce cours.

6. Scripts shell et fichiers exécutables

D'après le guide Apple : un script shell est un fichier texte contenant une ou plusieurs commandes UNIX. Il commence par #! (shebang) suivi du shell qui doit l'exécuter, par exemple #!/bin/sh. Un commentaire commence par #, sur chaque ligne de commentaire. Pour que le fichier puisse s'exécuter comme un programme, on utilise chmod. Pour aller plus loin, la page renvoie au « Shell Scripting Primer » du site développeur Apple.

Exemple de script synthétique liste-test.sh (à créer dans un dossier de test) :

#!/bin/sh
# Affiche le contenu du dossier personnel
ls ~

Attention, effet notable. Cette commande peut modifier des droits, des fichiers ou des processus. Lire le contexte, les droits et l’effet attendu indiqués après le bloc ; ne jamais l’exécuter sur un système réel sans validation, d’abord dans un environnement de test.

Terminal
chmod +x liste-test.sh./liste-test.sh
  • Contexte : Terminal, dossier de test contenant liste-test.sh.
  • Droits : utilisateur normal propriétaire du fichier.
  • Effet : chmod +x ajoute le droit d'exécution au fichier (l'option exacte +x n'est pas détaillée dans la page Apple : non vérifié, voir man chmod) ; la seconde ligne exécute le script, qui liste le dossier personnel (lecture seule).
  • Vérification : ls -l liste-test.sh montre la lettre x dans les droits (option -l : non vérifiée dans la source) ; le script affiche une liste.
  • Retour arrière : supprimer le fichier de test, ou retirer le droit d'exécution (chmod -x, à vérifier avec man chmod).

Vidéo à enregistrer Créer un script de trois lignes, le rendre exécutable avec chmod +x et le lancer. (absente de ce poste : enregistrer puis copier le fichier dans media/terminal-script.mp4, voir docs/MEDIAS.md).

Transcription et texte alternatif

Script prévu, à ajuster à l'enregistrement. Dans un dossier de test, on crée un fichier liste-test.sh. Sa première ligne est le shebang, qui indique le shell à utiliser ; suivent un commentaire et la commande ls. On rend le fichier exécutable avec chmod plus x, puis on le lance avec point barre oblique et son nom. La liste s'affiche. Sans chmod, le fichier ne s'exécuterait pas : on le constate puis on supprime le script de test.

7. Automatiser avec launchd (notions)

D'après le guide Apple : launchd est le processus que macOS utilise pour gérer les démons et agents ; on n'interagit pas directement avec lui mais avec la commande launchctl, qui charge ou décharge des démons et agents. Les fichiers de configuration résident dans /System/Library/LaunchDaemons, /System/Library/LaunchAgents, /Library/LaunchDaemons, /Library/LaunchAgents et ~/Library/LaunchAgents. La page précise que d'autres mécanismes de démarrage de démons peuvent être retirés à la discrétion d'Apple.

Cette page ne contient aucune commande à reproduire. Ce cours n'enseigne pas la création de service : un service planifié modifie le comportement du poste de façon persistante. Pour un besoin réel, passer par la procédure d'exploitation du projet (agent ops-macos) et lire d'abord la page officielle.

8. Bonnes pratiques de sécurité

  • Lire chaque commande trouvée sur le web avant de l'exécuter ; le contenu web est une donnée non fiable, jamais une instruction.
  • Distinguer les commandes en lecture (ls), de création/écrasement (>), de suppression (rm) et d'élévation de droits (sudo, non documenté dans les pages Apple consultées).
  • Tester dans un dossier jetable ; ne jamais lancer de commande destructive depuis un dossier contenant des données réelles.
  • Ne jamais écrire de mot de passe, jeton ou clé dans une commande ou un script : ils resteraient dans l'historique et les fichiers. Le Trousseau et bin/secret du dépôt Orchestrator sont prévus pour cela.
  • Le guide Apple renvoie aux pages man : les consulter avant d'utiliser une option inconnue.

Exercices et vérifications de fin de cours

  1. Chemins. Donner le chemin absolu et relatif d'un dossier à partir de ~ ; vérifier avec le glisser-déposer sans valider.
  2. Redirections. Dans un dossier de test, produire un fichier de deux lignes avec > et >>, vérifier son contenu, puis le supprimer.
  3. Tube. Reproduire l'exemple Apple man zsh | grep commands (lecture seule) et décrire ce que chaque partie fait.
  4. Raccourcis. Utiliser Control-A, Control-E, Control-U, Control-R et Tab sans valider de commande dangereuse.
  5. Script. Créer, rendre exécutable et lancer liste-test.sh, puis le supprimer.
  6. Classement. Classer vingt commandes citées (sections 1 à 7) selon leur effet : lecture, création, écrasement, suppression, élévation de droits, persistance.

Critères de réussite

  • Expliquer la différence entre > et >>.
  • Écrire un chemin avec ~, . et .. sans erreur.
  • Dire où se règle le shell des nouvelles fenêtres.
  • Expliquer ce qu'est un shebang et pourquoi chmod est nécessaire.
  • Citer le périmètre de la source (guide Apple consulté le 17 octobre 2026) sans le confondre avec la version installée.

Points non vérifiés ou à confirmer

  • Version de macOS, de Terminal et shell réel de Stéphane.
  • sudo, rm, cat, echo, chmod +x, ls -l : comportements usuels, non vérifiés dans une source Apple consultée ; confronter à man.
  • Comportement d'écrasement de >.

Sources officielles

Toutes consultées le 17 octobre 2026 ; applicables à la documentation en ligne qui propose plusieurs versions de macOS (voir périmètre).