next up previous contents index
Next: Il sistema X Window Up: La shell di Unix Previous: Memorizzare Informazioni

Spostare Informazioni

Tutte queste directory sono bellissime, ma non ci servono a niente, se non come posto dove immagazzinare i dati. Gli Dei dello Unix   hanno visto questo problema, e l'hanno risolto dando agli utenti i file.

Impareremo a creare e modificare i file nei prossimi capitoli.

I principali comandi per manipolare i file in Unix sono cp , mv  e rm . Rispettivamente questi stanno per copy (copia), move (sposta) e remove (rimuovi).

cp come un amanuense

 

cp [-i] origine destinazione
cp [-i] file1 file2 ...fileN directory di destinazionegif

cp è uno strumento molto utile sotto Unix, ed estremamente potente: permette ad una persona di copiare più informazioni in un secondo di un monaco amanuense in un anno.

Fate attenzione con cp se non avete molto spazio nel disco. Nessuno vuole vedere il messaggio Error saving-disk full mentre sta copiando dei dati importanti. cp può anche sovrascrivere i file esistenti senza avvisare--parlerò di questi pericoli più avanti.

Per prima cosa parleremo della prima linea del modello del comando: il primo parametro di cp è il file da copiare, il secondo è dove copiarlo. Si può copiare con un nuovo nome o su una diversa directory. Proviamo alcuni esempi:



Con il primo cp ho copiato il file /etc/passwd , che contiene i nomi di tutti gli utenti del sistema Unix e le loro password (criptate), nella mia home directory. cp non elimina il file sorgente; in questo modo non ho fatto niente che possa danneggiare il sistema. Così adesso esistono due copie di /etc/passwd nel mio sistema, entrambe chiamate passwd, una nella directory /etc e una in /home/larry.

Poi ho creato una terza copia di /etc/passwd  quando ho scritto cp passwd frog--le tre copie sono: /etc/passwd, /home/larry/passwd e /home/larry/frog. Il contenuto di questi tre file è lo stesso, anche se hanno nomi diversi.

cp può copiare file tra directory se il primo parametro è un file e il secondo una directory. In questo caso, il nome breve del file resta lo stesso.

Può copiare un file e cambiarne il nome se entrambi i parametri sono nomi di file. Questo è un pericolo di cp. Se io avessi scritto cp /etc/passwd /etc/group, cp avrebbe creato un nuovo file con contenuto identico a passwd e l'avrebbe chiamato group. Comunque, se /etc/group esisteva già, cp avrebbe distrutto il vecchio file senza darvi la possibilità di salvarlo! (Non avrebbe nemmeno stampato un messaggio facendovi presente che stavate distruggendo un file copiandocene un altro sopra!)

Vediamo un altro esempio di cp:

Come ho usato cp? Evidentemente cp accetta più di due parametri (è la seconda linea nel modello del comando). Quello che ha fatto il comando precedente è stato copiare tutti i file elencati (frog e passwd) e metterli nella directory passwd_version. In effetti cp può prendere un numero qualsiasi di parametri, interpretando i primi n-1 parametri come file da copiare, e l' come directory in cui copiarli.

Non si possono rinominare i file quando se ne copiano più di uno alla volta--mantengono sempre il loro nome. Questo porta ad una domanda interessante: cosa succede se scrivo cp inittab pippo pluto, dove inittab e pippo esistono e pluto non è una directory? Provate e vedrete.

 

Eliminare file con rm

 

rm [-i] file1 file2 ...fileN

Adesso che abbiamo imparato a creare milioni di file con cp  (e credetemi, troverete presto nuovi modi per creare altri file), è utile imparare anche come eliminarli. È molto semplice, il comando che state cercando è rm, e funziona proprio come state pensando: qualsiasi file che date come parametro a rm viene cancellato.

Per esempio:

Come potete vedere, rm non è molto amichevole. Non solo non chiede conferma, ma elimina file anche se l'intera riga non è corretta. Questo può essere pericoloso. Considerate la differenza tra questi due comandi:



e questo



Come potete vedere, cambiare un solo carattere comporta un esito molto diverso del comando. È vitale controllare il comando inserito prima di battere tex2html_wrap4507.

 

Una scorciatoia molto utile

 

mv [-i] vecchio-nome nuovo-nome
mv [-i] file1 file2 ...fileN nuova-directory

Infine, l'altro comando che dovrete conoscere è mv. mv è simile a cp, tranne che elimina il file originale dopo averlo copiato. È quindi molto simile all'uso di cp e rm insieme. Vediamo cosa possiamo fare:



Come potete vedere, mv rinomina un file se il secondo parametro è un file. Se il secondo parametro è una directory, mv sposta il file nella nuova directory mantenendo lo stesso nome breve.

Dovete fare molta attenzione con mv--non controlla per vedere se il file di destinazione esiste già, e rimuoverà tutti i file che si trova tra i piedi. Per esempio, se ho già un file chiamato pippo nella mia directory report, il comando mv pippo report eliminerà il file ~/report/pippo e lo sostituirà con ~/pippo.

In effetti, c'è un modo per far sì che rm, cp e mv chiedano conferma prima di eliminare file. Tutti e tre i comandi accettano l'opzione -i, che li fa chiedere conferma all'utente prima di cancellare qualsiasi file. Se usate un alias, potete fare in modo che la shell faccia rm -i automaticamente quando digitate rm. Impareremo più su questo argomento nella Sezione gif a pagina gif.

 


next up previous contents index
Next: Il sistema X Window Up: La shell di Unix Previous: Memorizzare Informazioni


Fri Sep 19 00:41:53 CEST 1997