diff --git a/101/012_elaborare_flussi_di_testo.md b/101/012_elaborare_flussi_di_testo.md index c526e3e..236d228 100644 --- a/101/012_elaborare_flussi_di_testo.md +++ b/101/012_elaborare_flussi_di_testo.md @@ -1,4 +1,4 @@ -## Reindirizzamenti e pipe +# Reindirizzamenti e pipe Tutti i programmi di manipolazione del testo partono da un input standard (`stdin`), lo inviano a un output standard (`stdout`) e inviano eventuali errori a un output degli errori standard (`stderr`). Solitamente, `stdin` e' quello digitato da tastiera. diff --git a/101/013_gestione_file.md b/101/013_gestione_file.md index e69de29..e35ae2a 100644 --- a/101/013_gestione_file.md +++ b/101/013_gestione_file.md @@ -0,0 +1,84 @@ +# Gestione dei file + +*Tutto in LInux e' un file.* + +Un file consiste di contenuto e metadati (dimensione, proprietario, data di creazione, autorizzazioni, ecc). I file sono organizzati in directory, ossia un tipo particolare di file che memorizza altri file. + +Esistono diversi tipi di file: + +- **File regolari**: memorizzano dati e programmi +- **Directory**: contengono altri file +- **File speciali**: utilizzati per input e output + +## Inode + +Gli `inode` (o *index nodes*) sono una struttura dati utilizzata nei file system Unix e Unix-like per gestire le informazioni sui file e le directory. Ogni file o directory nel file system ha un inode associato, che contiene metadati importanti. Ecco alcune delle informazioni che un inode può contenere: + +1. **Tipo di file**: Indica se l'oggetto è un file regolare, una directory, un link simbolico, ecc. +2. **Dimensione del file**: La dimensione totale del file in byte. +3. **Permessi di accesso**: Le autorizzazioni che determinano chi può leggere, scrivere o eseguire il file. +4. **Proprietario e gruppo**: Informazioni su chi possiede il file e a quale gruppo appartiene. +5. **Timestamp**: Diverse informazioni temporali, come la data di creazione, l'ultima modifica e l'ultimo accesso al file. + +## Manipolazione dei file + +### ls + +Nella forma base, `ls` elenca solo i nomi di file e directory. Utilizzando il parametro `-l`, mostra i *permessi* di file e directory, *proprietario*, *dimensione*, *data di ultima modifica*, *ora* e *nome*: + +```bash + > ls -l +totale 148 +drwxr-xr-x 4 dado dado 4096 1 nov 20.07 Applications +drwxr-xr-x 2 dado dado 4096 13 dic 2023 bin +drwxrwxr-x 3 dado dado 61440 3 nov 10.39 Camera +-rw-r--r-- 1 dado dado 623 3 nov 15.05 crontab.bk +drwxr-xr-x 2 dado dado 4096 21 gen 2024 Documents +drwxr-xr-x 2 dado dado 4096 1 nov 22.50 Download +drwxr-xr-x 8 dado dado 24576 3 nov 14.10 Downloads +drwxr-xr-x 12 dado dado 4096 1 nov 15.40 git +drwxr-xr-x 2 dado dado 4096 17 set 22.55 logs +drwxr-xr-x 15 dado dado 4096 1 nov 21.23 Nextcloud +drwxr-xr-x 2 dado dado 4096 1 nov 14.23 scripts +``` + +Il primo carattere nell'output indica il tipo di file: + +- `-`: indica un file regolare +- `d`: una directory +- `c`: un file speciale + +#### Ricorsione + +- `ls -R directory`: elenca il contenuto di una directory e delle sue sottodirectory + +### Altri comandi + +- *touch*: crea un nuovo file vuoto +- *cp*: copia un file. Usare l'opzione `-i` per richiedere la conferma + - *cp -r*: consente di copiare una directory insieme a tutte le sue sottodirectory e file +- *mv*: sposta o rinomina un file. Usare l'opzione `-i` per richiedere la conferma +- *rm*: rimuove un file. Usare l'opzione `-i` per richiedere la conferma + - *rm -r*: elimina una directory insieme a tutto il suo contenuto (incluse le sue sottodirectory) +- *mkdir*: crea una directory. Con l'opzione `-p` e' possibile creare una directory insieme alle varie sottodirectory +- *rmdir*: eliminazione di una directory *non vuota*. Per rimuovere una directory e le sue sottodirectory usare l'opzione `-p` + +### File globbing e Wildcards + +Il `file globbing` e' una funzionalita' della shell che consente di rappresentare piu' nomi di file utilizzando caratteri speciali denominati *wildcards*. + +Esistono tre caratteri jolly in Linux: + +- `*`: rappresenta zero, una o piu' occorrenze di qualsiasi carattere +- `?`: rappresenta una *sola* occorrenza di qualsiasi carattere +- `[]` (caratteri tra parentesi quadre): rappresenta qualsiasi occorrenza di carattere/i racchiuso/i tra le parentesi quadre + +Ad esempio: + +```bash +ls l[aef]st.txt + +# le parentesi [] possono includere anche intervalli, come [A-Z], [0-9] +``` + +Le wildcard (i caratteri jolly) possono essere combinate. \ No newline at end of file