diff --git a/lpic/101/013-inode-file.md b/lpic/101/013-inode-file.md new file mode 100644 index 0000000..c707de7 --- /dev/null +++ b/lpic/101/013-inode-file.md @@ -0,0 +1,68 @@ +# Gestione dei file + +`In Linux, tutto è un file`. + +Un file è composto da *contenuto* e *metadati*, che includono dimensione, proprietario, data di creazione e autorizzazioni. I file sono organizzati in *directory*, che sono un tipo specifico di file progettato per contenere altri file. + +Esistono diverse tipologie di file, ciascuna con funzioni distinte: + +- `File regolari`: utilizzati per memorizzare dati o programmi +- `Directory`: contengono altri file e forniscono una struttura gerarchica per l'organizzazione dei dati +- `File speciali`: impiegati per la gestione di 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 presente nel file system è associato a un inode, il quale contiene *metadati essenziali* per la gestione e l'accesso ai dati. 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** 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 +drwxr-xr-x 2 dado dado 4096 21 gen 2024 Documents +drwxr-xr-x 12 dado dado 4096 1 nov 15.40 git +drwxr-xr-x 2 dado dado 4096 17 set 22.55 logs +``` + +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 per la gestione di file e directory + +- `touch`: crea un nuovo file vuoto. Se il file esiste già, aggiorna la data di accesso e modifica +- `cp`: copia un file. Utilizzare l'opzione `-i` per richiedere conferma prima di sovrascrivere un file esistente +- `cp -r`: consente di copiare una directory insieme a tutte le sue sottodirectory e file +- `mv`: sposta o rinomina un file. Utilizzare l'opzione `-i` per richiedere conferma prima di sovrascrivere un file esistente +- `rm`: rimuove un file. Utilizzare l'opzione `-i` per richiedere conferma prima di eliminare un file +- `rm -r`: elimina una directory insieme a tutto il suo contenuto, incluse le sottodirectory +- `mkdir`: crea una nuova directory. Con l'opzione `-p`, è possibile creare una directory insieme a tutte le sue sottodirectory +- `rmdir`: rimuove una directory, ma solo se è vuota. Per rimuovere una directory e tutte le sue sottodirectory, utilizzare l'opzione `-r` + +### File globbing e wildcards + +Il `file globbing` è una funzionalità della shell che consente di rappresentare più nomi di file utilizzando caratteri speciali noti come `wildcards`. + +Esistono tre caratteri jolly in Linux: + +- `*`: rappresenta zero, una o più occorrenze di qualsiasi carattere. Ad esempio, `*.txt` corrisponde a tutti i file con estensione .txt. +- `?`: rappresenta una singola occorrenza di qualsiasi carattere. Ad esempio, `file?.txt` corrisponde a file1.txt, fileA.txt, ma non a file.txt. +- `[]` (caratteri tra parentesi quadre): qualsiasi occorrenza di carattere/i racchiuso/i tra le parentesi quadre sarà considerata una corrispondenza. Ad esempio, `l[ae]st.txt` corrisponde a last.txt e lest.txt. Le parentesi quadre possono includere anche intervalli, come `[A-Z]`, `[0-9]` diff --git a/lpic/101/013_inode_gestione_file.md b/lpic/101/013_inode_gestione_file.md deleted file mode 100644 index bd8a95d..0000000 --- a/lpic/101/013_inode_gestione_file.md +++ /dev/null @@ -1,84 +0,0 @@ -# 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