Avanti Indietro Indice

5. Lezione 5 - Manipolare i file

Questa lezione vi farà conoscere i seguenti comandi:

Questi quattro comandi sono anche tra i comandi di Linux più frequentemente utilizzati. Sono i comandi elementari per gestire file e directory.

Adesso, a essere sinceri, alcuni dei compiti forniti da questi comandi sono ottenibili molto facilmente con un gestore di file grafico, col quale si può trascinare un file da una directory a un'altra, tagliare e incollare file, cancellare file, ecc. Allora, perché usare questi vecchi programmi a riga di comando?

La risposta è: potenza e flessibilità. Mentre è facile realizzare semplici manipolazioni di file con un gestore di file grafico, operazioni più complicate possono essere eseguite più facilmente con programmi a riga di comando. Per esempio, come copiereste tutti i file HTML da una directory a un'altra, però solo i file che non esistono nella directory di destinazione o quelli più recenti delle versioni della directory di destinazione? Piuttosto difficile con un gestore di file. Piuttosto facile con la riga di comando:

   [io@linuxbox io]$ cp -u *.html destinazione

5.1 Metacaratteri

Prima di iniziare con i nostri comandi, voglio parlare di una funzionalità della shell che rende questi comandi così potenti. Poiché la shell usa molto i nomi di file, è provvista di caratteri speciali per aiutarvi a specificare rapidamente gruppi di nomi di file. Questi caratteri speciali sono chiamati metacaratteri e permettono di selezionare nomi di file basati su modelli di caratteri.

La tabella sottostante elenca i metacaratteri e cosa selezionano:


Metacarattere

Significato

*

Corrisponde ad ogni carattere

?

corrisponde ad ogni singolo carattere

[caratteri]

Corrisponde a ogni carattere che è uno dei caratteri dell'insieme.

L'insieme dei caratteri può anche essere espresso come una classe di caratteri POSIX come una delle seguenti:



       Classi di caratteri POSIX
[:alnum:]       Caratteri alfanumerici
[:alpha:]       Caratteri alfabetici
[:digit:]       Numeri
[:upper:]       Caratteri alfanumerici maiuscoli
[:lower:]       Caratteri alfanumerici minuscoli

[!caratteri]

Corrisponde ad ogni carattere che non fa parte dell'insieme di caratteri

Sommario dei matacaratteri e il loro significato

Utilizzando i metacaratteri, è possibile costruire criteri di selezione di nomi di file molto sofisticati.

Di seguito si riportano esempi di modelli e a cosa equivalgono:


Modello Corrispondenza
*

Tutti i nomi dei file

g*

Tutti i nomi dei file che iniziano con il carattere "g"

b*.txt

Tutti i nomi dei file che iniziano con il carattere "b" e finiscono con il carattere ".txt"

Data???

Ogni nome di file che inizia con i caratteri "Data" seguito esattamente tre caratteri

[abc]*

Ogni nome di file che inizia con "a" o "b" o "c" seguito qualsiasi altro carattere

[[:upper:]]*

Ogni nome di file che inizia con una lettera maiuscola. Questo è un esempio di una classe di caratteri.

BACKUP.[[:digit:]][[:digit:]]

Un altro esempio di classe di caratteri. Questo modello corrisponde a ogni nome di file che inizia con i caratteri "BACKUP." seguito esattamente da due numeri.

*[![:lower:]]

Ogni nome di file che non finisce con una lettera minuscola.

Esempi di corrispondenze a metacaratteri

Potete utilizzare i caratteri jolly con qualsiasi comando che accetti nomi di file come argomento.

5.2 cp

Il programma cp copia file e directory. Nella sua forma più semplice, copia un singolo file:


   [io@linuxbox io]$ cp file1 file2

Può anche essere utilizzato per copiare più file in una directory differente:


   [io@linuxbox io]$ cp file... directory



Una nota sulla notazione: ... significa che una voce può essere ripetuta una o più volte.


Altri utili esempi del comando cp e delle sue opzioni includono:


Comando Risultati
cp file1 file2

Copia il contenuto del file1 dentro il file2. Se il file2 non esiste, viene creato; altrimenti, il file2 è silenziosamente sovrascritto con il contenuto del file1.

cp -i file1 file2

Come sopra, ma in questo caso, dal momento che è specificata l'opzione "-i" (interattivo), se il file2 esiste l'utente viene avvertito che il file2 sta per essere sovrascritto con il contenuto del file1.

cp file1 dir1

Copia il contenuto del file1 (dentro un file chiamato file1) all'interno della directory dir1.

cp -R dir1 dir2

Copia il contenuto della directory dir1. Se la directory dir2 non esiste, viene creata. Altrimenti, crea una directory chiamata dir1 all'interno della directory dir2.

Esempi del comando cp

5.3 mv

Il comando mv fornisce due funzioni differenti a seconda di come viene utilizzato. Esso sposta uno o più file in una directory differente; oppure rinomina un file o una directory. Per rinominare un file si usa così:

   [io@linuxbox io]$ mv nomefile1 nomefile2

Per spostare file in una directory differente:

   [io@linuxbox io]$ mv file1 file2 file3 directory

Esempi di mv e delle sue opzioni includono:


Comando Risultati
mv file1 file2

Se il file2 non esiste, il file1 viene rinominato file2. Se il file2 esiste, il suo contenuto è sostituito silenziosamente con il contenuto del file1.

mv -i file1 file2

Come il precedente, ma in questo caso, dato che è specificata l'opzione "-i" (interattivo), se il file2 esiste l'utente viene avvertito prima che esso sia sovrascritto con il contenuto del file1.

mv file1 file2 file3 dir1

I file file1, file2, file3 sono spostati alla directory dir1. Se dir1 non esiste, mv uscirà con un errore.

mv dir1 dir2

Se dir2 non esiste, allora dir1 è rinominata dir2. Se dir2 esiste, la directory dir1 è spostata all'interno della directory dir2.

Esempi del comando mv

5.4 rm

Il comando rm rimuove (cancella) file e directory.


   [io@linuxbox io]$ rm file...

Può anche essere utilizzato per cancellare directory:


   [io@linuxbox io]$ rm -r directory...

Esempi di rm e delle sue opzioni includono:


Comando Risultati
rm file1 file2

Cancella file1 e file2.

rm -i file1 file2

Come il precedent, ma in questo caso, dato che l'opzione "-i" (interattivo) è specificata, l'utente viene avvertito prima che ogni file sia cancellato.

rm -r dir1 dir2 Le directory dir1 e dir2vengono cancellate insieme a tutto il lorocontenuto.
Esempi del comando rm



Fate attenzione quando usate rm!

Linux non possiede un comando "undelete" (annulla la cancellazione). Una volta che si cancella qualcosa con rm, è definitivamente perduto. Con rm potete infliggere un danno terrificante al vostro sistema, se non state attenti, specialmente con i metacaratteri.

Prima di usare rm con i metacaratteri, provate questo utile trucco: formate il vostro comando usando ls al posto di rm. Così facendo potrete vedere gli effetti dei metacaratteri prima di cancellare i file. Dopo che avete sperimentato il comando con ls, richiamate il comando con il tasto freccia su e sostituite ls con rm nel comando.


5.5 mkdir

Il comando mkdir è utilizzato per creare le directory. Per usarlo, digitate semplicemente:


   [io@linuxbox io]$ mkdir dir

5.6 Usare i comandi con i metacaratteri

Dato che i comandi che abbiamo spiegato qui accettano nomi di file multipli e directory come argomenti, potete usare i metacaratteri per specificarli. Qui ci sono un po' di esempi:


Comando

Risultati

cp *.txt file testo

Copia tutti i file nella directory di lavoro corrente con i nomi che finiscono con i caratteri ".txt" in una directory esistente chiamata file_testo.

mv mia dir ../*.bak mia nuova dir

Sposta la sottodirectory mia_dir e tutti i file che terminano in ".bak" della directory genitrice della directory di lavoro corrente in una directory esistente chiamata mia_nuova_dir.

rm *~ 

Cancella tutti i file nella directory di lavoro corrente che terminano con il carattere "~". Alcune applicazioni creano file di backup usando questo schema nel nome. Usando questo comando si elimineranno da una directory.

Esempi di comandi che usano i metacaratteri


Avanti Indietro Indice