Nicola D'Agostino (.net) - Articoli, traduzioni, grafica, web

Classicamente UNIX

Non è necessario avere il nuovo Mac OS X per poter impartire comandi a un Macintosh attraverso una linea di comando.

di Nicola D’Agostino

Come molti sapranno il sistema operativo attuale degli Apple Macintosh poggia le sue solide fondamenta su Unix, nello specifico su una variante di BSD denominata Darwin. MacOS X offre per la prima volta, oltre alle solite funzionalità dell’interfaccia grafica, anche una shell, una modalità di interazione a caratteri.
Tuttavia, contrariamente a quanto molti credono, anche prima dell’arrivo di OS X era possibile accedere alle risorse del Macintosh e impartire comandi in un ambiente puramente testuale.
Le possibilità erano e sono molteplici e spaziano da ambienti di sviluppo a programmi appositi, spesso implementazioni di pezzi di Unix per Mac.

Cominciamo da MPW, Macintosh Programmer’s Workshop, che è il framework di sviluppo ufficiale della Apple. Funziona su Mac OS 7.x/8.x/9.x ed è un ambiente aperto, configurabile e manipolabile tramite script con il supporto per vari linguaggi tra cui il C, C++ e l’assembly.
Riservato a lungo agli sviluppatori registrati con Apple dietro pagamento di diverse centinaia di dollari, MPW è dal 1997 disponibile gratuitamente a tutti via ftp all’indirizzo ftp.apple.com/developer/Tool_Chest/Core_Mac_OS_Tools/MPW_etc./.
La parte che però più ci interessa è l’applicazione cuore, l’MPW Shell che a prima vista potrebbe venire confusa per un semplice programma di videoscrittura.

mpw shell schermata

Digitando ‘Help’ ad inizio riga, seguito dal tasto Enter (l’Enter del tastierino numerico, non il classico tasto Return-Invio) ci si trova dinanzi ad una succosa lista di comandi.
Quelli più direttamente utili alla manipolazione della macchina e del del filesystem sono raccolti sotto le categorie: FileSystem, System e Launch.

Troviamo comandi utili alla manipolazione di file e volumi (dischi, partizioni, etc.) come ‘Files’, corrispettivo di ‘ls’ in Unix o ‘dir’ in Windows, ‘Move’ (‘mv’), ‘NewFolder’ (‘mkdir’), ‘Delete’ (‘rm’ o ‘del’) e tanti altri tra cui ‘Directory’ (‘pwd’) che mostra il path, il percorso attuale in cui ci si trova, e svela anche una particolarità del filesystem Mac

Directory
Applicazioni:utilities:MPW:

i simboli separatori per le directory sono i due punti, ":" (invece che "/" e "\", slash e backslah).

Tra gli altri comandi interessanti da citare ‘Volumes’ per mostrare i dischi montati, ‘Mount’ e ‘Unmount’ per montarli e smontarli e ‘Erase’, per inizializzarli (formattarli), ‘Shutdown’ per spegnere o riavviare il computer e ‘Launch’ per controllare altri programmi (si può lanciare, fermare, stampare ed altro ancora).

Da notare che per eseguire il comando testuale abbiamo tre modi: il già citato Enter del tastierino numerico, il classico tasto Invio insieme al tasto mela (command) o fare clic sulla barra in alto a sinistra sulla scritta ‘MPW Shell’ . Di default i comandi NON sono case-sensitive e la loro esecuzione può essere interrotta con la classica combinazione tasto mela+ punto (command+".").
A ribadire che si tratta sempre di Macintosh, per molti comandi esiste una finestra di dialogo, detta "Commando" che permette di vedere e controllare più facilmente tutti i "flag", e che si invoca aggiungendo in più il tasto opzione (quello con la scritta "alt").

mpw finestra commando

Dopo MPW una citazione d’obbligo va ad A/UX, il primo e sfortunato tentativo di Apple di creare uno Unix per il Macintosh, che fondeva l’ambiente Unix e la GUI del MacOS con risultati interessanti. A/UX purtroppo è tuttora a pagamento (anche se non più commercializzato) e funziona solo su particolari vecchi modelli di Macintosh. Inoltre A/UX è un sistema operativo completo che rimpiazza quello del Mac e quindi esula dalla nostra trattazione.
Esiste invece una serie di prodotti che è riuscita ad implementare sopra il Finder una funzionale shell UNIX, in due casi addirittura con il supporto dello standard POSIX, la Portable Operating System Interface.

Il primo è Mac06, che funziona dalla versione 7 del MacOS ed offre un ambiente di sviluppo in C.
Mac06, la cui pronuncia in inglese ("Mac oh six") richiama lo standard POSIX, è un kernel perfettamente funzionante che, oltre a permettere di usare comandi, scorrazzare per il filesystem, lanciare programmi grafici MacOS, dà anche accesso allo stack TCP/IP (e quindi al telnet, mail, ftp…).
La curiosità di Mac06, e una dimostrazione della sua essenza Unix, " che quando è in funzione vengono lanciati in background anche due processi "initd" e "sh" che risultano visibili nel menù delle applicazioni del Mac OS.

Il secondo tentativo appartine a LAMP, acrostico ricorsivo che sta per "LAMP Ain’t Mac POSIX" -LAMP non è Mac POSIX-, un ambizioso progetto ancora incompleto che ha però una componente funzionante, Genie.

genie shell

Genie fornisce una shell ancora piuttosto limitata con accesso ad alcuni comandi UNIX ed ha la particolarità di non usare i due punti ma il canonico "/", come si può vedere dando un banale ‘pwd’.

$ pwd
/Volumes/Applicazioni/utilities/Genie.0.3.0/

Più ostica ma molto affascinante è Msh, una essenziale shell di tipo "csh".

msh ps+ls

L’uso di Msh è reso difficile dal fatto che il programma è stato sviluppato da un giapponese e di conseguenza tutti i manuali e gli help online (compreso il comando ‘man’) sono in questa lingua.
Mac Shell comunque offre svariati comandi tra cui ‘cd’, ‘clear’, ‘pwd’, ‘ps’, ‘cat’, ‘cp’, ‘grep’, ‘ls’, ‘more’, ‘mv’, ‘rm’, ‘rmdir’, il ridirezionamento dell’output e addirittura anche l’editor ‘vi’.

In inglese, anche se forse un po’ più limitato nelle funzionalità, è Mac Default Shell.
Anche qui si tratta di una "C shell": i comandi sono quelli tipici di Unix con qualche aggiunta, c’è un text editor e in più abbiamo un classico file di configurazione ("macshell.rc").

Per la serie "stranezze" ecco invece MacDOS 3.0.
Evidente già dal nome, MacDOS è un interprete di comandi che usa la sintassi dell’MSDOS Microsoft, ha una lista impressionante di comandi tipici (‘DIR’, ‘CD’, ‘TREE’, ‘DEL’, ‘COPY’, ‘MD’…) e, colmo dell’ortodossia, anche un file "autoexec.bat".

Finiamo con un outsider e più precisamente un editor di testo freeware, Plain Text che ha tra i suoi bonus un interprete di comandi testuali.
Come in MPW è necessario usare il tasto Enter alternativo: comandi supportati sono quelli classici Unix come ‘cat’, ‘cd’, ‘ls’, ‘pwd’, più altri che compiono operazioni specifiche relative al Macintosh.

Approfondimenti:

Apple – Mac development tools
developer.apple.com/tools/

Unix su Mac
www.pure-mac.com/unix.html

A/UX – The Unix for the rest of us?
www.applefritter.com/ui/aux/../index.html

Una versione di questo articolo è stata pubblicata su "Hacker Journal" n. 20 del 27/02/2003