Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

Pi? giro il mondo, e meno mi piace.

Francesco Petrarca 

Sondaggio:

Qual'? la canzone pi? bella di Battisti?

Amarsi un po'
I giardini di marzo
Emozioni
Pensieri e parole
Fiori rosa fiori di pesco
Acqua azzurra, acqua chiara
Mi ritorni in mente
Non ? Francesca
Ancora tu
Un'avventura
Si viaggiare
Altro

visualizza risultati


 

Spostare Informazioni: cp, rm e mv

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 [-i] origine destinazione
cp [-i] file1 file2 ...fileN directory_di_destinazione

cp nel suo modello ha due linee perché il significato del secondo parametro può essere diverso a seconda del numero di parametri. 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:

/home/larry# ls -F /etc/passwd
/etc/passwd
/home/larry# cp /etc/passwd .
/home/larry# ls -F
passwd
/home/larry# cp passwd frog
/home/larry# ls -F
frog passwd
/home/larry#

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, ma 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:

/home/larry# ls -F
frog passwd
/home/larry# mkdir passwd_version
/home/larry# cp frog passwd passwd_version
/home/larry# ls -F
frog passwd passwd_version/
/home/larry# ls -F passwd_version
frog passwd
/home/larry#

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' nmo 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.

 

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:

/home/larry$ ls -F
inittab pippo rc_version/
/home/larry$ rm inittab pippo pluto
rm: pluto: No such file or directory
/home/larry$ ls -F
rc_version/
/home/larry$

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

/home/larry$ ls -F
pippo pluto/
/home/larry$ ls -F pluto
pippo
/home/larry$ rm pluto/pippo
/home/larry$

e questo

/home/larry$ rm pluto pippo
rm: pluto is a directory
/home/larry$ ls -F
pluto/
/home/larry$

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

 

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:

/home/larry$ cp /etc/inittab .
/home/larry$ ls -F
inittab
/home/larry$ mv inittab pippo
/home/larry$ ls -F
pippo
/home/larry$ mkdir report
/home/larry$ mv pippo report
/home/larry$ ls -F
report/
/home/larry$ ls -F report
pippo
/home/larry$

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, con la quale chiedono 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 in seguito.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2019 Cataldo Sasso