Panoramica sui comandi utilizzati per gestire i file: cp, ln, mv, rm, chmod e touch
Per gestire i file in Unix vengono messi a disposizione i seguenti comandi:
cp [opzioni][name...] target
Le opzioni per il comando cp sono:
- -r se sono indicate due directory, copia ricorsivamente tutto il contenuto della prima directory nella seconda;
- -i consente di visualizzare un messaggio di conferma se qualche file o directory preesistente nella directory di destinazione deve essere sostituito.
Ecco un esempio di come copiare un file in una directory:
Specificando più file o directory, saranno copiati tutti nella directory di destinazione. Ad esempio per copiare il file /myOldDir/myFile.back e la directory myDir (e tutto il suo contenuto) in una nuova directory (myNewDir), scriveremo:
Specificando il nome di due file, il contenuto del primo verrà copiato nel secondo:
ln [opzioni] sorgente destinazione
Se vengono specificati più argomenti, la destinazione deve essere una directory esistente e i link creati avranno lo stesso nome dei file sorgenti. Di default il tipo di link creato è di tipo hard e funziona solo se ci si trova nello stesso file system, con il flag -s è di tipo soft e si può fare riferimento anche a file system differenti.Ecco come creare un collegamento tra il file1 e il file2:
$ ln file1 file2
mv [opzioni] source...destination
Se vengono specificati solo i nomi di due elementi, source viene rinominato in destination, oppure in destination/source, a seconda che destination indichi un file o una directory. Qualora destination denoti un file preesistente questo non sarà più accessibile come tale e non sarà più accessibile in alcun modo se destination era il suo unico nome.
Se vengono indicati più di due elementi e la destinazione è una directory, i file saranno rinominati in destinazione/nomeFile. Qualora source e destination si trovano in file system differenti, il comando sposta solo i file ordinari e non i collegamenti e directory.
Un’opzione del comando mv è la seguente -i che consente di chiedere conferma all’utente qualora destination sia un file preesistente.
Un esempio del comando mv per rinominare un file:
Per spostare un file in una nuova cartella:
rm [opzioni]
Le opzioni:
- -r consente di eliminare ricorsivamente una o più directory con i loro contenuti;
- -i chiede conferma prima di rimuovere ogni file.
Per eliminare ricorsivamente una o più directory la struttura del comando rm è la seguente:
Per eliminare due file:
Per eliminare una diretory e il suo contenuto previa conferma:
Per eliminare tutti i file e cartelle a partire dalla directory corrente:
chmod [opzioni] file
I permessi possono essere espressi in forma ottale o simbolica. In quest’ultimo caso, la stringa dei beneficari, costuita da:
- u per user
- g per group
- o per other
verrà separta dalla stringa dei permessi:
- r per read
- w per write
- x per execute
Utilizzando i segni + o –, dove + indica l’aggiunta di un persone, – se il permesso è revocato. Per assegnare più permessi a beneficiari differenti si può utilizzare una virgola per separarli. Ad esempi, per assegnare agli utenti i permessi di lettura, e al gruppo e agli altri tutti i permessi, scriveremo:
Un’opzione del comando chmode è -R ch opera ricorsivamente sulla directory e sulle sue sotto directory. Per togliere il permesso di scrittura agli utenti che hanno accesso alla directory myDir e a tutte le sue subdirectory:
Nella forma simbolica per assegnare ad un file i permessi di rwxr-xr-x:
touch [opzioni] [data/ora]
Se il file non esiste viene creato un file vuoto. I parametri del comando touch sono:
- -1 per cambiare solo la data e l’ora di ultimo accesso;
- -m per cambiare solo la data e l’ora di ultima modifica;
- c se file non esiste non viene creato.
Ecco un esempio di come modificare la data/ora di ultimo accesso ad un file, se il file non esiste non verrà creato un nuovo file:
Ecco come aggiornare la data a tutti i file *.txt.
Ecco l’indice degli articoli sui comandi Unix: