Alors que l'un ou l'autre des contextes de script peut faire tout ce que l'autre peut faire (parce que les scripts shell peuvent appeler /usr/bin/osascript
pour invoquer un AppleScript, et AppleScript dispose de la fonction do shell script
), il existe en effet des contextes pour lesquels l'un est mieux adapté que l'autre.
Les deux langages de script sont des langages de "colle" -- ils peuvent faire un minimum de choses eux-mêmes, et accomplissent plutôt la plupart de leurs tâches en invoquant les capacités d'autres programmes. Les scripts de l'interpréteur de commandes utilisent les pipes d'Unix, tandis qu'AppleScript dispose de l'option tell application
la syntaxe.
Là où ils divergent, c'est que les AppleScripts communiquent directement avec des applications scriptables (presque toujours des applications à interface graphique), tandis que les scripts communiquent principalement avec des programmes en ligne de commande (dont certains peuvent invoquer des interfaces graphiques, mais beaucoup ne le font pas).
Lorsqu'il s'agit de tâches de gestion de fichiers, les deux approches peuvent fonctionner. L'une peut Tell Application Finder
pour copier des fichiers, ou exécuter la commande cp
dans un shell script. Alors pourquoi utiliser l'une plutôt que l'autre ? Certes, certains rédacteurs de script sont plus familiers avec un langage que l'autre, et préféreront donc utiliser cet outil. Mais une meilleure considération est celle de l'utilisateur du script. AppleScript peut souvent être invoqué à partir de l'interface graphique Mac : en double-cliquant sur une application AppleScript, ou en déposant des fichiers sur celle-ci, ou en utilisant un menu AppleScript, soit à l'échelle du système, soit dans un programme particulier. Des programmes comme Mail peuvent être configurés pour exécuter un AppleScript sur les messages entrants afin de les filtrer. Pour les utilisateurs habitués à utiliser les Macs d'une manière "similaire" (c'est-à-dire à partir de l'interface graphique), les AppleScripts sont souvent plus accessibles.
Les scripts vivent souvent (mais pas toujours) dans le Terminal. Si l'on utilise déjà le Terminal, exécuter un shell scripts là peut être plus pratique que d'invoquer un AppleScript. D'autre part, de nombreux utilisateurs sont rebutés par le fait de devoir taper des commandes dans une fenêtre de Terminal, ou même de cliquer sur un fichier scripts qui ouvre une fenêtre de Terminal pour faire sa magie. Personnellement, je trouve la syntaxe des scripts shell plus lisible que celle des AppleScripts, mais je soupçonne que je suis en minorité sur ce point. Shell scripts sont familier aux utilisateurs de nombreux systèmes différents de type Unix.
Quoi qu'il en soit, les deux sont des outils puissants pour mieux contrôler votre Mac.