Nei libri di fantascienza c’è scritto che il Terminale serve anche per creare script e non solo per dare singoli comandi.
Io faccio già fatica a occuparmi di AppleScript… gli script della shell spero me li insegni la nipotina quando sarà cresciuta.
Nel frattempo, perché non usare AppleScript per realizzare gli script e darli in pasto al Terminale? Dà soddisfazione. Lo sfrutti senza doverlo studiare. Fantastico.
Per farlo, questa volta creiamo un piccolo script che aggiunge una cartella piena di musica alla libreria di iTunes. Lo script (cortesia di MacOSXHints) diventerà un comando di Terminale ed è questo:
on run nome_cartella
set alias_cartella to POSIX file nome_cartella
tell application “iTunes”
add alias_cartella to library playlist 1
end tell
end run
Lo script non ha trucchi particolari, a parte l’uso del parametro POSIX file
, un trucchetto per fare scrivere a Mac OS X il percorso completo di una cartella senza doversi impegnare.
Fino a qui è un normale AppleScript. Adesso, prima delle istruzioni aggiungiamo una riga magica:
#!/usr/bin/osascript
La riga spiega al Terminale che si tratta di uno script realizzato con qualcosa compatibile con la Open Scripting Architecture (AppleScript, ma potrebbe essere altro).
Registriamo il file come testo, non come script. Chi fa queste cose con Word faccia attenzione e registri come testo, non come .doc o altro materiale nocivo. E si scarichi TextWrangler. Diamogli un nome tipo AggiungiLibreriaiTunes, per esempio. Anche più corto, basta che sia chiaro.
Nel Terminale, portiamoci nella cartella che contiene lo script registrato come testo. Se fosse dentro una cartella Programmazione dentro la cartella Documenti dentro la cartella Inizio, il comando sarebbe
cd ~/Documents/Programmazione
(cd
sta per Change Directory, cioè cambia cartella, ~
si chiama tilde, si digita con Opzione-5 e nel Terminale è un’abbreviazione per la cartella Inizio)
Un altro comando da Terminale, ora:
chmod a+x AggiungiLibreriaiTunes
Questo rende eseguibile il file. Dal punto di vista del Terminale lo trasforma in un programma a tutti gli effetti. Pertanto potremo scrivere
AggiungiLibreriaiTunes ~/Musica/Compact/Classica/JSBach
(bisogna trovarsi ancora nella stessa directory di prima e la cartella oggetto del comando ha un percorso inventato, che va sostituito con quello vero. Se il nome di una cartella contiene spazi o altri caratteri non alfanumerici, è meglio trascinare la cartella stessa dal Finder dentro il Terminale per averlo già in forma utilizzabile)
Un gran lavoro. Però abbiamo imparato a dare comandi nuovi da Terminale, usando AppleScript per crearli. Mica male.
Per chi usa Tiger, due piccole limitazioni: lo script va registrato come AppleScript e senza la famosa prima riga. Secondo, la sintassi diventerebbe
osascript AggiungiLibreriaiTunes.scpt ~/Musica/Compact/Classica/JSBach
Per chiamare un normale AppleScript da Terminale (si noti che il file ha l’estensione, stavolta) si usa il comando di Terminale osascript
.
Più di così non riesco a spiegare. Se qualcosa non è del tutto chiaro, sono qui. :)
P.S.: l’originale di tutto ciò si trova su MacOSXHints.
P.P.S.: da Terminale si può fare tutto ciò in modo assai più semplice:
open -a iTunes
file
Non c’è niente da imparare qui, però.