Di recente mi sono imbattuto in alcuni comandi linux durante il login al sito del mio cliente per recuperare il file di log delle attività, e ho anche studiato alcuni dei tipi di file linux, e un semplice comando per sapere quali sono i tipi di file nel sistema operativo Linux.

Linux usa quattro tipi di file di base:

  • file ordinarie
  • directory
  • collegamenti simbolici
  • blocchi e file di dispositivi a carattere

Si determina il tipo di un file lanciando il comando ls -l e leggendo il primo carattere di ogni riga dell’output.
Il tipico output del comando ls è il seguente:

$ ls -l
totale 8
-rw-r-r- 1 root 22 Oct 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 May 5 1998 blockdev
crw-rw-rw- 2 root 5, 0 May 5 1998 characterdev
drwxr-xr-x 2 root 4096 Oct 6 15:33 subdir
lrwxrwx 1 root 11 Oct 6 15:35 symbolic -> anormalfile

I file ordinari iniziano con un trattino (-), le directory iniziano con d, i collegamenti simbolici iniziano con il carattere l, i dispositivi a blocchi sono preceduti dal carattere b, e i dispositivi a caratteri iniziano con la lettera c.

File ordinari
Un file ordinario può consistere in qualsiasi tipo di dati, inclusi programmi eseguibili. La maggior parte dei file nel file system di Linux sono di questo tipo.

Direzioni
Una directory è un file che contiene altri file e directory, e fornisce puntatori ad essi.
Esegue una funzione simile a quella di una cartella in uno schedario, in quanto consente di raggruppare file correlati in modo organizzato. Tuttavia, mentre le cartelle possono normalmente contenere solo file, le directory possono contenere altre directory, spesso indicate come sottodirectory.

Link simbolici
Un link simbolico – o soft – punta al nome e alla posizione di un file completamente separato. Così, quando si apre, si copia, si sposta o si fa riferimento in altro modo al collegamento, l’operazione viene di fatto eseguita sul file di riferimento. Questa distinzione è di solito invisibile all’utente. Se il file di riferimento viene rimosso o rinominato, il collegamento viene interrotto e si verifica un errore se si cerca di aprirlo.

Si possono creare anche collegamenti rigidi. Un hard link punta ai dati effettivi di un file esattamente come fa un file normale. Quindi, a parte il nome, non c’è alcuna differenza tra il file originale e un collegamento rigido che punta agli stessi dati, ed entrambi possono essere considerati come file ordinari. Si può distinguere un hard link da qualsiasi altro file ordinario solo per il numero di collegamenti che ognuno ha. Il numero di collegamenti è visualizzato nel secondo campo di un elenco ls -l. Se questo numero è maggiore di uno, allora sai che ci sono ulteriori collegamenti ai dati.

File di dispositivo
Tutti i dispositivi fisici che Linux usa sono rappresentati da file di dispositivo.
I file di dispositivo possono essere classificati come speciali a caratteri o speciali a blocchi. I file speciali a caratteri rappresentano dispositivi che interagiscono con Linux su una base carattere per carattere, o seriale. Stampanti e terminali sono esempi di questo tipo di dispositivi. I file speciali a blocchi rappresentano dispositivi come dischi rigidi o floppy e CD-ROM, che interagiscono con Linux usando blocchi di dati.

Tutti i file di dispositivo sono contenuti nella directory /dev – per esempio, il file associato alla prima unità floppy del sistema è /dev/fd0.

I file di dispositivo sono estremamente potenti perché permettono agli utenti di accedere a dispositivi hardware come unità disco, modem e stampanti come se fossero file di dati. Pertanto, è possibile spostare, copiare e trasferire dati tra tali dispositivi facilmente, spesso senza dover usare comandi o sintassi speciali.

Nomi di file e nomi di percorso

Ad ogni file viene assegnato un nome di file, che può essere lungo fino a 256 caratteri. Questo nome può consistere in un misto di lettere maiuscole e minuscole, numeri e alcuni segni di punteggiatura come il punto, il trattino o il trattino basso.

Alcuni caratteri non possono essere usati nei nomi dei file. Per esempio, non potete usare caratteri che rappresentano un separatore di campo, come una virgola, o altri caratteri speciali che hanno un significato particolare per la shell. I caratteri speciali che non potete usare sono

! @ # $ % ^ & * ( ) { } ‘ ” / | ; < > ‘

Pathnames
Puoi navigare tra le directory sulla linea di comando usando i pathnames. Per usare i nomi di percorso, devi capire la struttura delle directory del file system di Linux. La directory di livello più alto nel file system di Linux è la directory principale, che è rappresentata da una barra in avanti (/). Sotto la directory principale si trovano le directory di primo livello, seguite da uno o più livelli di sottodirectory.

Struttura dei file di un file system Linux
Puoi spostarti tra le directory usando nomi di percorso relativi o assoluti.

Un nome di percorso relativo inizia con la tua directory corrente. Per esempio, se vuoi passare alla directory delle spese dall’interno della tua home directory, inserisci

cd spese

I nomi di percorso relativi possono iniziare con il nome di un file o di una directory, o con riferimenti simbolici alla directory corrente (.) o alla sua directory madre (..), ma mai con una barra in avanti.

Un semplice esempio di file system Linux
Un pathname assoluto mostra il percorso completo dalla directory principale (/). Per esempio, il seguente comando ti permette di spostarti dalla tua directory corrente direttamente alla sottodirectory applic nella directory usr che si trova sotto la directory principale:

cd /usr/applic

Inodi, blocchi e file speciali

Inodi
Ad ogni file è assegnato un numero di inode unico. Un inode è una struttura che definisce la posizione e gli attributi del file. Puoi controllare il numero di inode di un file usando l’opzione -i con il comando ls. Puoi visualizzare le informazioni che l’inode di un file contiene usando la sintassi stat filename. L’output di questo comando (stat results) mostra le informazioni relative all’inode del file “results”.

$ stat results
File: “results”
Size: 8
Filetype: File regolare
Modo: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Device: 3,7 Inode: 123256 Collegamenti: 1
Accesso: Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modifica: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Modifica: Thu Jul 20 12:35:20 2000 (00077.22:40:47)

In questo esempio, alcuni degli attributi che vengono visualizzati includono il tipo di file, la dimensione del file, l’ID utente del proprietario (UID), il numero di hard link associati ad esso, e i tempi di creazione, accesso e modifica del file.

Un inode non memorizza il nome di un file. I nomi dei file sono memorizzati nelle directory con i loro numeri di inode associati. Nell’esempio del comando stat, il nome del file è ottenuto dal parametro filename che hai inserito.

Blocchi
Nel file system di Linux, i file sono memorizzati in blocchi, che sono segmenti di spazio su disco di dimensioni identiche. Generalmente, la dimensione di un blocco varia da 512 byte a 32 KB, a seconda dell’installazione di Linux. La dimensione massima di un file dipende dalla dimensione del blocco utilizzato nel file system. Per esempio, la dimensione massima di un file per un file system ext2 è di 2 GB se usa blocchi da 512 byte.

I sistemi di disco recuperano i dati in blocchi, quindi più grande è la dimensione del blocco più efficiente è l’accesso. Il problema con la creazione di blocchi grandi è che si può sprecare spazio su disco. Per esempio, se la dimensione del blocco è di 4 KB e la maggior parte dei file contiene solo pochi byte di dati, la maggior parte dei 4096 byte di spazio su disco viene sprecata per ogni file. Ma se rendete le dimensioni dei blocchi piccole, l’accesso al disco sarà relativamente meno efficiente.

Alcuni comandi, come df, emettono informazioni sul disco in blocchi da 1 KB, anche se l’installazione memorizza i file in una dimensione di blocco diversa. Un modo semplice per controllare la dimensione dei blocchi del vostro sistema è usare il comando du per visualizzare l’uso del disco. In questo esempio, viene visualizzato l’utilizzo del disco per tutti i file che iniziano con “m”.

$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab

In questo esempio, l’output del comando du mostra le dimensioni dei file sul disco in incrementi della dimensione del blocco, che è 4.0 KB in questo caso. Un’eccezione a questa regola è quando viene visualizzato zero, che indica che il file è completamente vuoto.

File speciali
In aggiunta ad altri tipi di file, Linux fa uso di file speciali, che sono file definiti dal sistema che svolgono funzioni uniche quando vi si accede.

File speciali e loro funzioni

Per esempio, se hai bisogno di sbarazzarti di output indesiderati da un comando, puoi reindirizzare l’output al file /dev/null. In questo esempio, qualsiasi errore generato dal comando find viene reindirizzato da stderr a /dev/null.

$ find / -n myfile 2> /dev/null

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.