3 581
contributi
m (verifica, modifiche minori per via di comandi non presenti di default) |
|||
(7 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> | ||
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 | ln -s testo.txt mylink.txt | ||
</pre> | </pre> | ||
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 | 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 | # 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: | ||
<pre> | <pre> | ||
# updatedb | |||
</pre> | </pre> | ||
Attendiamo che l’aggiornamento sia terminato, e poi lanciamo: | Attendiamo che l’aggiornamento sia terminato, e poi lanciamo: | ||
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 | # 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 | |||
</pre> | </pre> | ||
Le opzioni usate hanno il seguente significato: | Le opzioni usate hanno il seguente significato: | ||
* <code>- | * <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 | Maggiori informazioni [[Rsync | qui]]. | ||
[[Categoria:Shell]][[Categoria:Programmi da terminale]] | [[Categoria:Shell]][[Categoria:Programmi da terminale]] |
contributi