Crea sito

I comandi dei file

8 / 100

Dato che in un sistema unix-like tutto è un file, è naturale che la maggior parte dei comandi della \unix toolbox ” abbia a che fare con le operazioni di manipolazione dei file. I comandi elementari che ci permettono la gestione dei file sul lesystem sono cp, mv, mkdir, ln, rm, ecc. e quelli che consentono di operare sui metadati, sono chown, chmod,ecc. In questa sezione affronteremo gli altri comandi che permettono di operare sul contenuto

Caratteristiche comuni

Benche, ogni comando sia specializzato per fare un compito specifico, esistono comunque una serie di caratteristiche comuni a tutti loro.

Dato che i comandi relativi ai le sono la maggioranza, le tratteremo qui, anche se si applicano in generale a qualunque tipo di comando, e non solo a quelli che riguardano i file.

 OpzioneSignificato 
   
 allexportequivalente di set -a. 
 emacsimposta l’editor di linea in stile emacs con combinazioni da ta- 
  stiera riprese dall’editor emacs (il default di cui si e gia parlato 
  in sez. 2.1.3). 
 errexitequivalente di set -e. 
 noclobberequivalente di set -C. 
 noglobequivalente di set -f. 
 nounsetequivalente di set -u. 
 posixcambia il comportamento della shell in modalit  di contabilit 
  con lo standard POSIX.2. 
 viimposta l’editor di linea in stile vi, in cui le funzionalit  di edi- 
  ting di linea usano combinazioni da tastiera riprese dall’editor 
  vi  

Principali opzioni della shell, da indicare come parametro dell’opzione -o di set

Queste vengono elaborate dalla shell e passate come argomenti al comando e come la gran parte dei comandi le elabori attraverso una apposita libreria che ne assicura una sostanziale uniformita. Quello che c’e da aggiungere qui e che alcune di esse, le piu comuni, tendono ad essere le stesse e ad avere lo stesso signi cato per tutti i comandi. Ad esempio per la gran parte dei comandi l’opzione -h puo essere utilizzata per stampare a video una schermata di aiuto che riassume la sintassi di uso del comando. Ricordiamo comunque che quella di identificare come opzioni gli argomenti che iniziano con il carattere “” è solo una convenzione, e non è seguita da tutti i comandi, alcuni infatti usano delle sintassi diverse per eredita storiche, come abbiamo visto con ps.

Le opzioni sono di due tipi: con o senza parametri.

Quando sono senza parametri esse si comportano come degli interruttori che attivano o disattivano una certa modalità di funzionamento; ad esempio l’opzione -v (che sta per verbose) viene usata da molti comandi per aumentare la prolissità dei propri messaggi. Le opzioni che prevedono dei parametri sono più complesse e agiscono in maniera analoga ad un cursore o una manopola; permettono cioè di passare dei valori di controllo per una certa funzionalità del comando. In tal caso, con un formato del parametro che varierà da caso a caso, il valore dovrà essere specificato di seguito all’opzione, normalmente separato da uno spazio.

Inoltre i comandi del progetto GNU supportano anche una versione estesa delle opzioni, in cui queste si possono speci care con parole intere invece che con singole lettere. In questo caso esse iniziano sempre con un \“. Tutti i comandi di base del progetto GNU ad esempio supportano le due opzioni –help, che stampa una schermata riassuntiva della sintassi (equivalente a -h), e –version, che stampa il numero di versione. Se l’opzione estesa deve indicare un valore questo viene normalmente speci cato in forma di assegnazione con un \=“, ad esempio con qualcosa del tipo –tabsize=80, anche se spesso basta fornire il valore separato da uno spazio. Si ricordi che l’interpretazione delle opzioni e un compito strettamente attinente al singolo programma, per la shell un’opzione e una stringa come un’altra che viene passata al comando che viene eseguito. Nasce allora il problema di quando il valore di un certo argomento, come ad esempio il nome di un file, inizia con il carattere \“, e non si ha modo di distinguerlo da una opzione. Dato che sulla linea di comando si possono passare come argomenti anche i risultati delle varie espansioni (di comandi, variabili o nomi di file), talvolta questo tipo di inconvenienti puo verificarsi in maniera inaspettata.

Per questo motivo la combinazione \” usata da sola viene utilizzata dalle librerie di gestione delle opzioni per forzare la conclusione della scansione delle opzioni nella riga di comando, in modo che tutti gli argomenti che seguono ad essa vengano usati dal programma letteralmente, senza considerarli possibili opzioni, anche se cominciano per un \“. Si tenga presente pero che questa e un’altra delle funzionalit introdotte dalla funzione getopt della GNU C Library, usata dalla gran parte dei programmi, ma non da tutti, per gestire le opzioni a riga di comando.

Come esempio d’uso di questa funzionalit si consideri di dover cancellare con rm un le il cui nome inizia per \” (ad esempio -lista). Dato che il \” con cui inizia il nome normalmente viene interpretato come l’inizio di una opzione, l’uso di rm -lista produce un errore essendo l’opzione -l inesistente. Proteggere il \” con la barra, o usare le virgolette per il nome non serve a nulla, la shell interpretera correttamente quanto indicato, passando comunque il valore -lista come argomento.

Il problema infatti non deriva dalla shell, ma da come vengono gestite le opzioni nei comandi: tutti i programmi infatti prima esaminano le opzioni, segnalando errori se ne trovano di inesi-stenti, e poi trattano gli argomenti. Per questo occorre indicare esplicitamente al comando che in questo caso non si vuole che il \” sia interpretato come l’inizio di una opzione: scrivendo il comando come rm — -lista, l’interpretazione delle opzioni viene bloccata dal \” e a questo punto -lista (anche se inizia per \“) verra considerato un normale argomento che indica il nome di un le, che sar cancellato. Un’ultima convenzione, seguita anch’essa da molti programmi, riguarda l’uso del singolo carattere \” come argomento. La convenzione viene utilizzata dai comandi che prendono come argomento un nome di le da cui leggere o su cui scrivere dati. Se al posto del nome di un le si usa questo carattere il comando far riferimento rispettivamente allo standard input per la lettura o allo standard output per la scrittura.

Translate »