Cos'è
GNU/Linux, comunemente noto come Linux, è una famiglia di sistemi operativi liberi e open source di tipo Unix-like, creati da Linus Torvalds. Pubblicati in varie distribuzioni, questi sistemi utilizzano come nucleo il kernel Linux. Oggi, molte importanti società nel campo dell'informatica, come Google, Microsoft, Amazon, IBM, Oracle, Hewlett-Packard, Red Hat, Canonical, Novell e Valve, sviluppano e pubblicano sistemi basati su Linux. Un esempio molto conosciuto è Ubuntu di Canonical, il cui codice sorgente deriva da Debian.
Lezione 1
Il primo argomento affrontato era la struttura generale di Linux. Mi hanno parlato dell'architettura del kernel Linux e dei suoi concetti fondamentali, oltre alla gestione dei pacchetti software. Mi hanno spiegato che Linux è compatibile con una vasta gamma di hardware, architetture e driver. Inoltre, ho scoperto l'esistenza di una grande community Linux di utenti e sviluppatori che si supportano a vicenda per risolvere eventuali anomalie.
Precedentemente, avevo installato sul mio laptop l'applicazione "VirtualBox", che permette di simulare un altro sistema operativo sullo stesso computer. In questo caso, l'ho usata per simulare Ubuntu, un sistema operativo open-source basato su Linux.
Dopo una breve introduzione sulle caratteristiche di Ubuntu, ho potuto scrivere i primi comandi sul terminale. Ho così imparato i comandi per creare cartelle/file, copiare e incollare il contenuto di un file, spostare un file o rinominarlo, ed eliminare cartelle/file. Mi sono poi focalizzato sui file di testo, imparando i comandi per visualizzarne tutto il contenuto, solo le prime/ultime righe e per cercare una stringa all'interno di un file.
Lezione 2
Durante la seconda lezione, mi hanno parlato delle distro Ubuntu-like. Partendo da Linux Mint, dopo una breve introduzione storica, mi hanno mostrato i Desktop Environment di Linux Mint (Cinnamon, Mate e Xfce) e le loro principali caratteristiche.
Successivamente, ho visto altre distro (Elementary OS, Zorin OS, Pop!_OS e Kubuntu). Per ognuna di queste, sono state spiegate la loro creazione, lo scopo per cui sono state ideate e le loro caratteristiche principali. Infine, dopo questa panoramica generale sulle distro, sono state messe a confronto per evidenziare pregi e difetti di ognuna.
La seconda parte della lezione riguardava gli utenti e i gruppi sul sistema operativo Ubuntu. Ho così imparato la sintassi dei comandi per aggiungere/eliminare utenti e gruppi, modificare i loro dettagli e rimuoverli. Mi hanno poi spiegato cosa sono i privilegi e quali comandi utilizzare per assegnarli o revocarli a un utente o a un gruppo.
Infine, mi hanno parlato dell'SSH (Secure Shell), spiegandomi cos'è e quali vantaggi offre. Successivamente, mi hanno mostrato i comandi per stabilire una connessione SSH con un altro dispositivo o server.
Lezione 3
L'argomento dell'ultima lezione era il Bash Programming. Mi hanno mostrato i caratteri speciali utilizzati in questa programmazione (come \, $, #) e spiegato la differenza tra comandi interni ed esterni. Ho così potuto svolgere il primo esercizio, che consisteva nel dare un messaggio in output nel terminale.
In seguito, ho appreso cosa sono i comandi in Pipeline e la loro sintassi, oltre agli operatori di confronto tra stringhe. Ho scoperto i vari tipi di variabili, scalari e array, e ho svolto un esercizio che richiedeva di inizializzare un array e stampare i suoi elementi.
Infine, ho imparato la sintassi delle strutture di controllo condizionale, come if, while, until e for.
Ho trovato questa attività molto interessante e utile. Sono sicuro che, in futuro, ciò che ho appreso in queste lezioni mi tornerà utile, considerando che Linux è installato in tantissimi dispositivi che utilizziamo ogni giorno (cellulari, computer, tablet, domotica). È stato interessante anche fare semplici operazioni di sistema, come creare un file di testo utilizzando la linea di comando; è stato curioso dover scrivere tanti comandi per attività che siamo abituati a svolgere in pochi click.
L'unica critica che mi sento di fare è che è stato dedicato troppo tempo alla storia delle versioni di Linux, che, a mio parere, si poteva tralasciare. Questo ha sottratto tempo che sarebbe stato più utile dedicare a ulteriori esercizi di codifica, magari anche più complessi.