Ed eccoci ad un nuovo appuntamento sul Terminale di Mac OS X. Dopo aver visto le preferenze generali e come vengono gestiti gli utenti e i permessi, oggi andremo ad esaminare le shell a disposizione e l’utilizzo di alias e variabili.
Continuano le guide da parte di SlideToMac per scoprire le funzionalità del Terminale di MacOSX.
Come sempre, vi ricordiamo di prestare sempre massima attenzione quando si compiono operazioni da riga di comando: un’operazione sbagliata può comportare grossi problemi nella stabilità di sistema.
Dopo aver analizzato tutte le preferenze generali e la gestione di utenti e permessi sui file, oggi vi mostrereme le varie shell a disposizione del sistema operativo Apple e la gestione di alias e variabili.
E’ importante ricordare, che nei sistemi UNIX, quando si opera da Terminale, le lettere maiuscole e minuscole sono diverse e tutti i comandi sono sempre minuscoli.
Per prima cosa, cerchiamo di capire cosa sia effettivamente una shell: non è altro che un programma, la cui interfaccia è esclusivamente da riga di comando (al contrario delle GUI), che permette di eseguire comandi o avviare programmi dal terminale testuale.
Ne esistono varie versioni: derivano quasi tutte dai sistemi UNIX e si sono ampliate e differenziate nel corso delle varie versioni.
Ogni shell, pur avendo comandi comuni, si sono differenziate nell’utilizzo ad esempio delle variabili.
Per fare un esempio: utilizzado la bash le variabili vengono dichiarate, all’interno di uno script, semplicemente anteponendo il simbolo $. Nella Korn Shell, invece, le stesse variabili vengono incluse in ${VARIABILE}.
Ma quali sono le shell a disposizione dei sistemi Mac? Vediamole:
- Bash: è la shell predefinita da parte di Mac OS X. Non è altri che l’acronimo di Bourne Again Shell. Utilizzando questa tipologia di shell avremo modo di eseguire comandi, effettuare un redirect dell’input e dell’output prodotto. Il punto di forza di questa shell è l’estrema semplicità nella fase di scripting. Si avvia, se necessario, tramite il comando bash;
- Korn Shell: la shell in questione è una delle più usato nell’ambito dei sistemi UNIX, in quanto oltre a poter interpretare i comandi bash, consente anche la gestione C shell. Si avvia con ksh;
- C Shell: questa tipologia di shell oramai non viene più utilizzata, essendo stata superata da altre, quali la ksh e bash. Risulta però molto utile nel caso si abbia bisogno del linguaggio C. Si avvia con csh;
Bourne Shell: la madre della bash. Sviluppata per sistemi operativi UNIX, oramai non viene più utilizzata, ma è ancora presente sui sistemi Solaris e, ovviamente, su Mac. Si avvia con sh.
Ogni shell ha le sue caratteristiche peculiari e, spesso, sono l’evoluzione o l’integrazione tra loro di altre shell.
Nei nostri esempi useremo la bash, essendo anche la predefinita in Mac OS X.
Volendo evitare di menzionare le differenze tra la bash e lo standard POSIX, che risulterebbe noioso e non utile alle nostre guide, passiamo a vedere quali sono i file necessari all’avvio corretto di una shell.
Quando avviamo il Terminale questo deve caricare alcuni file necessari, secondo un ordine ben preciso.
Il primo file che il terminale necessita è /etc/profile: in questo file vengono inserite le definizioni iniziali per il corretto funzionamento.
Questo file è generale per tutti gli utenti del nostro Mac.
Successivamente, bash controllerà la presenza di altri file riferiti all’utente in uso: .bash_profile, .bash_login e .profile. Solo il primo tra questi verrà considerato.
L’ultimo file che verrà controllato sarà il .bashrc.
Vi consiglimo di adottarne uno solo ed effettuare su questo le personalizzazioni.
Per chi non ne fosse a conoscenza, i file che presentano il segno “.” prima del nome indicano al sistema operativo che questi sono file nascosti.
Facendo, ad esempio, ‘ls -l‘ questi non verranno visualizzati: per averne l’elenco dovremo utilizare l’opzione “a”: ‘ls -la‘ ci mostrerà i file nascosti.
Dopo aver fatto questo breve excursus sulle shell, passiamo ora ad esaminare l’utilizzo di alias e variabili all’interno della shell.
Il concetto di alias è molto semplice: rappresentano uno “pseudonimo”. Tramite il comando alias andremo ad indicare a Mac OS X di compiere una certa operazione quando andremo ad eseguire l’alias.
Per comprendere meglio facciamo un esempio.
Il comando per effettuare l’elenco dei file è, come abbiamo visto precedentemente, ‘ls’. Se volessimo visualizzarli in formato esteso, dovremmo utilizzare l’opzione ‘-l’. Se, poi, volessimo anche ordinarli dal più vecchio al più nuovo dovremmo aggiungere le due opzioni relative: ‘-t’, in ordine cronologico, ‘-r’, invertiamo l’ordine in quanto UNIX mette per primo il file modificato più recentemente.
Quindi, per poterlo fare dovremmo ogni volta scrivere ‘ls -lrt’. Per evitare di scrivere ogni volta la stringa possiamo operare nel seguente modo:
alias ll=’ls -lrt’
In questo modo, avremo la possibilità di digitare semplicemente ‘ll’ per poter visualizzare i file nel formato desiderato.
E’ bene ricordare che gli alias sono comandi che restano validi finché si resta collegati alla medesima sessione.
Una volta terminata la sessione, gli alias non saranno più disponibili. Per ovviare a questo problema, è possibile inseriri nel file che vengono caricati all’avvio della shell stessa, inserendoli ad esempio nel .bash_profile.
E’ sempre possibile rimuovere, senza dover uscire dalla sessione, gli alias tramite il comando ‘unalias’.
Nel nostro esempio dovremo digitare:
unalias ll
Consiglio: volendo mantenere pulito il file .bash_profile è possibile creare un qualsiasi file di testo in cui andremo ad inserire tutti gli alias desiderati e far caricare quest’ultimo al .bash_profile. Risulterà, altresì, più agevole la sua modifica.
Dopo aver visto gli alias, passiamo ora alla disamina delle variabili.
La variabili, nel contesto della shell, può essere considerata come una etichetta ovvero un nome che viene assegnato ad una o una serie di locazioni di memoria, le quali contengono dei dati. Tenete presente, che una variabile può essere anche vuota.
La shell utilizza già alcune variabili predefinite: una di queste, ad esempio, è la variabile PATH, ovvero le directory che saranno accessibili da qualsivoglia posizione in cui ci troviamo.
E’ possibile visualizzarle tramite il comando ‘env‘.
Le variabili vengono maggiormente utilizzate durante la fase di scripting: grazie ad esse, infatti, potremo utilizzare i vari operatori logici per intraprendere determinate azioni.
Ma è altresì possibile dichiararle anche nella singola sessione di lavoro.
Facciamo un esempio chiarificatore.
Poniamo il caso che dobbiamo installare un applicativo che necessiti di una versione di Java particolare all’atto dell’installazione. Una volta ottenuta la versione di Java corretta e posizionata in una cartella a piacimento, potremo andare ad indicare alla shell le variabili di JAVA_HOME e JAVA_BIN da utilizzare in fase di installazione.
Il comando sarà il seguente:
export JAVA_HOME=path_installazione_java
export JAVA_BIN=$JAVA_HOME/bin
Le variabiali, al contrario degli alias, hanno sempre bisogno del comando export perché vengano utilizzate dal sistema.
Noterete che il secondo comando, ovvero la dichiarazione della JAVA_BIN, implementa l’utilizzo della variabile $JAVA_HOME. E’ importante che le variabili siano dichiarate in successione, in quanto il sistema le legge in tale ordine.
Le variabili vengono sempre dichiarate in caratteri maiuscoli: oltre ad essere uno standard, evita che si possano confondere con i comandi.
Fate attenzione a non utilizzare una variabile già usata: questa andrebbe a sostituire quella precedente.
Facciamo un altro esempio, utilizzando però il comando date. Tale comando ci fornirà la data del nostro sistema.
Ma se, ad esempio, volessimo avere a video solo il giorno, mese ed anno, divisi dal trattino?
Basterà utilizzare una variabile:
export OGGI=$(date +%d-%m-%Y)
Per visualizzare il risultato basterà:
echo $OGGI
Questi sono solo alcuni esempi di quello che può essere effettuato con le variabili.
Risultano molto utili quando dobbiamo eseguire degli file bath che prevedano delle condizioni.
Siamo così giunti alla fine di questa terza lezione. Da questa lezione, inoltre, abbiamo deciso di mostrare in un brevissimo filmato le operazioni esemplificative che vengono indicate nell’articolo.
Vi ricordiamo le precedenti guide:
- Terminale UNIX: Lo strumento più potente di Mac OS X – Guida SlideToMac;
- Terminale Mac OS X: Gli utenti e i permessi – Guide SlideToMac.
Stay Tuned!