Guida ai comandi da terminale - Gestione di file e directory: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
verifica, modifiche minori per via di comandi non presenti di default
m (verifica, modifiche minori per via di comandi non presenti di default)
 
(6 versioni intermedie di 4 utenti non mostrate)
Riga 56: Riga 56:
mkdir cartella/sottocartella
mkdir cartella/sottocartella
</pre>
</pre>
== Rinominare una directory ==
== Rinominare una directory ==
Rinominare una cartella da terminale è semplice. Se ad esempio dobbiamo assegnare alla directory “cartella” il nuovo nome “directory”, dobbiamo portarci nella directory genitore e scrivere:
Rinominare una cartella da terminale è semplice. Se ad esempio dobbiamo assegnare alla directory “cartella” il nuovo nome “directory”, dobbiamo portarci nella directory genitore e scrivere:
Riga 61: Riga 62:
mv cartella/ directory/
mv cartella/ directory/
</pre>
</pre>
== Spostare (tagliare ed incollare) una directory ==
== Spostare (tagliare ed incollare) una directory ==
Spostare (tagliare ed incollare) una directory da terminale richiede un solo semplice comando. Supponiamo di avere la seguente struttura:
Spostare (tagliare ed incollare) una directory da terminale richiede un solo semplice comando. Supponiamo di avere la seguente struttura:
Riga 105: Riga 107:
</pre>
</pre>
L'opzione <code>-r</code> permette di estendere ricorsivamente l'opzione di copia alle eventuali sottodirectory contenute della directory "sottocartella".
L'opzione <code>-r</code> permette di estendere ricorsivamente l'opzione di copia alle eventuali sottodirectory contenute della directory "sottocartella".
== Cancellare una directory vuota ==
== Cancellare una directory vuota ==
Volendo cancellare la directory “cartella”, dobbiamo scrivere:
Volendo cancellare la directory “cartella”, dobbiamo scrivere:
Riga 114: Riga 117:
rmdir: failed to remove `cartella’: La directory non è vuota
rmdir: failed to remove `cartella’: La directory non è vuota
</pre>
</pre>
== Cancellare una directory non vuota ==
== Cancellare una directory non vuota ==
{{Cautionbox|L'opzione <code>-r</code> è in grado di cancellare ricorsivamente ogni file o sottodirectory di "cartella". Prestate attenzione a come utilizzate il comando perché '''non viene chiesta alcuna conferma''' e rischiate di eliminare file o directory di sistema.}}
Volendo cancellare la directory non vuota “cartella” dovremo digitare:
Volendo cancellare la directory non vuota “cartella” dovremo digitare:
<pre>
<pre>
rm -r cartella
rm -r cartella
</pre>
</pre>
L'opzione <code>-r</code> è in grado di cancellare ricorsivamente ogni file o sottodirectory di "cartella". Prestate attenzione a come utilizzate il comando perché '''non viene chiesta alcuna conferma''' e rischiate di eliminare file o directory di sistema.<br/>
Il comando precedente funziona correttamente anche se si vogliono cancellare directory vuote.
Il comando precedente funziona correttamente anche se si vogliono cancellare directory vuote.


== Visualizzare la struttura di una directory ==
== Visualizzare la struttura di una directory ==
<code>tree</code> è un comando shell che ha il compito di listare ad albero una data directory. La sintassi del comando è:
<code>tree</code> è un comando shell che ha il compito di listare ad albero una data directory. Bisogna prima installare l'omonimo pacchetto: <pre>
# apt install tree
</pre>
 
La sintassi del comando è:
<pre>
<pre>
tree [-adfgilnopqrstuxACDFNS][-L level [-R]][-H baseHREF][-T title][-o filename][--nolinks][-P pattern]
tree [ -adfgilnopqrstuxACDFNS ][ -L level [-R] ][ -H baseHREF ][ -T title ][ -o filename ][ --nolinks ][ -P pattern ]
  [-I pattern][--inodes][--device][--nore-port][--dirsfirst][--version][--help][directory ...]
  [ -I pattern ][ --inodes ][--device ][ --nore-port ][ --dirsfirst ][ --version ][ --help ][ directory ... ]
</pre>
</pre>
Alcune delle numerose opzioni che possiamo passare al comando tree sono:
Alcune delle numerose opzioni che possiamo passare al comando tree sono:
Riga 259: Riga 267:


=== Esempi ===
=== Esempi ===
* Comprimere tutte le immagini jpg dentro una directory:
* Comprimere tutte le immagini jpg dentro una directory:
<code>
<code>
Riga 406: Riga 413:


== Creare un collegamento ==
== Creare un collegamento ==
Un collegamento è un particolare tipo di file che non è altro che un rimando ad un altro file o directory. Per creare un collegamento tra file o directory si deve usare il comando <code>ln</code>.
Un collegamento è un particolare tipo di file che non è altro che un rimando ad un altro file o directory. Per creare un collegamento tra file o directory si deve usare il comando <code>ln</code>, di solito con l'opzione <code>-s</code> per creare link simbolici.
<pre>
<pre>
ln -s <file da collegare> <nome del link>
ln -s <file da collegare> <nome del link>
Riga 412: Riga 419:
Supponiamo di avere il file testo.txt nella nostra home e di voler creare un collegamento in <code>usr/bin</code> chiamato "mylink.txt". Scriverò:
Supponiamo di avere il file testo.txt nella nostra home e di voler creare un collegamento in <code>usr/bin</code> chiamato "mylink.txt". Scriverò:
<pre>
<pre>
ln -s /home/ferdy/testo.txt /usr/bin/mylink.txt
ln -s testo.txt mylink.txt
</pre>
</pre>
per prevenire ogni tipo di problema è bene sempre specificare i percorsi assoluti del collegamento e del file (o directory) verso cui creare un collegamento.
 
Su Linux esistono due tipi di collegamenti: Hard link e Symbolic link.
Su Linux esistono due tipi di collegamenti: Hard link e Symbolic link.


=== Hard Link ===
=== Hard Link ===
Sono di fatto una copia di una voce di directory, hanno nomi diversi ma puntano allo stesso inode e quindi condividono esattamente lo stesso dato (oltre agli stessi permessi, data di modifica, owner ecc.).
Sono di fatto una copia di una voce di directory, hanno nomi diversi ma puntano allo stesso inode e quindi condividono esattamente lo stesso dato (oltre agli stessi permessi, data di modifica, owner ecc.). Non c'è modo di distinguere l'originale dal link perché sono la stessa cosa: e per cancellare il file dal file system è necessario eliminare tutti gli hard-link associati allo stesso inode.
 
Sono permessi soltanto per file regolari, non per directory, e soltanto se i file risiedono sullo stesso file system, se li supporta. Sono supportati da ext2/3/4.


=== SymLink ===
=== SymLink ===
Sono dei piccoli file che contengono un puntamento ad altri file o directory. Questi file hanno i-node autonomo e possono puntare a file di altri file system (sia locali, che di rete). Si possono facilmente visualizzare con un normale ls -l e se viene cancellato o spostato il file a cui puntano rimangono "stale": continuano ad esistere ma puntano a qualcosa che non esiste.
Sono dei piccoli file che contengono un puntamento ad altri file regolari o directory. Questi file hanno i-node autonomo e possono puntare a file di altri file system (sia locali, che di rete). Si possono facilmente visualizzare con un normale ls -l e se viene cancellato o spostato il file a cui puntano rimangono "stale": continuano ad esistere ma puntano a qualcosa che non esiste.
<br/>
<br/>
Un symlink appare come avente tutti i permessi aperti a tutti gli utenti, di fatto è trasparente rispetto a permessi e ownership e riflette quelli del file o directory a cui punta.
Un symlink appare come avente tutti i permessi aperti a tutti gli utenti, di fatto è trasparente rispetto a permessi e ownership e riflette quelli del file o directory a cui punta.
Se il file originale è cancellato, o anche solo spostato, l'esistenza di un link simbolico diviene inutile, non è intercambiabile come per gli hard-link. Infatti mentre l'hard-link punta allo stesso inode, un link simbolico punta al percorso del file originale, e nient'altro.
In genere, per prevenire problemi e salvo si necessiti di conservare una copia dell'inode, è quasi sempre consigliabile ricorrere a link simbolici.


== Cambiare i permessi di lettura, scrittura ed esecuzione ==
== Cambiare i permessi di lettura, scrittura ed esecuzione ==
Riga 436: Riga 449:
* leggibile-eseguibile al gruppo
* leggibile-eseguibile al gruppo
* leggibile-eseguibile agli altri utenti
* leggibile-eseguibile agli altri utenti
<br/>
La tabella seguente indica il significato dei singoli valori
{|
|-
! Valore binario (<code>rwx</code>) !! Valore decimale !! Permessi
|-
| 111 || 7 || lettura, scrittura ed esecuzione
|-
| 110 || 6 || lettura e scrittura
|-
| 101 || 5 || lettura ed esecuzione
|-
| 100 || 4 || solo lettura
|-
| 011 || 3 || scrittura ed esecuzione
|-
| 010 || 2 || solo scrittura
|-
| 001 || 1 || solo esecuzione
|-
| 000 || 0 || nessuno
|}
<br/>
Il permesso <code>chmod 755</code> si calcola in questo modo:
Il permesso <code>chmod 755</code> si calcola in questo modo:
<pre>
<pre>
Riga 498: Riga 534:
</pre>
</pre>


Per motivi di sicurezza soltanto con privilegi di root è possibile cambiare il proprietario di un file, a prescindere che sia o meno uno dei propri.
Per motivi di sicurezza soltanto con [[privilegi di amministrazione]] è possibile cambiare il proprietario di un file, a prescindere che sia o meno uno dei propri.


=== Esempi ===
=== Esempi ===
Riga 530: Riga 566:
Il motore di ricerca da terminale si chiama <code>locate</code> e possiamo installarlo normalmente digitando:
Il motore di ricerca da terminale si chiama <code>locate</code> e possiamo installarlo normalmente digitando:
<pre>
<pre>
# apt-get install locate
# apt install locate
</pre>
</pre>
Esso fa uso di un database ad aggiornamenti costanti, ma non frequenti, pertanto se volessimo ricercare un file di recente creazione, spostamento o immissione nel sistema dovremo prima lanciare il comando di update per questo database. Da root o con permessi sudoer aggiungendo “sudo” prima della sintassi digitiamo:
Esso fa uso di un database ad aggiornamenti costanti, ma non frequenti, pertanto se volessimo ricercare un file di recente creazione, spostamento o immissione nel sistema dovremo prima lanciare il comando di update per questo database. Da root o con permessi sudoer aggiungendo “sudo” prima della sintassi digitiamo:
Riga 538: Riga 574:
Attendiamo che l’aggiornamento sia terminato, e poi lanciamo:
Attendiamo che l’aggiornamento sia terminato, e poi lanciamo:
<pre>
<pre>
$ locate testo.txt
locate testo.txt
</pre>
</pre>


Riga 551: Riga 587:
<code>Rsync</code> e' un comando (ed un protocollo) che permette la copia di file via rete, ottimizzando i tempi di backup e ripristino dei dati. Non è presente in un'installazione minimale di Debian; occorre pertanto installarlo col comando:
<code>Rsync</code> e' un comando (ed un protocollo) che permette la copia di file via rete, ottimizzando i tempi di backup e ripristino dei dati. Non è presente in un'installazione minimale di Debian; occorre pertanto installarlo col comando:
<pre>
<pre>
# apt-get install rsync
# apt install rsync
</pre>
</pre>
La sintassi del comando è la seguente:
La sintassi del comando è la seguente:
<pre>
<pre>
# rsync -av --delete /Directory/Sorgente /Directory/Destinazione  
rsync -av --delete /Directory/Sorgente /Directory/Destinazione  
</pre>
</pre>
Le opzioni usate hanno il seguente significato:
Le opzioni usate hanno il seguente significato:
* <code>-avr</code>: specifica di copiare i file mantenendo ownership, permessi e in modalità ''directory recursive''
* <code>-av</code>: specifica di copiare i file mantenendo ownership, permessi e in modalità ''directory recursive''
* <code>--delete</code>: elimina dalla directory di destinazione i file non più presenti nella directory sorgente
* <code>--delete</code>: elimina dalla directory di destinazione i file non più presenti nella directory sorgente
Maggiori informazioni [[Rsync e Grsync | qui]].
Maggiori informazioni [[Rsync | qui]].


[[Categoria:Shell]][[Categoria:Programmi da terminale]]
[[Categoria:Shell]][[Categoria:Programmi da terminale]]
3 581

contributi

Menu di navigazione