6.20.1.2 A cosa servono le opzioni?

Le opzioni vengono usate per fornire informazioni aggiuntive al programma, al fine di regolarne o personalizzarne l'esecuzione. Nel caso non fosse ancora chiaro, le opzioni dovrebbero essere facoltative. Un programma dovrebbe essere in grado comunque di funzionare correttamente senza alcuna opzione. (Prendete un programma qualsiasi tra gli strumenti forniti da Unix o da GNU. Può girare senza alcuna opzione e comportarsi ancora sensatamente? Le sole eccezioni che mi vengono in mente sono find, tar e dd--che si comportano tutti e tre in maniera stravagante e variabile, e che sono stati giustamente criticati per la loro sintassi non standard e la loro interfaccia piuttosto confusa.)

Molte persone desiderano che i loro programmi abbiano delle ``opzioni richieste''. Pensateci. Se è obbligatoria, allora un'opzione non è facoltativa! Se vi è una qualche informazione che il vostro programma richiede assolutamente per poter funzionare con successo, per quello ci sono gli argomenti posizionali. (Tuttavia, se insistete ad aggiungere delle ``opzioni richieste'' ai vostri programmi, date un'occhiata alla sezione ``Esempi estesi'' (sezione 6.20.5) per due modi di implementarle con optparse.)

Considerate il semplice comando cp, per la copia dei file. Non ha molto senso provare a copiare dei file senza fornire un file di destinazione e almeno uno da copiare. Quindi, cp fallisce se lo eseguite senza argomenti. Tuttavia ha una sintassi utile e flessibile, che non dipende assolutamente dalle opzioni:

$ cp SOURCE DEST
$ cp SOURCE ... DEST-DIR

Potete fare moltissimo con solo questo comando. Molte implementazioni di cp forniscono una serie di opzioni per modificare leggermente il modo in cui i file debbano essere copiati: è possibile conservare la modalità (di lettura/scrittura/accesso) del file e l'ora di modifica, evitare di seguire i link simbolici, chiedere conferma prima di sovrascrivere file esistenti, etc. Ma nessuna di queste modifica lo scopo principale di cp, che è quello di copiare un file in un altro, o N file in un'altra directory.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.