Come funzionano le estensioni su Linux?

È una delle cose che mi hanno lasciato più spaesato quando, anni fa, mi avvicinai a Linux per la prima volta.

Come diamine funzionano le estensioni? Perché i file di testo non hanno l’estensione txt? E qual’è il corrispondente degli “exe” su Linux? Se usate Linux da un po’ di tempo, domande come queste vi saranno saltate in testa almeno una volta.

Vediamo allora di fare un po’ di chiarezza su come funziona questo meccanismo, a prima vista caotico ma in realtà decisamente versatile.

In generale, sui sistemi Unix-like (come appunto Linux) le estensioni… sono inutili! Provate a prendere un’immagine e toglierle l’estensione. Vedrete che, se siete su Ubuntu, continuerà a essere visualizzata l’anteprima corretta. Un doppio click sul file rivela che il sistema continua a riconoscerlo come file immagine, perché si apre il visualizzatore associato.

Come fa il sistema a capire che quella è un’immagine?

Ogni file binario (cioè un file che contiene dati diversi da puro testo, come le immagini e i video) presenta nelle posizioni iniziali un cosiddetto “numero magico”, ovvero una sequenza di byte che indica il tipo del file stesso. Per esempio, i file JPG internamente iniziano sempre con la sequenza esadecimale “FF D8“. Se non vengono individuati codici specifici, si suppone di essere davanti a un file di testo.

Anche se cambiamo estensione, quindi, il file resterà una immagine jpg e il numero magico sarà sempre lo stesso. Provate a lanciare da terminale il comando “file” usando come parametro un file a vostra scelta: vedrete quello che il sistema sa riguardo a quel file.

$ file /usr/share/backgrounds/A_Little_Quetzal_by_vgerasimov.jpg
[...]: JPEG image data, JFIF standard 1.01, comment: "Optimized by JPEGmini 3.7.9.0L"

Ma allora a che servono le estensioni?

La domanda sorge spontanea: se il sistema riesce a capire da solo cosa fare coi diversi tipi di file, che ce ne facciamo dell’estensione?

Le estensioni sono ancora lì prima di tutto per questioni di compatibilità con altri sistemi (Windows). In secondo luogo, sono comunque utili per filtrare o individuare certi tipi di file a vista d’occhio (immaginate che incubo sarebbe utilizzare un terminale su un sistema dove tutti i file sono senza estensione).

E abbiamo finito. Non scrivo una conclusione all’articolo perché si sa, la conclusione è come un’estensione e le estensioni su Ubuntu Linux sono inutili ;)