Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Operare sui file in Linux: 'cp', 'mv', 'rm' e 'mkdir'

I principali comandi per copiare, spostare e agire sui file di linux.
I principali comandi per copiare, spostare e agire sui file di linux.
Link copiato negli appunti

Ora che sappiamo muoverci nel filesystem ed esaminare il contenuto di una directory, concentriamocoi sui singoli file e sulle operazioni che possiamo fare su di essi: vedremo quindi i comandi per copiare, spostare ed eliminare i file presenti sul disco; inoltre, vedremo come eseguire le stesse operazioni sulle directory, imparando anche come crearle.

cp

Il primo comando è cp, utilizzato per copiare file e directory. La sua sintassi è molto semplice:

cp file_sorgente destinazione

oppure, per la copia multipla di file, si usa:

cp file1 file2 ... fileN destinazione

che permetterà di copiare i file file1 .. fileN nella directory di destinazione. Vediamo un esempio:

cp miofile /tmp

che copierà 'miofile' nella directory /tmp. Se in /tmp esiste già un file chiamato miofile, questo sarà sovrascritto dal nuovo file.

Opzioni di cp

Vediamo ora le opzioni più importanti di cp:

Opzione Descrizione
-b Esegue automaticamente una copia di backup di ogni file di destinazione esistente
-f Forza la sovrascrittura dei file, senza richiedere interventi da parte dell'utente
-i Attiva la modalità interattiva, che chiede conferma prima dell'evanutale sovrascrittura di file di destinazione preesistenti; il suffisso usato è il classico simbolo della tilde, ~
-p Mantiene, se possibile, gli attributi (permessi, ownership, etc.) del file
-r Permette di attivare la modalità ricorsiva, che permette la copia di directory
-v Attiva la modalità verbose, che visualizza in output quello che il sistema ha fatto in seguito al nostro comando

mv

Dopo aver visto come copiare file e directory, dedichiamoci allo spostamento ed al cambio di nome dei file; tutto questo è fatto con un solo comando: mv, la cui sintassi è:

mv sorgente destinazione               (per rinominare)
mv sorgente directory                  (per spostare un file)
mv sorgente1 .. sorgenteN destinazione (per spostare più file)

Tramite mv, oltre a cambiare il nome di un file, è anche possibile rinominare una directory o muovere più directory in un'altra directory. Le opzioni di mv sono molto simili a quelle di cp, sebbene in numero minore. Quelle che a noi interessano sono le stesse viste per il comando cp, con l'esclusione di -p che per mv non esiste.

rm e rmdir

Come ultimo, ci rimane il comando rm, che permette di eliminare file o directory. La sua sintassi è abbastanza semplice:

rm file	          (per eliminare un file)
rm file1 .. fileN (per eliminare più file)

Le opzioni di rm sono anch'esse simili a quelle di mv; le più utili sono le stesse che sono state viste per cp, con l'esclusione di "-p" che qui non ha alcun senso pratico.

Deve qui essere aperta una parentesi relativa alle directory: di norma, se siete sicuri di poter elimimare una directory non vuota, potete utilizzare il comando

rm -rf directory

che forza l'eliminazione della directory 'directory' e dei suoi contenuti. Per eliminare una directory vuota, si usa invece il comando:

rmdir directory

A volte, però, tale comando non sembra sortire gli effetti desiderati: nonostante la directory sembri vuota, quanto scritto sopra ci restituisce un errore, dove il sistema si lamenta perchè esistono dei file all'interno della directory che vogliamo eliminare.

Accade spesso, infatti, che per controllare il contenuto di una directory si usi solamente ls che, per sua natura, non visualizza i file nascosti! A questo punto si può procedere in due modi: entrare nella directory e cancellare tali file oppure, se si è sicuri che i file nascosti all'interno di tale directory non sono importanti, si può procedere con rm -rf.

mkdir

Come ultima cosa, vediamo come creare le directory: il comando è mkdir, la cui sintassi è:

mkdir directory                (per creare una directory)
mkdir directory1 .. directoryN (per creare più directory)

Vediamo un esempio: nella nostra home directory, supponiamo /home/utente, è presente la directory "dir" e vogliamo creare "sottodir" come sottodirectory della precedente. La prima cosa che viene in mente di fare è di entrare in "dir" e lanciare il comando:

mkdir sottodir

È però possibile, e anche molto più comodo, utilizzare direttamente il comando:

mkdir dir/sottodir

con una sola attenzione: il comando

mkdir dir/sottodir sottodir2 sottodir3

non fa quello che ci si potebbe aspettare, ossia creare sottodir, sottodir2 e sottodir3 come sottodirectory di dir; quello che qui accade, invece, è la creazione di sottodir come sottodirectory di dir e la creazione di sottodir2 e sottodir3 allo stesso livello di dir!

Quindi, per non dover scrivere:

mkdir dir/sottodir dir/sottodir2 dir/sottodir3

in questo caso è più comodo entrare in dir e lanciare:

mkdir sottodir sottodir2 sottodir3

Con queste nozioni, potrete certamente iniziare a fare gli esperimenti sulla creazione, rimozione e spostamento di file e directory. Permetteteci però qualche consiglio:

  • utilizzate touch per creare file vuoti con cui operare; il comando touch file crea il file vuoto file; utilizzate invece il comando mkdir (mkdir nomedirectory) per la creazione delle directory
  • spostatevi in /tmp per le prove; è più sicuro e vi eviterà di lasciare file e directory inutili sparsi per il filesystem o, peggio, di eliminare file importanti o di sistema per qualche disattenzione
  • non, ripeto, NON utilizzate l'utente root per queste prove: uno stupido errore di digitazione può, come si dice in gergo, "rasare" un intero filesystem!

In conclusione, ricordiamo che tutti i comandi fino a qui visti permettono di specificare caratteri jolly, quali ad esempio l'asterisco o il punto di domanda. Ad esempio:

rm ab*

rimuoverà tutti i file il cui nome inizia con "ab" seguiti da zero o più caratteri. Invece, il comando:

rm ab?

eliminerà tutti i file il cui nome inizia con ab seguiti da un qualsiasi carattere.

Ti consigliamo anche