Questa sera iniziamo a vedere i primi comandi che ci permettono di interagire con la shell linux per la gestione dei file1…
![]()
in particolare vedremo l’utilizzo dei comandi:
| ls | elenca i file contenuti in una directory |
| cp | Copia un file |
| mv | Rinomina o sposta un file |
| rm | Rimuove un file |
| ln | Crea un collegamento ad un file |
| ls [opzioni] [files] | coreutils |
/bin | stdin stdout -file --opt --help --version |
Il comando ls elenca tutti i file contenuti in una directory, con il comando semplice, quindi senza opzioni, otterremo la lista di file e directory contenute nella posizione corrente.
Possiamo anche chiedere ad ls di elencarci i file contenuti all’interno di un determinato percorso, inserendolo dopo ls:
$ ls dir1
$ ls /dir1/dir2
Tra tutte le opzioni disponibili con ls, che verranno elencate dopo, le più importanti sono -a e -l, vediamo perchè:
Di default ls nasconde i file che iniziano con un . (punto), in quanto in ambiente linux sono file da considerare come “nascosti”; utilizzando -a otterremo l’elenco completo dei file, inclusivo dei file nascosti. Mentre con -l otterremo un elenco più dettagliato con (nell’ordine) tipologia di file, permessi, utenti e gruppi assegnati, dimensioni e data di ultima modifica/accesso.
-rw-r–r– 1 root root 6925 Apr 30 15:02 pkg
Ecco quindi tutte le opzioni disponibili per questo comando:
| Opzioni Utili | |
| -a | Elenca tutti i file compresi quelli il cui nome inizia con un punto |
| -l | Elenco esteso, completo degli attributi dei file, se si aggiunge l’opzione -h vengono visualizzate le dimensioni in Kilobyte, Megabyte, Gigabyte anziche in bytes. |
| -F | Aggiunge alcuni simboli ai nomi per identificare i files: “/” per le directory, “*” per gli eseguibili, “@” per il link simbolici, “|” alle pipe con nome, “=” ai socket. |
| -i | Prepone gli inode dei files. |
| -s | Prepone le dimensioni in blocchi |
| -R | Elenca il contenuto ricorsivamente (per le directory) |
| -d | Elenca solo il nome delle directory e non il contenuto. |
| cp [opzioni] files (file|dir) | coreutils |
/bin | stdin stdout -file --opt --help --version |
Il comando cp copia un file in un altro:
$ cp file1 file2
oppure più file in una directory:
$ cp file1 file2 file3 dir
Utilizzando le opzioni -a e -r, possiamo copiare in maniera ricorsiva le directory.
| Opzioni Utili | |
| -p | Copia non solo il contenuto, ma anche i permessi, il timestamp ed owner e gruppo. |
| -a | E’ una combinazione delle opzioni -R -p e -d. la prima per copiare in maniera ricorsiva una directory, la seconda per copiare anche i permessi dei files, e la terza per i link tra i files. |
| -i | Modalità interattiva, chiede conferma prima di sovrascrivere i files. |
| -f | Forza la copia, se un file di destinazione già esiste viene copiato incondizionatamente. |
| mv [opzioni] sorgente destinazione | coreutils |
/bin | stdin stdout -file --opt --help --version |
Il comando mv può semplicemente rinominare un file:
$ mv file1 file2
oppure può spostare files e directory in un altra directory di destinazione:
$ mv file1 file2 file3 dir4 dir5 dir_destinazione
Per questo comando abbiamo solo -i e -f come opzioni che sono analoghe a quelle del comando cp.
| rm [opzioni] files|directory | coreutils |
/bin | stdin stdout -file --opt --help --version |
con rm cancelliamo invece i files
$ rm file1 file2
oppure
$ rm -r dir1 dir2
Qui oltre ad -i e -f, come abbiamo appena visto, possiamo utilizzare anche -r per agire ricorsivamente sulle directory.
| ln [opzioni] sorgente destinazione | coreutils |
/bin | stdin stdout -file --opt --help --version |
Con Linux possiamo effettuare, come su windows, dei collegamenti ai files; solo che a differenza di questo sistema, su linux vengono chiamati link.
Un link è un riferimento, per l’appunto, ad un altro file e viene creato mediante il file ln.
I link si dividono in due tipi, softlink o anche link simbolici, che fanno riferimento al file tramite il suo percorso:
$ ln -s file1 softlink
Bisogna fare attenzione ai link simbolici, in quanto se cancelliamo “file”, softlink punterà ad un percorso non valido e quindi sarà un link orfano.
Un hard link invece è una specie di copia di un file,2 a dir la verità effettivamente l’hard link è semplicemente un secondo nome dato ad un file, esso non punta al percorso come il simbolico, ma punta al suo iNode,3 ciò rende possibile la cancellazione del file “padre” senza comportare un errore con il link rendendo questo orfano:
$ ln file hardlink
Perchè utilizzare uno piuttosto che un altro? Non c’è una regola precisa, il tutto va in base alle proprie esigenze, bisogna tenere conto infatti che un link simbolico, che in quanto tale fa riferimento al percorso assoluto del file padre, può effere piazzato in qualsiasi partizione/dispositivo; un hard link invece no, in quanto facente riferimento all’inode del file padre, che non avrebbe significato in un altra partizione o disco.
Un link simbolico può puntare ad una directory, un hard link invece è possibile puntarlo ad essa solo se si è il superutente.
| Opzioni Utili | |
| -s | Crea un link simbolico, senza questa opzione di default viene creato un link fisico. |
| -i | Modalità interattiva, Chiede conferma prima di sovrascrivere i file di destinazione. |
| -f | Condizione forzata, se il link di destinazione esiste lo sovrascrive incondizionatamente. |
| -d | Permette ad un superutente di creare un hard link ad una directory |
Per sapere dove punta un link simbolico possiamo utilizzare uno dei due seguenti comandi:
$ readlink link1
$ ls -l link
- Per file intenderemo sia il vero e proprio file che le directory [↩]
- Comunicazione di servizio ai puristi del settore: lo so che non è una copia, ho fatto un esempio per rendere più pratica e facile la comprensione [↩]
- Nei sistemi Unix un inode è una struttura dati sul file system che archivia le informazioni base dei file, delle cartelle o di qualsiasi altro oggetto. Le informazioni includono:
* la dimensione del file e la sua locazione fisica (se risiede su un dispositivo a blocchi come, ad es., un hard disk)
* il proprietario e il gruppo di appartenenza
* le informazioni temporali di creazione, modifica e ultimo accesso
* il numero di collegamenti fisici che referenziano l’inode
* i permessi d’accessoIl termine inode normalmente si usa sui dispositivi a blocchi che gestiscono file, cartelle e collegamenti simbolici. Il concetto è particolarmente importante quando è necessario ripristinare un file system danneggiato.
Ogni inode ha associato un numero univoco all’interno del dispositivo e ogni file presente è identificato come un collegamento fisico all’inode tramite il suo numero. Quando un programma cerca di accedere ad un file tramite un nome (es. documento.txt), il sistema operativo cerca l’inode corrispondente e recupera tutte le informazioni sopra descritte per operare correttamente con il file.
Per recuperare le informazioni sull’inode dei file si può usare la chiamata di sistema stat.
From Wikipedia. [↩]
| |














Grazie!
forse è colpa del Grazie!
forse è colpa del mouse…ma mi ero scordato della possibilità di poter concatenare più file per la copia…la pigrizia è una brutta bestia!
p.s.:Se divento un fondamentalista della tastiera e tutta colpa tua M0rF3uS!

Lo scopo di queste guide è Lo scopo di queste guide è proprio questo ehehe, quando a causa dell’abitudine premerete il tasto tab per completare il nome….mentre scrivete un wordpad e tirate un pugno sulla tastiera bestemmiando perchè il pc non capisce che parola state pensando (indovina un pò…proprio come faccio io eheh) sarò soddisfatto
Ennesimi complimenti per la Ennesimi complimenti per la guida,
apprezzo anche il formato più “compatto”,
forse nei primi capitoli avevi messo troppa carne al fuoco
Ho letto la nota numero due,
però pur non essendo un purista del settore
secondo me ti converrebbe proprio togliere l’analogia,
dell’hard link con la copia di un file,
qualcuno potrebbe pensare che creando un link fisico all’iso di un cd
si vadano ad impiegare altri 700 MB di spazio su disco
Altro appunto (sì, oggi sono in vena di polemiche che noi NIW abbiamo perso una
pcw di lega su urt e mi rode)
le note scrivile con una dimensione del font più grande,
ca mi staju ‘ncecannu!!!)
Ancora complimenti.