Do Shell

Glossary Term

Do Shell

1 category

Dans l’ingénierie logicielle et l’administration des systèmes macOS, l’automatisation des tâches répétitives est un levier de productivité majeur. Apple propose nativement un langage de script orienté utilisateur appelé AppleScript, conçu pour piloter les interfaces graphiques des applications. Cependant, pour exécuter des commandes système profondes, interroger le noyau Unix ou manipuler des fichiers en masse, la puissance brute de la ligne de commande reste inégalée. Pour faire dialoguer ces deux univers, Apple intègre une passerelle syntaxique fondamentale : la commande Do Shell Script.

Définition de la commande Do Shell Script

Do Shell Script est une commande native de l’environnement AppleScript qui permet d’exécuter une ligne de commande ou un script Shell (Bash, Zsh, Python, etc.) directement depuis un script AppleScript ou un flux de travail Automator / Raccourcis, sans avoir à ouvrir visuellement l’application Terminal de macOS. La commande lance un interpréteur de commandes en arrière-plan, lui transmet l’instruction textuelle, puis retourne le résultat de l’exécution (la sortie standard) sous forme de chaîne de caractères exploitable par AppleScript.

Syntaxe fondamentale et structure de base

L’implémentation de la commande obéit à une syntaxe textuelle simple au sein de l’éditeur de script de macOS. La structure de base se formule ainsi :

do shell script "commande_terminal"

Par exemple, pour récupérer le nom de la machine active ou l’adresse IP locale configurée sur le réseau sans manipuler l’interface des Réglages Système, un administrateur écrira :

set nomMachine to do shell script "hostname"
display dialog "Le nom de ce Mac est : " & nomMachine

Gestion des permissions et privilèges administrateur (Sudo)

Dans l’architecture de sécurité de macOS (verrouillée par les protocoles SIP et TCC), de nombreuses commandes de bas niveau — comme la modification de drivers, le formatage d’un système de fichiers FAT/exFAT ou l’écriture dans les dossiers système — exigent des droits d’accès élevés.

Dans le Terminal classique, l’utilisateur fait précéder sa commande du préfixe sudo, qui interrompt le flux pour demander la saisie manuelle du mot de passe administrateur. Au sein d’un script automatisé en arrière-plan, cette interruption bloquerait l’exécution. Do Shell Script résout ce goulot d’étranglement grâce à des arguments syntaxiques spécifiques : with administrator privileges.

do shell script "règle_système_privilégiée" with administrator privileges

Lorsque cette option est détectée, macOS génère automatiquement une boîte de dialogue de sécurité native, invitant l’utilisateur à valider l’opération via Touch ID ou la saisie de son mot de passe de session, garantissant le respect des protocoles de sécurité du système.

Techniques avancées : Échappement de caractères et variables

L’un des pièges classiques lors de la conception de scripts d’automatisation complexes réside dans la gestion des espaces et des caractères spéciaux au sein des chemins d’accès aux dossiers (notamment au sein du Dossier Maison). Le langage Shell utilise les espaces comme séparateurs d’arguments, ce qui génère une erreur système si un chemin de fichier contient un espace non protégé.

Pour sécuriser le transfert de variables textuelles depuis AppleScript vers l’environnement Shell, il est impératif d’utiliser la propriété quoted form of. Cette commande encapsule automatiquement la chaîne de caractères dans le formatage attendu par l’interrécepteur Unix :

Méthode d’écritureExemple de Code AppleScriptComportement et Fiabilité Technique
Écriture brute (À éviter)do shell script "rm -rf " & monFichierRisque critique d’erreur ou de suppression accidentelle si le chemin contient des espaces.
Écriture sécurisée (Recommandée)do shell script "rm -rf " & quoted form of monFichierÉchappement automatique des caractères spéciaux, garantissant une exécution chirurgicale du script.

Cas pratiques d’application en production

La synergie entre AppleScript et les commandes Shell permet de concevoir des outils DIY (Do It Yourself) puissants pour administrer son flux de travail :

  • Maintenance et nettoyage des caches : Automatiser la purge des fichiers temporaires ou le redémarrage forcé d’un driver audio ou graphique gelé en arrière-plan sans ouvrir l’Activité système.
  • Gestion de l’affichage de l’interface : Activer ou masquer instantanément les fichiers cachés du Finder en combinant une commande defaults write com.apple.finder AppleShowAllFiles avec un redémarrage du Dock et du Finder (killall Finder).
  • Traitement de données et sauvegardes : Déclencher un script de synchronisation réseau via l’outil Unix rsync pour dupliquer des sessions de création ou des dossiers Documents vers un volume de stockage externe de manière transparente.

En bref : ce qu’il faut retenir

  • Do Shell Script est une passerelle AppleScript permettant d’exécuter des commandes de Terminal en arrière-plan.
  • Elle élimine le besoin d’ouvrir l’interface visuelle du Terminal pour interagir avec le système Unix sous-jacent.
  • L’argument with administrator privileges permet d’exécuter des commandes Sudo en affichant l’invite d’authentification native de macOS.
  • L’utilisation de la fonction quoted form of est indispensable pour sécuriser le traitement des fichiers contenant des espaces ou des accents.

Aller plus loin

Sur notre site :

Sur le Web :

Histoire, principes et philosophie du langage AppleScript sur Wikipédia

Documentation technique Apple (TN2065) sur l’utilisation de Do Shell Script (Archives Developer)