11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.1. L’INTERFACCIA A LINEA DI COMANDO. 672.1.6 Scripting elementareUna delle capacità fondamentali della shell è che, come avveniva per i file .bat del DOS, sipossono inserire delle sequenze di comandi in dei file per farli eseguire direttamente senza doverliriscrivere tutte le volte. Ma se questo è più o meno tutto quello che si può fare con il DOS,il grande vantaggio di una shell unix che è avete a disposizione un vero e proprio linguaggiodi programmazione con tanto di variabili e direttive di iterazione, condizionali, ecc. che vipermette di effettuare anche compiti di notevole complessità, tanto che, per quanto sia pocoelegante e piuttosto limitato, viene comunque ampiamente utilizzato, per la sua immediatezza,per automatizzare una grande quantità di compiti per i quali non vale la pena ricorrere ad unlinguaggio di più alto livello.E per questo motivo che la shell, anche se finora ne abbiamo parlato solo come del programmache implementa l’interfaccia a riga di comando, è in realtà uno dei componenti essenziali perfar funzionare il sistema, 28 e non solo dal punto di vista dell’interfaccia utente: tutti i sistemidi avvio del sistema infatti, come vedremo in sez. 5.3.4, usano proprio degli script di shell pereseguire le loro operazioni.La descrizione dettagliata del linguaggio della shell non è affrontabile adesso, le sue caratteristicheprincipali si trovano comunque nella sezione SHELL GRAMMAR della pagina di manuale, edun ottima risorsa per quanti vogliano approfondirlo è [2]. Quello che è importante sottolinearequi è che la shell non solo può essere invocata in maniera interattiva, quando è associata ad unterminale ed utilizzata dagli utenti per dare comandi, ma può anche essere lanciata non interattivamentefacendole eseguire direttamente quello che appunto si chiama uno script, in questocaso la si invoca come un qualunque altro comando, e prende come argomento il file dello scriptda eseguire, con sintassi del tipo bash script.In realtà gli script possono sfruttare una funzionalità peculiare del link-loader 29 di <strong>Linux</strong> (chesi trova comunque in tutti i sistemi unix-like), che oltre ad eseguire i programmi nel formatobinario standard 30 è in grado di eseguire anche gli script, che vengono trattati esattamente allostesso modo. Questi sono identificati dal link-loader come file di testo dotati di permesso diesecuzione la cui prima riga è nella forma:#!/bin/bashin cui cioè si trovano i caratteri “#!” seguiti dal pathname di un programma che faccia dainterprete. In tal caso il link-loader lancerà automaticamente il comando (con le opzioni che sipossono specificare sempre sulla prima riga del file) dandogli come argomento il nome file stesso.Dato che per la shell e per tutti i linguaggi di scripting, come il python o il perl, che usanoquesta funzionalità il carattere # indica l’inizio di una riga di commento, quando si vuole creareuno script basterà scrivere un file di testo contenente tutte le istruzioni necessarie che inizi conquesta riga (che verrà ignorata nell’interpretazione dei comandi), e poi renderlo eseguibile. 31 Inquesta maniera uno script sarà del tutto equivalente ad un comando binario, ed oltre ad eseguirlocome tale la shell provvederà anche a passargli gli argomenti scritti nella riga di comando,esattamente come avrebbe fatto se di fosse trattato di un eseguibile compilato.Nel caso degli script però, rispetto quanto avviene sulla riga di comando, si usa spesso unasintassi della shell che prevede l’uso di istruzioni e comandi con una sintassi più complessa di28 si noti infatti che essa deve trovarsi, come richiesto dal FHS trattato in sez. 1.2.3, sotto /bin, dato che èessenziale per l’avvio del sistema.29 questo è un programma speciale, che non costituisce un programma a se (ed infatti sta sotto /lib), ma cheviene lanciato come parte dalla chiamata al sistema che esegue un nuovo programma, che permette di utilizzarele librerie condivise e mettere in esecuzione gli altri programmi.30 in <strong>Linux</strong> esistono sostanzialmente due formati binari, quello chiamato a.out, usato nei kernel delle serie finoalla 1.2, e il formato ELF, usato nelle serie successive.31 renderlo eseguibile in questo caso significa attivarne il permesso di esecuzione con chmod +x, dal punto divista del contenuto del file non cambia assolutamente nulla, questo resta un normale file di testo.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!