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
- il video su YouTube
- esempi e comandi della puntata su GitHub
- mkdir — manuale GNU coreutils
- cp — manuale GNU coreutils
- mv — manuale GNU coreutils
- rm — manuale GNU coreutils
- touch — manuale GNU coreutils
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!
