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

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 47: Riga 47:
con cui si potranno visualizzare i file nascosti (<code>a</code>) e produrre un listato (<code>l</code>) con diversi dettagli utili (permessi di lettura/scrittura/esecuzione, utente e gruppo proprietari, dimensione, data di ultima modifica, ecc... )
con cui si potranno visualizzare i file nascosti (<code>a</code>) e produrre un listato (<code>l</code>) con diversi dettagli utili (permessi di lettura/scrittura/esecuzione, utente e gruppo proprietari, dimensione, data di ultima modifica, ecc... )


== Creare una directory ('''mkdir''') ==
=== Visualizzare la struttura di una directory ('''tree''') ===
Per creare una directory da terminale, dobbiamo spostarci dentro la directory nella quale desideriamo creare la nuova directory, e digitare:
<pre>
mkdir NuovaCartella
</pre>
Se volessimo creare in un colpo solo la directory “NuovaCartella” e subito al suo interno la directory “sottocartella” scriviamo:
<pre>
mkdir NuovaCartella/sottocartella
</pre>
 
== Visualizzare la struttura di una directory ('''tree''') ==
<code>tree</code> è un comando shell che ha il compito di listare ad albero una data directory. Bisogna prima installare l'omonimo pacchetto: <pre>
<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
# apt install tree
Riga 79: Riga 69:
</pre>
</pre>


== Creare una directory ('''mkdir''') ==
Per creare una directory da terminale, dobbiamo spostarci dentro la directory nella quale desideriamo creare la nuova directory, e digitare:
<pre>
mkdir NuovaCartella
</pre>
Se volessimo creare in un colpo solo la directory “NuovaCartella” e subito al suo interno la directory “sottocartella” scriviamo:
<pre>
mkdir NuovaCartella/sottocartella
</pre>
== Rinominare/Spostare ('''mv''') ==
== Rinominare/Spostare ('''mv''') ==


Riga 221: Riga 221:
less filename.txt
less filename.txt
</pre>
</pre>
== Modificare l'ora di accesso a un file ('''touch''') ==
<code>touch</code> è un comando shell che modifica l'orario di accesso o/e modifica di un file (il cosiddetto '''timestamp'''). I file vengono modificati con l'orario corrente. La sintassi del comando è:
<pre>
touch [-acfm] [-r file][-t orario_decimale] [-d orario]
[--time={atime,access,use,mtime,modify}][--date=orario][--reference=file]
[--no-create] [--help] [--version] [--] file...
</pre>
Le opzioni che possiamo passare al comando sono:
* <code>-a</code>: Cambia l'ora di accesso di file.
* <code>-c</code>: Non crea file.
* <code>-m</code>: Cambia l'ora di modifica di file.
* <code>-r ref_file</code>: Usa i corrispondenti orari di ref_file come i nuovi valori per gli orari da cambiare.
* <code>-t orario</code>: Usa l'orario specificato come nuovo valore per gli orari cambiati. L'argomento è un numero decimale nella forma [[SS]AA]MMGGoomm[.ss]
* <code>-d, --date=orario</code>: Usa orario al posto dell'ora corrente. Può contenere il nomi di mese, fusi orari, «am» e «pm», ecc.


== Confrontare due file ('''diff''') ==
== Confrontare due file ('''diff''') ==
Riga 235: Riga 250:
* <code>-c</code>: Usa il formato «a contesto» (context output, in inglese).
* <code>-c</code>: Usa il formato «a contesto» (context output, in inglese).
* <code>-d</code>: Usa un algoritmo diverso per trovare un, probabilmente, minore insieme di modifiche da fare. Questo rende diff più lento (a volte molto più lento).
* <code>-d</code>: Usa un algoritmo diverso per trovare un, probabilmente, minore insieme di modifiche da fare. Questo rende diff più lento (a volte molto più lento).
== Cambiare permessi ('''chmod''') ==
Può succedere di aver bisogno di dover cambiare i permessi ad un file (o cartella), per consentire la lettura, la scrittura o l’esecuzione ad ogni utente, oppure al contrario per proteggerlo da utilizzi indesiderati e restringerlo ad un particolare utente o gruppo.<br/>
Il comando da utilizzare per queste operazioni è <code>chmod</code>.<br/>
I permessi <code>chmod</code> sono tipicamente utilizzati dai sistemi operativi UNIX e Linux. Non sono altro che le linee guida che vengono impartite al sistema sugli accessi o non accessi ad una data directory e/o file. Questi sistemi operativi offrono la possibilita di operare con un file facendo la distinzione fra 3 tipi di operatori: Proprietario (User), Gruppo (Group), Pubblici (Others). Per ciascuno di questi utenti é necessario specificare i diversi permessi riguardanti la directory e/o il file in questione. I permessi sono generalmente indicati da alcuni numeri, ovvero:
* Lettura : permetti l'acceso al file ( 4 )
* Scrittura : permetti le modifiche del file da parte di un utente ( 2 )
* Esecuzione : permetti di eseguire lo script ( 1 )
Questi 3 permessi devono essere indicati per ognuno dei 3 tipi di utenti. Ad esempio <code>chmod 755</code>, non é altro che il tipo di permesso che si imposta ad un file, rendendolo:
* leggibile-scrivibile-eseguibile al proprietario
* leggibile-eseguibile al gruppo
* 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 754</code> significa quanto segue:
* Utente proprietario
<pre>
Totale (7) = Lettura (4, cioè sì) + Scrittura (2, cioè sì) + Esecuzione (1, cioè sì)
</pre>
* Utenti appartenenti al gruppo:
<pre>
Totale (5) = Lettura (4, cioè sì) + Scrittura (0, cioè no) + Esecuzione (1, cioè sì)
</pre>
* Altri utenti:
<pre>
Totale (4) = Lettura (4, cioè sì) + Scrittura (0, cioè no) + Esecuzione (0, cioè no)
</pre>
Affiancando i tre totali si ottiene il permesso 755.
<br/>
Per cambiare i permessi al file "testo.txt" dovremo quindi agire da autori del file e digitare:
<pre>
chmod xxx testo.txt
</pre>
{{Box|Nota|Nel caso di directory il permesso di esecuzione deve esserci sempre, ovvero se si vuole che il contenuto di una cartella sia visibile il permesso da attribuire sarà '''5''' e non '''4'''}}
Al posto delle lettere <code>xxx</code> devono essere indicati i numeri ottali visti in precedenza. Ad esempio:
* 755 – Lettura, scrittura, esecuzione per il proprietario, lettura, esecuzione per il gruppo ed altri utenti.
* 644 – Lettura, scrittura per il proprietario, lettura per il gruppo ed altri utenti.
* 666 – Lettura e scrittura per tutti.
* 700 – Lettura, scrittura, esecuzione per il proprietario, nessun permesso per il gruppo ed altri.
In generale valori che vanno da "0" a "7" rappresentano in forma numerica i permessi come di seguito riportato:
<pre>
4 è uguale a lettura(r),
2 è uguale a scrittura(w),
1 è uguale a esecuzione(x),
0 rimuove i permessi.
</pre>
Il valore numerico risultante è pari alla somma di tali valori.<br>
Partendo sempre da sinistra, la prima cifra si riferisce ai permessi per l'utente proprietario.<br>
La seconda cifra fa riferimento ai permessi per il gruppo proprietario.<br>
La terza e ultima cifra si riferisce ai permessi per gli altri utenti non appartenenti al gruppo proprietario.<br>
Un'altra sintassi utilizzabile è:
<pre>
chmod u|g|o|a|+rwx file1/directory1
</pre>
Significato delle opzioni disponibili del precedente comando:
u = user - applica i permessi all'utente proprietario del file,
g = group - applica i permessi al gruppo proprietario del file,
o = other - applica i permessi ad altri utenti,
a = all - applica i permessi a tutti gli utenti,
+ = questo operatore logico aggiunge i permessi specificati,
- = questo operatore logico rimuove i permessi specificati,
r = indica il permesso di lettura,
w = indica il permesso di scrittura,
x = indica il permesso di esecuzione.
== Cambiare proprietario ==
=== '''chown''' ===
Per cambiare l'utente e il gruppo proprietari di ciascun file dato (specificato dal primo argomento che non sia un'opzione) si utilizza il comando <code>chown</code> nel seguente modo: se viene dato solo un nome utente (o una user ID numerica), quell'utente diventa proprietario di ciascun file dato, il cui gruppo non viene modificato. Se il nome utente è seguito da <code>:</code> e un nome di gruppo (o una group ID numerica), senza spazi frapposti, allora anche il gruppo proprietario del file viene cambiato.<br>
La sintassi del comando è:
<pre>
chown [opzioni] utente[:gruppo] file...
</pre>
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 ====
* Cambiare il proprietario del file <code>prova.txt</code>
<pre>
# chown ferdy prova.txt
</pre>
* Cambiare proprietario e gruppo proprietario del file <code>prova.txt</code>
<pre>
# chown ferdy:gruppo_desiderato prova.txt
</pre>
* Cambiare ricorsivamente il proprietario di tutti i file della directory <code>prova</code>
<pre>
# chown -R ferdy prova/
</pre>
=== '''chgrp''' ===
Per cambiare il gruppo proprietario si utilizza il comando <code>chgrp</code>. Il gruppo può essere identificato col nome o con l'ID. La sintassi del comando è:
<pre>
chgrp [opzioni] gruppo file...
</pre>
Ad esempio, per cambiare il gruppo proprietario di tutti i file contenuti nella directory <code>prova</code> si digiti:
<pre>
chgrp -R gruppo_voluto prova/
</pre>
Per motivi di sicurezza, possono cambiare il gruppo di un file soltanto root oppure un utente che è sia proprietario del file sia membro del gruppo scelto.


== Comprimere file e directory ==
== Comprimere file e directory ==
Riga 363: Riga 500:
<br/><br/>
<br/><br/>
''(Grazie a [http://nerotux.tuxfamily.org Nerotux] per gli esempi sull'utilizzo di tar)''
''(Grazie a [http://nerotux.tuxfamily.org Nerotux] per gli esempi sull'utilizzo di tar)''
== Modificare l'ora di accesso a un file ('''touch''') ==
<code>touch</code> è un comando shell che modifica l'orario di accesso o/e modifica di un file (il cosiddetto '''timestamp'''). I file vengono modificati con l'orario corrente. La sintassi del comando è:
<pre>
touch [-acfm] [-r file][-t orario_decimale] [-d orario]
[--time={atime,access,use,mtime,modify}][--date=orario][--reference=file]
[--no-create] [--help] [--version] [--] file...
</pre>
Le opzioni che possiamo passare al comando sono:
* <code>-a</code>: Cambia l'ora di accesso di file.
* <code>-c</code>: Non crea file.
* <code>-m</code>: Cambia l'ora di modifica di file.
* <code>-r ref_file</code>: Usa i corrispondenti orari di ref_file come i nuovi valori per gli orari da cambiare.
* <code>-t orario</code>: Usa l'orario specificato come nuovo valore per gli orari cambiati. L'argomento è un numero decimale nella forma [[SS]AA]MMGGoomm[.ss]
* <code>-d, --date=orario</code>: Usa orario al posto dell'ora corrente. Può contenere il nomi di mese, fusi orari, «am» e «pm», ecc.


== Creare un collegamento ('''ln''') ==
== Creare un collegamento ('''ln''') ==
Riga 407: Riga 529:
</pre>
</pre>


== Cambiare i permessi ('''chmod''') ==
== Ricerca di file nel sistema ('''Locate''') ==
Può succedere di aver bisogno di dover cambiare i permessi ad un file (o cartella), per consentire la lettura, la scrittura o l’esecuzione ad ogni utente, oppure al contrario per proteggerlo da utilizzi indesiderati e restringerlo ad un particolare utente o gruppo.<br/>
Il comando da utilizzare per queste operazioni è <code>chmod</code>.<br/>
I permessi <code>chmod</code> sono tipicamente utilizzati dai sistemi operativi UNIX e Linux. Non sono altro che le linee guida che vengono impartite al sistema sugli accessi o non accessi ad una data directory e/o file. Questi sistemi operativi offrono la possibilita di operare con un file facendo la distinzione fra 3 tipi di operatori: Proprietario (User), Gruppo (Group), Pubblici (Others). Per ciascuno di questi utenti é necessario specificare i diversi permessi riguardanti la directory e/o il file in questione. I permessi sono generalmente indicati da alcuni numeri, ovvero:
* Lettura : permetti l'acceso al file ( 4 )
* Scrittura : permetti le modifiche del file da parte di un utente ( 2 )
* Esecuzione : permetti di eseguire lo script ( 1 )
Questi 3 permessi devono essere indicati per ognuno dei 3 tipi di utenti. Ad esempio <code>chmod 755</code>, non é altro che il tipo di permesso che si imposta ad un file, rendendolo:
* leggibile-scrivibile-eseguibile al proprietario
* leggibile-eseguibile al gruppo
* 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 754</code> significa quanto segue:
* Utente proprietario
<pre>
Totale (7) = Lettura (4, cioè sì) + Scrittura (2, cioè sì) + Esecuzione (1, cioè sì)
</pre>
* Utenti appartenenti al gruppo:
<pre>
Totale (5) = Lettura (4, cioè sì) + Scrittura (0, cioè no) + Esecuzione (1, cioè sì)
</pre>
* Altri utenti:
<pre>
Totale (4) = Lettura (4, cioè sì) + Scrittura (0, cioè no) + Esecuzione (0, cioè no)
</pre>
Affiancando i tre totali si ottiene il permesso 755.
<br/>
Per cambiare i permessi al file "testo.txt" dovremo quindi agire da autori del file e digitare:
<pre>
chmod xxx testo.txt
</pre>
{{Box|Nota|Nel caso di directory il permesso di esecuzione deve esserci sempre, ovvero se si vuole che il contenuto di una cartella sia visibile il permesso da attribuire sarà '''5''' e non '''4'''}}
Al posto delle lettere <code>xxx</code> devono essere indicati i numeri ottali visti in precedenza. Ad esempio:
* 755 – Lettura, scrittura, esecuzione per il proprietario, lettura, esecuzione per il gruppo ed altri utenti.
* 644 – Lettura, scrittura per il proprietario, lettura per il gruppo ed altri utenti.
* 666 – Lettura e scrittura per tutti.
* 700 – Lettura, scrittura, esecuzione per il proprietario, nessun permesso per il gruppo ed altri.
In generale valori che vanno da "0" a "7" rappresentano in forma numerica i permessi come di seguito riportato:
<pre>
4 è uguale a lettura(r),
2 è uguale a scrittura(w),
1 è uguale a esecuzione(x),
0 rimuove i permessi.
</pre>
Il valore numerico risultante è pari alla somma di tali valori.<br>
Partendo sempre da sinistra, la prima cifra si riferisce ai permessi per l'utente proprietario.<br>
La seconda cifra fa riferimento ai permessi per il gruppo proprietario.<br>
La terza e ultima cifra si riferisce ai permessi per gli altri utenti non appartenenti al gruppo proprietario.<br>
Un'altra sintassi utilizzabile è:
<pre>
chmod u|g|o|a|+rwx file1/directory1
</pre>
Significato delle opzioni disponibili del precedente comando:
u = user - applica i permessi all'utente proprietario del file,
g = group - applica i permessi al gruppo proprietario del file,
o = other - applica i permessi ad altri utenti,
a = all - applica i permessi a tutti gli utenti,
+ = questo operatore logico aggiunge i permessi specificati,
- = questo operatore logico rimuove i permessi specificati,
r = indica il permesso di lettura,
w = indica il permesso di scrittura,
x = indica il permesso di esecuzione.
 
== Cambiare proprietario ==
 
=== '''chown''' ===
Per cambiare l'utente e il gruppo proprietari di ciascun file dato (specificato dal primo argomento che non sia un'opzione) si utilizza il comando <code>chown</code> nel seguente modo: se viene dato solo un nome utente (o una user ID numerica), quell'utente diventa proprietario di ciascun file dato, il cui gruppo non viene modificato. Se il nome utente è seguito da <code>:</code> e un nome di gruppo (o una group ID numerica), senza spazi frapposti, allora anche il gruppo proprietario del file viene cambiato.<br>
La sintassi del comando è:
<pre>
chown [opzioni] utente[:gruppo] file...
</pre>
 
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 ====
* Cambiare il proprietario del file <code>prova.txt</code>
<pre>
# chown ferdy prova.txt
</pre>
* Cambiare proprietario e gruppo proprietario del file <code>prova.txt</code>
<pre>
# chown ferdy:gruppo_desiderato prova.txt
</pre>
* Cambiare ricorsivamente il proprietario di tutti i file della directory <code>prova</code>
<pre>
# chown -R ferdy prova/
</pre>
 
=== '''chgrp''' ===
Per cambiare il gruppo proprietario si utilizza il comando <code>chgrp</code>. Il gruppo può essere identificato col nome o con l'ID. La sintassi del comando è:
<pre>
chgrp [opzioni] gruppo file...
</pre>
Ad esempio, per cambiare il gruppo proprietario di tutti i file contenuti nella directory <code>prova</code> si digiti:
<pre>
chgrp -R gruppo_voluto prova/
</pre>
 
Per motivi di sicurezza, possono cambiare il gruppo di un file soltanto root oppure un utente che è sia proprietario del file sia membro del gruppo scelto.
 
== Ricerca di file nel sistema ==
Se siamo alla ricerca di un determinato file all’interno del nostro computer, il mio consiglio è andare su Risorse e selezionare Cerca file. In questo modo il processo sarà più rapido e meno macchinoso, ma in questa guida siamo qui per vedere come è possibile farlo anche da terminale.<br>
Se siamo alla ricerca di un determinato file all’interno del nostro computer, il mio consiglio è andare su Risorse e selezionare Cerca file. In questo modo il processo sarà più rapido e meno macchinoso, ma in questa guida siamo qui per vedere come è possibile farlo anche da terminale.<br>
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:
3 084

contributi