Gestione di file e directory

Loris Tissino

15 maggio 2009

Il filesystem

Il filesystem dei sistemi Un*x:

Linux

Directory principali

/
|-- bin          programmi eseguibili principali
|-- boot         file per l'avvio del calcolatore
|-- dev          dispositivi
|-- etc          file di configurazione di sistema
|-- home         directory personali degli utenti
|-- lib          librerie
|-- media        dispositivi esterni
|-- mnt          file system subordinati secondari
|-- opt          eseguibili da pacchetti non standard
|-- proc         directory virtuale per i processi
|-- root         directory dell'utente root
|-- sbin         eseguibili per l'amministrazione
|-- sys          directory virtuale per i dispositivi
|-- tmp          directory per file temporanei
|-- usr          documentazione, librerie, programmi
|-- var          dati delle applicazioni

Utenti

Esistono tre categorie di utenti:

(rinvio) Esistono dei meccanismi che consentono a root di delegare altri utenti a compiere delle operazioni.

File per la gestione degli utenti

Tradizionalmente le informazioni sugli utenti del sistema sono mantenuti nei seguenti file:

L'autenticazione può avvenire anche con sistemi diversi da quelli tradizionali (LDAP, SMB, ecc.)

Elenco dei file in una directory

Il comando ls permette di mostrare il contenuto di una directory:

ls      # elenco dei file
ls -l   # elenco con dettagli
ls -a   # mostra anche i file nascosti
ls -F   # mostra il tipo

Altri comandi utili:

tree    # visualizzazione ad albero
find    # ricerca

Creazione e rimozione di una directory

Una directory è, nella sostanza, un file speciale che elenca altri file.

Le directory non vuote possono essere rimosse con la rimozione ricorsiva (rm -rf).

Per spostarsi da una directory ad un'altra, si usa il comando cd.

I percorsi (path) indicati possono essere assoluti (se iniziano dalla radice, ad esempio /var/log) o relativi (ad esempio ../lavori).

Gestione di file

Sui file si possono eseguire molte operazioni.

A differenza che nel mondo dos/windows, l'estensione nel nome di un file non ha significato a livello di sistema, ma solo a livello di singola applicazione.

Si considerano file nascosti quelli il cui nome inizia con un punto.

Espansione dei nomi

Per ottenere più parametri in modo sintetico, la bash offre il meccanismo dell'espansione:

Inoltre, . è un riferimento alla directory corrente, .. è un riferimento alla directory di livello superiore.

Comandi come parametri

A volte è utile poter utilizzare l'output di un comando come lista di parametri di un altro comando.

$ cat elenco
mario giorgio stefania donata
$ mkdir $(cat elenco)
$ mkdir $(date -I)
$ mv $(cat elenco) $(date -I)

Nota: per lo stesso scopo è possibile l'uso del backtick.

Operazioni su molti file/directory contemporaneamente

Molti comandi permettono di operare su diversi file contemporaneamente.

mkdir uno due tre "quattro cinque"
touch pagina{1..40}.html
mkdir -p miadir/{a,b,c}/file{1,2,3,4}

Se il comando accetta un solo parametro, lo si può utilizzare in un ciclo oppure con xargs.

for utente in $(cat elenco); do useradd $utente; done
cat elenco | xargs useradd

Nota: a differenza di quanto accade nel mondo dos/windows, l'espansione è a carico della shell, non del singolo programma.

I nodi indice e altre amenità

(rinvio)

Permessi su file e directory

I permessi vengono gestiti in tre terzetti:

In ogni terzetto sono presenti i seguenti permessi:

Il comando chmod permette di cambiare i permessi.

Esercizi