Accueil
» MAC OS X
»
Comment exécuter des commandes Terminal à partir d'un script sous macOS
Comment exécuter des commandes Terminal à partir d'un script sous macOS
Pour exécuter des commandes Terminal depuis un script sous macOS, placez-les dans un script shell en texte brut, rendez-le exécutable, puis lancez-le depuis le Finder ou le Terminal. Utilisez une .commandextension pour l'ouvrir d'un double-clic. Un script ne contourne pas les contrôles de confidentialité de macOS et n'octroie aucun privilège d'administrateur.
Un court script shell commence par un shebang qui sélectionne zsh.
1. Écrivez les commandes dans un fichier texte brut
Un script shell est un fichier texte contenant des commandes. Il commence par un shebang , la première ligne qui indique à macOS quel shell doit interpréter le fichier. Le shell par défaut actuel pour les nouvelles fenêtres Terminal est zsh, mais un administrateur peut en définir un autre, comme l'explique Apple dans son guide Terminal . Cet exemple utilise explicitement zsh :
#!/bin/zsh
# Print a message when the script runs
echo "Script is running"
Placez les commandes sur des lignes distinctes après le shebang. Le shebang détermine l'interpréteur ; utilisez donc la syntaxe qu'il prend en charge. Un script Bash, par exemple, peut commencer par `bash` . Le guide des scripts shell#!/bin/bash d'Apple explique les bases.
Vous pouvez utiliser TextEdit, mais assurez-vous que le fichier est au format texte brut : les nouveaux documents TextEdit peuvent être au format texte enrichi. Choisissez Format > Convertir en texte brut , ou définissez le format des nouveaux documents TextEdit sur Texte brut dans ses paramètres. La mise en forme en texte enrichi n'est pas du code shell. Apple documente ces options dans son guide TextEdit . Un éditeur de code ou un éditeur de ligne de commande peut nanoégalement convenir.
Enregistrez le script avec l'extension .command dans un emplacement facile à retrouver.
2. Enregistrez-le avec une .commandextension
Enregistrez le fichier texte brut sous un nom descriptif, par exemple ` MyScript.command.script.txt`. L'extension `.script.txt` permet au Finder d'ouvrir le script dans le Terminal lorsque vous double-cliquez dessus. La documentation développeur archivée d'Apple décrit ce processus de double-clic pour les scripts shell. Vérifiez le nom final dans le Finder : s'il se termine par `.script.txt` .command.txt, renommez-le pour que l'extension finale soit uniquement `.script.txt` .command. Conservez l'exemple dans un emplacement tel que votre Bureau pendant sa configuration.
Si macOS vous demande quelle extension utiliser, conservez-la .commandet vérifiez que Finder ne l'a pas ajoutée .txt.
3. Rendre le script exécutable
Ouvrez le Terminal et autorisez votre compte à exécuter le fichier. Pour l'exemple enregistré sur le Bureau, saisissez :
chmod u+x "$HOME/Desktop/MyScript.command"
Appuyez sur Entrée. u+xCela ajoute l'autorisation d'exécution au propriétaire ; les guillemets protègent les chemins contenant des espaces. Remplacez le chemin d'exemple si nécessaire. Faites glisser le fichier dans Terminal ou utilisez le menu contextuel (Option + clic) du Finder pour copier son chemin. Apple présente la même méthode dans ses instructions relatives aux fichiers exécutables .
La commande chmod ajoute la permission d'exécution au propriétaire du fichier.
4. Exécutez le script
Double-cliquez dessus MyScript.commanddans le Finder pour l'exécuter dans le Terminal. La sortie et les erreurs s'y afficheront. Vous pouvez également saisir son chemin complet :
"$HOME/Desktop/MyScript.command"
Ou bien, accédez d'abord au dossier, puis préfixez le nom de fichier avec ./:
cd "$HOME/Desktop"
./MyScript.command
Cette ./commande indique à l'interpréteur de commandes d'exécuter un fichier situé dans le répertoire courant. Le guide des commandes du Terminal d'Apple explique comment exécuter un fichier à partir de son chemin d'accès.
Exécutez le fichier en utilisant son chemin d'accès et vérifiez le résultat dans le Terminal.
Dépannage des erreurs courantes
« Permission refusée » : vérifiez que vous avez exécuté chmod u+xla commande sur le bon fichier. Si nécessaire, répétez-la en utilisant le chemin d'accès exact du fichier. Rendre un fichier exécutable n'autorise pas l'exécution de toutes les commandes qu'il contient.
« Fichier ou répertoire introuvable » : vérifiez l’emplacement et l’orthographe, y compris l’extension. Un fichier enregistré par erreur MyScript.command.txtne correspondra pas à la commande ci-dessus. Glisser-déposer le fichier dans le Terminal peut faciliter l’insertion de son chemin d’accès.
Une commande fonctionne lorsqu'elle est saisie manuellement, mais pas dans le script : ce dernier peut utiliser un autre interpréteur de commandes ou s'appuyer sur des alias, des variables d'environnement ou un répertoire de travail de votre session de terminal interactive. Utilisez le shebang approprié, évitez de vous fier aux alias et spécifiez explicitement les chemins d'accès aux fichiers. Si les commandes nécessitent un dossier particulier, ajoutez une cdligne correspondante au début du script.
Comprenez les autorisations avant de partager
Le droit d'exécution est indépendant des autorisations de confidentialité. Un script s'exécute généralement avec vos droits d'administrateur ; utilisez-le sudouniquement pour les commandes nécessitant des privilèges d'administrateur.
macOS peut demander l'accès à des dossiers protégés ou à d'autres applications. Examinez chaque demande et n'autorisez que ce qui est nécessaire. Consultez le menu Pomme > Réglages Système > Confidentialité et sécurité pour accéder à Fichiers et dossiers et aux paramètres de confidentialité associés . Les autorisations dépendent de l'accès demandé et de l'application requérante ; il ne s'agit pas d'autorisations générales par commande et elles ne sont pas transmises par un script partagé.
Avant d'exécuter ou de partager un script, lisez attentivement chaque ligne et assurez-vous de bien comprendre son effet. Un .commandfichier est pratique car il s'exécute dès son ouverture ; par conséquent, n'utilisez que des fichiers provenant de sources fiables.