11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

54 CAPITOLO 2. LA SHELL E I COMANDIda scrivere sulla stessa riga 4 e terminare con la pressione del tasto di invio.La sintassi prevede cioè che si scriva sempre all’inizio della riga (eventuali spazi antistantiverranno comunque ignorati) il nome del comando da eseguire, seguito da opzioni ed argomenti.Si tenga presente che la shell, per identificare il comando e separarlo da opzioni e argomenti (eseparare questi ultimi fra di loro) usa caratteri vuoti come lo spazio o il tabulatore. La presenzacioè di uno (o più) spazi o tabulatori 5 dice che si sta passando dal nome del comando ad unargomento o opzione, o da un argomento/opzione al successivo.Per questo il nome di un comando non può contenere spazi, inoltre è la stragrande maggioranzadei comandi usa nomi scritti esclusivamente in lettere minuscole (si ricordi che un sistemaunix-like è case-sensitive), i soli caratteri non alfabetici utilizzati (molto poco) sono il “-” o il “_”ed eventualmente i numeri, gli altri infatti, come vedremo fra breve, vengono interpretati dallashell assumendo significati speciali, e pertanto di nuovo non possono essere inseriti nel nome delcomando.La differenza fra opzioni e argomenti è che le prime attivano funzionalità o modalità dioperazione specifiche del comando, mentre i secondi indicano gli oggetti (solitamente dei file)su cui questo opera. In realtà il meccanismo è un po’ più complesso, e può essere compresonei dettagli solo con un po’ di nozioni di programmazione, 6 quello che in effetti fa la shell èidentificare il programma da usare sulla base del nome del comando, e poi spezzare l’intera rigain una lista di stringhe che verranno passate al suddetto programma come argomenti iniziali.Questa scansione viene eseguita su tutta la riga, utilizzando gli spazi vuoti come separatori esenza distinguere fra nome del comando, opzioni e argomenti; tutto il contenuto sarà suddivisoin una lista di stringhe, che poi programma dovrà utilizzare al suo interno. Si può inoltre direalla shell di utilizzare come separatore caratteri diversi dagli spazi vuoti, indicando quelli dausare con la variabile (tratteremo le variabili di shell più avanti) IFS.Gran parte dei programmi per gestire gli argomenti e le opzioni passate dalla linea di comandoutilizzano una serie di funzioni fornite dalla libreria di fondamentale del sistema, la <strong>GNU</strong> Clibrary di fig. 1.1. 7 Questo comporta, per i programmi che usano queste funzionalità, la presenzadi un formato della riga di comando abbastanza uniforme, mostrato appunto nell’esempio precedente,con la possibilità di distinguere fra opzioni e argomenti, e di specificare questi in un ordinequalunque. Si tenga presente però che questo non è sempre vero, dato che non tutti i programmifanno ricorso a queste funzionalità, per cui troveremo anche in seguito svariate eccezioni (adesempio in cui l’ordine conta, e le opzioni vanno specificate prima degli argomenti).Nel comportamento comune comunque le opzioni sono sempre costituite da un carattere “-”seguito da una lettera (in rari casi anche numeri o caratteri non alfabetici), cui può seguire (separatoo meno da uno spazio) un eventuale valore passato come parametro (non tutte le opzionilo prevedono, per alcune va specificata solo la lettera dell’opzione). Una forma alternativa perle opzioni, in uso principalmente con i programmi del progetto <strong>GNU</strong> che utilizzano le funzionalitàcitate e anch’essa mostrata nell’esempio precedente, è quella in cui l’opzione è scritta informa estesa, e allora viene introdotta da un “--”, in questo caso, qualora essa necessiti di un4 il terminale in genere va a capo da solo o fa scorrere la riga se lo spazio disponibile sullo schermo finisce, sipuò però scrivere un comando su più righe utilizzando il carattere “\” per proteggere la pressione del tasto diinvio (che altrimenti passerebbe la linea di comando alla shell) e andare su una nuova riga senza che la linea dicomando venga ad essere interrotta.5 qualora si vada a capo su una nuova riga con l’uso della “\” illustrato nella nota precedente, anche il caratteredi a capo viene considerato come uno spazio vuoto.6 per i curiosi questo argomento è trattato nei dettagli nella sezione 2.3 di [1].7 la funzionalità si chiama getopt, e permette l’uso di una sintassi standard per le opzioni, la scansione automaticadelle stesse indipendentemente dall’ordine in cui le si specificano, la possibilità di identificare opzioni conparametri o senza, la capacità di passare al programma, una volta terminata la scansione della lista di stringheottenuta dalla shell, solo quelle contenenti gli argomenti restanti; per una trattazione più dettagliata si può fareriferimento alla sez. 2.3.2 di [1].

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

Saved successfully!

Ooh no, something went wrong!