GNU/Linux: creare, spostare e cancellare file

In questa puntata metto insieme i comandi per le operazioni più comuni sul file system: creare, copiare, spostare e cancellare file e cartelle. Alcuni li avevamo già incontrati nelle puntate precedenti, altri sono nuovi: l’idea è avere un’unica guida.

Per seguire gli esempi, lavora in una cartella di prova con qualche file dentro, per esempio file1.txt, test.txt e permessi.txt, e qualche cartella (dir1, dir2, …).

Creare una cartella: mkdir

mkdir sta per make directory:

mkdir dir7

Conosciamo già ls per vedere il contenuto della cartella corrente. Si può usare anche per guardare dentro un’altra cartella:

ls dir2

Percorsi relativi E assoluti

In ls dir2 ho specificato un percorso relativo: il nome della cartella a partire da dove mi trovo. Avrei potuto indicarla anche con il percorso assoluto, a partire dalla cartella radice, e il risultato sarebbe lo stesso. Ad esempio, se mi trovo in /home/utente/esempio:

ls /home/utente/esempio/dir2

Imparare a usare percorsi relativi e assoluti è importante, perché si fa spesso confusione se si usa quello sbagliato nel momento sbagliato. Il percorso assoluto mette al riparo da fraintendimenti: sei sicuro di operare sul file o sulla cartella giusti. Spesso però costa lunghe digitazioni, e allora si usano i percorsi relativi (quelli che non iniziano con la barra). L’importante è essere sicuri di riferirsi davvero al file o alla cartella su cui vogliamo lavorare.

Copiare: cp

cp copia un file dentro una cartella. Per copiare file1.txt dentro dir7:

cp file1.txt dir7
ls dir7

Spostare: mv

mv si comporta in modo simile a cp, ma sposta il file invece di copiarlo. Spostiamo test.txt dentro dir7:

mv test.txt dir7

Se ora facciamo ls vediamo che test.txt non c’è più nella cartella di partenza, mentre ls dir7 lo mostra nella nuova posizione.

Cancellare una cartella: rmdir E rm

Se proviamo a cancellare con rmdir una cartella che contiene dei file otteniamo un errore:

rmdir dir7

Il sistema ci avvisa che dir7 non è vuota: è un errore molto importante, perché ci evita di cancellare per sbaglio contenuto prezioso. Possiamo svuotarla a mano, file per file, e poi cancellarla:

rm dir7/test.txt
rm dir7/file1.txt
rmdir dir7

Se la cartella contiene tanti file questo metodo è scomodissimo. La via più semplice è rm con l’opzione -r (ricorsivo). Ricreiamo la cartella, mettiamoci dentro un paio di file e cancelliamola in un colpo solo:

mkdir dir7
cp file1.txt dir7
cp permessi.txt dir7
rm -r dir7

Questa volta nessuna segnalazione: la cartella e il suo contenuto sono spariti. Con rm -r niente cestino e niente domande, quindi fai attenzione a cosa stai cancellando.

Rinominare con mv

mv, oltre a spostare, serve anche a rinominare: rinominare è uno spostamento sul posto. Supponiamo che in dir4 ci sia un file file1.txt e che voglia rinominarlo, per evitare collisioni con il file1.txt che sta all’esterno:

mv dir4/file1.txt dir4/file2.txt

Ora il file si chiama file2.txt, e posso portare dentro dir4 anche il file1.txt esterno:

mv file1.txt dir4

Copiare una cartella: cp -r

Proviamo a copiare dir3 dentro dir4:

cp dir3 dir4

Linux ci ferma, perché stiamo copiando una cartella e non abbiamo specificato la ricorsione. Non si può copiare un albero senza -r:

cp -r dir3 dir4
cp -r dir5 dir4

Ricreiamo dir7 e copiamoci dentro tutta dir4:

mkdir dir7
cp -r dir4 dir7

Rinominare E spostare cartelle

Anche per le cartelle mv serve sia a rinominare sia a spostare. Per rinominare dir7 in dir8:

mv dir7 dir8

Per spostare una cartella dentro un’altra, per esempio dir5 dentro dir6:

mv dir5 dir6

E senza -r? Con mv non serve: sposta direttamente anche le cartelle piene.

Per vedere l’albero che abbiamo costruito c’è il comando tree (se manca: sudo apt-get install tree):

tree

L’albero può essere anche complesso, ma con rm -r lo cancelliamo senza problemi:

rm -r dir6

I caratteri jolly

Il jolly più usato in Linux è l’asterisco, che sta per “qualunque cosa” e permette di operare su più file contemporaneamente. Ricreiamo dir5 e spostiamoci tutti i file con estensione .tar della cartella corrente:

mkdir dir5
mv *.tar dir5

Attenzione: *.tar corrisponde solo ai file che finiscono esattamente con .tar, e quindi in questo esempio si sposta soltanto dir1.tar. Per spostare anche gli altri (quelli con una seconda estensione, tipo .tar.gz o .tar.bz2) usiamo l’asterisco in modo più creativo:

mv *.tar.* dir5

Cioè: tutti i file con estensione .tar e poi un’altra estensione. Bella pulizia.

In sintesi

mkdir, ls, cp, mv, rm e rmdir sono i comandi di base del file system. Vanno conosciuti bene perché li avrai sempre a disposizione, anche in caso di avvii di emergenza e senza programmi grafici. Apri la tua Linux box e fai molta pratica.

Link e risorse

Sostieni il canale

PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!

questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!