{"id":3635,"date":"2026-07-16T15:39:37","date_gmt":"2026-07-16T13:39:37","guid":{"rendered":"https:\/\/rootmail.it\/courses\/lpic-1-exam-101-010-160-corso-completo-in-italiano\/lessons\/103-1-lavorare-dalla-riga-di-comando\/"},"modified":"2026-07-20T21:56:39","modified_gmt":"2026-07-20T19:56:39","slug":"103-1-lavorare-dalla-riga-di-comando","status":"publish","type":"lesson","link":"https:\/\/rootmail.it\/en\/courses\/lpic-1-exam-1-101-500-corso-completo-in-italiano\/lessons\/103-1-lavorare-dalla-riga-di-comando\/","title":{"rendered":"103.1 Lavorare dalla riga di comando"},"content":{"rendered":"<h2>103.1 Lavorare dalla riga di comando<\/h2>\n<p>La <strong>riga di comando (Command Line Interface &#8211; CLI)<\/strong> rappresenta uno degli strumenti pi\u00f9 potenti e versatili di un sistema Linux. Sebbene gli ambienti desktop moderni offrano interfacce grafiche intuitive, gran parte dell&#8217;amministrazione di server, sistemi cloud e infrastrutture Linux viene ancora oggi eseguita direttamente dal terminale.<\/p>\n<p>La shell consente di interagire con il sistema operativo attraverso comandi testuali, offrendo un controllo preciso sulle operazioni di gestione, automazione e configurazione. Imparare a utilizzare efficacemente la riga di comando significa acquisire una competenza fondamentale per qualsiasi amministratore di sistemi Linux.<\/p>\n<p>In questa lezione scoprirai come utilizzare la shell, comprendere la sintassi dei comandi, ottenere assistenza tramite la documentazione integrata e personalizzare il tuo ambiente di lavoro. Imparerai inoltre a navigare nel filesystem e a sfruttare gli strumenti essenziali che rendono la riga di comando uno degli elementi distintivi dell&#8217;ecosistema GNU\/Linux.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 fondamentale conoscere la struttura dei comandi Linux, l&#8217;utilizzo della shell, le variabili d&#8217;ambiente, la cronologia dei comandi, il completamento automatico (tab completion) e gli strumenti di aiuto come <code>man<\/code>, <code>info<\/code> e <code>--help<\/code>.<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\ud83c\udfaf Obiettivi della lezione<\/h2>\n<p>Al termine di questa lezione sarai in grado di:<\/p>\n<ul>\n<li>comprendere il funzionamento della shell Linux e della riga di comando;<\/li>\n<li>eseguire correttamente comandi e interpretarene la sintassi;<\/li>\n<li>utilizzare la cronologia dei comandi e il completamento automatico;<\/li>\n<li>consultare la documentazione integrata tramite <code>man<\/code>, <code>info<\/code> e <code>--help<\/code>;<\/li>\n<li>utilizzare le variabili d&#8217;ambiente e personalizzare il comportamento della shell;<\/li>\n<li>acquisire le competenze fondamentali per lavorare quotidianamente dal terminale Linux.<\/li>\n<\/ul>\n<hr \/>\n<h2>Argomenti trattati<\/h2>\n<ul>\n<li>Introduzione alla shell Linux.<\/li>\n<li>Struttura e sintassi dei comandi.<\/li>\n<li>Cronologia dei comandi e completamento automatico.<\/li>\n<li>Documentazione integrata: man, info e help.<\/li>\n<li>Variabili d&#8217;ambiente e shell environment.<\/li>\n<li>Best practice per lavorare dalla riga di comando.<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u2328\ufe0f Provalo subito<\/strong><br \/>Apri un terminale Linux ed esegui i comandi mostrati durante la lezione. La pratica \u00e8 il modo migliore per acquisire familiarit\u00e0 con la shell e sviluppare sicurezza nell&#8217;utilizzo della riga di comando.<\/p>\n<\/blockquote>\n<h2>103.1.1 Comandi di base della shell e sequenze di comandi<\/h2>\n<p>La <strong>shell<\/strong> \u00e8 l&#8217;interprete dei comandi di Linux. Il suo compito \u00e8 ricevere i comandi digitati dall&#8217;utente, interpretarli ed eseguirli, consentendo di interagire direttamente con il sistema operativo.<\/p>\n<p>Ogni comando immesso nel terminale segue generalmente una struttura composta da:<\/p>\n<ul>\n<li>il <strong>nome del comando<\/strong>;<\/li>\n<li>eventuali <strong>opzioni<\/strong>;<\/li>\n<li>uno o pi\u00f9 <strong>argomenti<\/strong>.<\/li>\n<\/ul>\n<p>Ad esempio:<\/p>\n<pre><code>ls -l \/home\r\n<\/code><\/pre>\n<p>In questo comando:<\/p>\n<ul>\n<li><code>ls<\/code> \u00e8 il comando;<\/li>\n<li><code>-l<\/code> \u00e8 un&#8217;opzione che abilita il formato dettagliato;<\/li>\n<li><code>\/home<\/code> \u00e8 l&#8217;argomento, ovvero la directory da visualizzare.<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Comprendere la sintassi dei comandi Linux \u00e8 fondamentale. La maggior parte dei comandi segue lo schema <strong>comando [opzioni] [argomenti]<\/strong>.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Visualizzare la directory corrente<\/h3>\n<p>Uno dei primi comandi da conoscere \u00e8 <code>pwd<\/code> (<strong>Print Working Directory<\/strong>), che mostra il percorso completo della directory in cui ci si trova.<\/p>\n<p>Esempio:<\/p>\n<pre><code>$ pwd\r\n\/home\/user\r\n<\/code><\/pre>\n<p>Questo comando \u00e8 particolarmente utile quando si lavora da terminale e si desidera conoscere rapidamente la posizione corrente all&#8217;interno del filesystem.<\/p>\n<hr \/>\n<h3>Eseguire pi\u00f9 comandi in sequenza<\/h3>\n<p>La shell permette di eseguire pi\u00f9 comandi consecutivamente utilizzando il carattere <code>;<\/code> (punto e virgola).<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>$ cd \/var\/log; ls\r\n<\/code><\/pre>\n<p>In questo caso:<\/p>\n<ol>\n<li>la shell cambia directory con <code>cd \/var\/log<\/code>;<\/li>\n<li>successivamente esegue <code>ls<\/code>, mostrando il contenuto della nuova directory.<\/li>\n<\/ol>\n<p>Entrambi i comandi vengono eseguiti indipendentemente dal risultato del precedente.<\/p>\n<hr \/>\n<h3>Quando utilizzare il punto e virgola (;)<\/h3>\n<p>Il separatore <code>;<\/code> \u00e8 utile quando si desidera eseguire rapidamente una serie di operazioni.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>mkdir laboratorio; cd laboratorio; touch prova.txt; ls -l\r\n<\/code><\/pre>\n<p>La shell eseguir\u00e0 ogni comando nell&#8217;ordine indicato, senza interrompersi anche se uno dei comandi dovesse restituire un errore.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> Il separatore <code>;<\/code> esegue sempre tutti i comandi. Nelle prossime lezioni vedrai operatori come <code>&amp;&amp;<\/code> e <code>||<\/code>, che consentono invece di controllare l&#8217;esecuzione in base al successo o al fallimento del comando precedente.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando lavori da terminale, verifica sempre la directory corrente con <code>pwd<\/code> prima di eseguire operazioni che modificano file o directory. Inoltre, utilizza le sequenze di comandi solo quando sei certo dell&#8217;ordine di esecuzione e degli effetti che ogni comando produrr\u00e0.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>La shell interpreta ed esegue i comandi inseriti dall&#8217;utente.<\/li>\n<li>La sintassi generale di un comando \u00e8: <strong>comando [opzioni] [argomenti]<\/strong>.<\/li>\n<li>Il comando <code>pwd<\/code> visualizza la directory di lavoro corrente.<\/li>\n<li>Il separatore <code>;<\/code> consente di eseguire pi\u00f9 comandi in sequenza.<\/li>\n<li>I comandi separati da <code>;<\/code> vengono eseguiti indipendentemente dal risultato dei precedenti.<\/li>\n<\/ul>\n<h2>103.1.2 L&#8217;ambiente della shell e le variabili<\/h2>\n<p>Ogni volta che apri un terminale Linux viene avviata una <strong>sessione della shell<\/strong>. Durante questa sessione, la shell mantiene un insieme di informazioni chiamate <strong>variabili d&#8217;ambiente (Environment Variables)<\/strong>, utilizzate sia dal sistema operativo sia dalle applicazioni per memorizzare impostazioni e configurazioni.<\/p>\n<p>Le variabili d&#8217;ambiente permettono, ad esempio, di conoscere la directory personale dell&#8217;utente, il percorso in cui cercare i comandi eseguibili, il nome dell&#8217;utente connesso e molte altre informazioni utili.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere la differenza tra variabili locali e variabili d&#8217;ambiente, sapere utilizzare i comandi <code>export<\/code>, <code>unset<\/code>, <code>echo<\/code> ed <code>env<\/code> e comprendere il significato della variabile <code>PATH<\/code>.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Visualizzare il valore di una variabile<\/h3>\n<p>Per visualizzare il contenuto di una variabile si utilizza il comando <code>echo<\/code>, precedendo il nome della variabile con il simbolo <code>$<\/code>.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>$ echo $HOME\r\n\/home\/user\r\n<\/code><\/pre>\n<p>In questo caso viene visualizzato il contenuto della variabile <code>HOME<\/code>, che identifica la directory personale dell&#8217;utente corrente.<\/p>\n<p>Alcune variabili molto comuni sono:<\/p>\n<ul>\n<li><code>HOME<\/code> \u2013 directory personale dell&#8217;utente;<\/li>\n<li><code>USER<\/code> \u2013 nome dell&#8217;utente connesso;<\/li>\n<li><code>PATH<\/code> \u2013 elenco delle directory in cui la shell cerca i comandi eseguibili;<\/li>\n<li><code>SHELL<\/code> \u2013 shell utilizzata dall&#8217;utente.<\/li>\n<\/ul>\n<hr \/>\n<h3>Visualizzare tutte le variabili d&#8217;ambiente<\/h3>\n<p>Per elencare tutte le variabili d&#8217;ambiente disponibili nella sessione corrente \u00e8 possibile utilizzare:<\/p>\n<pre><code>env\r\n<\/code><\/pre>\n<p>Se invece si desidera cercare una variabile specifica:<\/p>\n<pre><code>env | grep HOME\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>env | grep PATH\r\n<\/code><\/pre>\n<p>Questo metodo \u00e8 particolarmente utile quando il numero di variabili \u00e8 elevato.<\/p>\n<hr \/>\n<h3>Creare una variabile d&#8217;ambiente<\/h3>\n<p>Per creare una variabile d&#8217;ambiente e renderla disponibile anche ai processi figli si utilizza il comando <code>export<\/code>.<\/p>\n<p>Esempio:<\/p>\n<pre><code>export VARNAME=\"value\"\r\n<\/code><\/pre>\n<p>Successivamente \u00e8 possibile verificarne il contenuto:<\/p>\n<pre><code>echo $VARNAME\r\n<\/code><\/pre>\n<p>La variabile rimarr\u00e0 disponibile fino alla chiusura della sessione della shell, salvo diversa configurazione nei file di inizializzazione.<\/p>\n<hr \/>\n<h3>Eliminare una variabile<\/h3>\n<p>Per rimuovere una variabile dalla sessione corrente si utilizza il comando:<\/p>\n<pre><code>unset VARNAME\r\n<\/code><\/pre>\n<p>Dopo l&#8217;esecuzione del comando, la variabile non sar\u00e0 pi\u00f9 disponibile.<\/p>\n<hr \/>\n<h3>Variabili locali e variabili d&#8217;ambiente<\/h3>\n<p>In Linux esistono due principali categorie di variabili.<\/p>\n<table>\n<thead>\n<tr>\n<th>Tipo<\/th>\n<th>Comando<\/th>\n<th>Visibilit\u00e0<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Variabile locale<\/td>\n<td><code>VARNAME=value<\/code><\/td>\n<td>Disponibile solo nella shell corrente.<\/td>\n<\/tr>\n<tr>\n<td>Variabile d&#8217;ambiente<\/td>\n<td><code>export VARNAME=value<\/code><\/td>\n<td>Disponibile anche ai processi figli avviati dalla shell.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ad esempio:<\/p>\n<pre><code>MESSAGGIO=\"Benvenuto\"\r\nexport MESSAGGIO\r\n<\/code><\/pre>\n<p>Dopo l&#8217;utilizzo di <code>export<\/code>, qualsiasi programma avviato dalla shell potr\u00e0 accedere alla variabile <code>MESSAGGIO<\/code>.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> Una variabile creata senza <code>export<\/code> \u00e8 una variabile locale e non viene ereditata dai processi figli. L&#8217;utilizzo di <code>export<\/code> la trasforma in una variabile d&#8217;ambiente.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>La variabile PATH<\/h3>\n<p>Una delle variabili pi\u00f9 importanti \u00e8 <code>PATH<\/code>.<\/p>\n<p>Essa contiene l&#8217;elenco delle directory in cui la shell ricerca i programmi eseguibili quando viene digitato un comando.<\/p>\n<p>Per visualizzarne il contenuto:<\/p>\n<pre><code>echo $PATH\r\n<\/code><\/pre>\n<p>L&#8217;output \u00e8 composto da pi\u00f9 directory separate dal carattere <code>:<\/code> (due punti), ad esempio:<\/p>\n<pre><code>\/usr\/local\/bin:\/usr\/bin:\/bin:\/usr\/sbin:\/sbin\r\n<\/code><\/pre>\n<p>Quando digiti un comando come <code>ls<\/code>, la shell lo cerca automaticamente nelle directory elencate in <code>PATH<\/code>.<\/p>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza le variabili d&#8217;ambiente per personalizzare il comportamento della shell e delle applicazioni senza modificare direttamente i programmi. Evita di alterare la variabile <code>PATH<\/code> senza comprenderne il funzionamento, poich\u00e9 un&#8217;impostazione errata potrebbe impedire l&#8217;esecuzione dei comandi di sistema.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Le variabili d&#8217;ambiente memorizzano informazioni sulla sessione della shell.<\/li>\n<li><code>echo $VARIABILE<\/code> visualizza il contenuto di una variabile.<\/li>\n<li><code>env<\/code> elenca tutte le variabili d&#8217;ambiente disponibili.<\/li>\n<li><code>export<\/code> crea una variabile d&#8217;ambiente accessibile anche ai processi figli.<\/li>\n<li><code>unset<\/code> elimina una variabile dalla sessione corrente.<\/li>\n<li><code>PATH<\/code> indica le directory in cui la shell ricerca i programmi eseguibili.<\/li>\n<\/ul>\n<h2>103.1.3 Utilizzare la cronologia dei comandi<\/h2>\n<p>La shell Linux mantiene automaticamente una <strong>cronologia dei comandi<\/strong> eseguiti dall&#8217;utente. Questa funzionalit\u00e0 permette di richiamare rapidamente comandi utilizzati in precedenza, evitando di doverli digitare nuovamente e aumentando notevolmente la produttivit\u00e0 durante il lavoro da terminale.<\/p>\n<p>La cronologia \u00e8 particolarmente utile durante l&#8217;amministrazione dei sistemi, il troubleshooting e l&#8217;automazione delle attivit\u00e0 ripetitive.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere il comando <code>history<\/code>, l&#8217;utilizzo di <code>!!<\/code>, dei riferimenti <code>!n<\/code> e <code>!-n<\/code>, la ricerca tramite <strong>Ctrl + R<\/strong> e il file <code>~\/.bash_history<\/code>.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Visualizzare la cronologia dei comandi<\/h3>\n<p>Per visualizzare l&#8217;elenco dei comandi eseguiti nella shell \u00e8 sufficiente utilizzare:<\/p>\n<pre><code>history\r\n<\/code><\/pre>\n<p>L&#8217;output mostra ogni comando preceduto da un numero progressivo.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>100  pwd\r\n101  ls -l\r\n102  cd \/var\/log\r\n103  cat syslog\r\n<\/code><\/pre>\n<p>Questa numerazione permette di richiamare rapidamente un comando specifico.<\/p>\n<hr \/>\n<h3>Ripetere comandi gi\u00e0 eseguiti<\/h3>\n<p>La shell consente di rieseguire rapidamente i comandi presenti nella cronologia.<\/p>\n<p>Per ripetere l&#8217;ultimo comando eseguito:<\/p>\n<pre><code>!!\r\n<\/code><\/pre>\n<p>Per eseguire il comando precedente di due posizioni:<\/p>\n<pre><code>!-2\r\n<\/code><\/pre>\n<p>\u00c8 inoltre possibile richiamare un comando specifico utilizzando il numero mostrato dal comando <code>history<\/code>.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>!101\r\n<\/code><\/pre>\n<p>In questo caso verr\u00e0 rieseguito il comando numero <strong>101<\/strong> presente nella cronologia.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> I comandi richiamati mediante <code>!<\/code> vengono eseguiti immediatamente. Verifica sempre che il comando richiamato sia quello desiderato, soprattutto se pu\u00f2 modificare file o configurazioni.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Ricercare nella cronologia<\/h3>\n<p>Quando la cronologia contiene molti comandi, \u00e8 possibile effettuare una ricerca interattiva premendo:<\/p>\n<pre><code>Ctrl + R\r\n<\/code><\/pre>\n<p>Dopo aver premuto la combinazione di tasti, \u00e8 sufficiente iniziare a digitare una parte del comando desiderato.<\/p>\n<p>Ad esempio, digitando:<\/p>\n<pre><code>ssh\r\n<\/code><\/pre>\n<p>la shell mostrer\u00e0 automaticamente l&#8217;ultimo comando contenente la parola <code>ssh<\/code>.<\/p>\n<p>Premendo nuovamente <code>Ctrl + R<\/code> \u00e8 possibile scorrere i risultati precedenti.<\/p>\n<p>Per eseguire il comando trovato \u00e8 sufficiente premere <strong>Invio<\/strong>.<\/p>\n<hr \/>\n<h3>La cronologia permanente<\/h3>\n<p>Nella shell Bash la cronologia dei comandi viene normalmente salvata nel file:<\/p>\n<pre><code>~\/.bash_history\r\n<\/code><\/pre>\n<p>Questo file consente di mantenere la cronologia anche dopo la chiusura della sessione.<\/p>\n<p>\u00c8 possibile visualizzarne il contenuto con:<\/p>\n<pre><code>cat ~\/.bash_history\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>less ~\/.bash_history\r\n<\/code><\/pre>\n<p>La dimensione della cronologia e il numero di comandi conservati possono essere configurati tramite specifiche variabili d&#8217;ambiente.<\/p>\n<hr \/>\n<h3>Perch\u00e9 utilizzare la cronologia?<\/h3>\n<p>L&#8217;utilizzo della cronologia offre numerosi vantaggi:<\/p>\n<ul>\n<li>riduce il tempo necessario per digitare comandi ripetitivi;<\/li>\n<li>semplifica il troubleshooting;<\/li>\n<li>consente di recuperare rapidamente comandi complessi;<\/li>\n<li>riduce il rischio di errori di digitazione.<\/li>\n<\/ul>\n<p>Per un amministratore Linux rappresenta uno degli strumenti pi\u00f9 utili durante il lavoro quotidiano.<\/p>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza la ricerca con <strong>Ctrl + R<\/strong> per recuperare rapidamente i comandi utilizzati pi\u00f9 frequentemente. Prima di rieseguire un comando tramite <code>!!<\/code> o <code>!n<\/code>, verifica sempre che sia quello desiderato, soprattutto se potrebbe modificare il sistema o eliminare dati.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>history<\/code> visualizza l&#8217;elenco dei comandi eseguiti.<\/li>\n<li><code>!!<\/code> riesegue l&#8217;ultimo comando.<\/li>\n<li><code>!-n<\/code> richiama un comando eseguito nelle posizioni precedenti della cronologia.<\/li>\n<li><code>!numero<\/code> esegue il comando identificato dal relativo numero nella cronologia.<\/li>\n<li><strong>Ctrl + R<\/strong> permette di cercare rapidamente un comando nella cronologia.<\/li>\n<li>La cronologia permanente della shell Bash \u00e8 memorizzata nel file <code>~\/.bash_history<\/code>.<\/li>\n<\/ul>\n<h2>103.1.4 Eseguire comandi tramite il PATH e utilizzando percorsi assoluti o relativi<\/h2>\n<p>Quando digiti un comando nel terminale, la shell deve individuare il programma da eseguire. Per farlo utilizza una variabile d&#8217;ambiente chiamata <strong>PATH<\/strong>, che contiene l&#8217;elenco delle directory nelle quali cercare i file eseguibili.<\/p>\n<p>Se il comando viene trovato in una delle directory presenti nel <code>PATH<\/code>, viene eseguito automaticamente. In caso contrario, \u00e8 necessario specificare manualmente il percorso del file eseguibile.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante comprendere il funzionamento della variabile <code>PATH<\/code>, conoscere il comando <code>which<\/code> e sapere come eseguire programmi presenti al di fuori delle directory incluse nel PATH.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>La variabile PATH<\/h3>\n<p>La variabile <code>PATH<\/code> contiene un elenco di directory separate dal carattere <code>:<\/code> (due punti).<\/p>\n<p>Per visualizzarne il contenuto \u00e8 possibile utilizzare:<\/p>\n<pre><code>echo $PATH\r\n<\/code><\/pre>\n<p>Un esempio di output potrebbe essere:<\/p>\n<pre><code>\/usr\/local\/bin:\/usr\/bin:\/bin:\/usr\/sbin:\/sbin\r\n<\/code><\/pre>\n<p>Quando esegui un comando come:<\/p>\n<pre><code>ls\r\n<\/code><\/pre>\n<p>la shell cerca automaticamente il programma <code>ls<\/code> in ciascuna delle directory elencate nel <code>PATH<\/code>, fino a trovarlo.<\/p>\n<hr \/>\n<h3>Individuare la posizione di un comando<\/h3>\n<p>Per sapere quale programma verr\u00e0 eseguito quando si digita un comando \u00e8 possibile utilizzare <code>which<\/code>.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>$ which ls\r\n\/bin\/ls\r\n<\/code><\/pre>\n<p>Il comando restituisce il percorso completo dell&#8217;eseguibile trovato nella variabile <code>PATH<\/code>.<\/p>\n<p>Questo \u00e8 particolarmente utile quando esistono pi\u00f9 versioni dello stesso programma installate nel sistema.<\/p>\n<hr \/>\n<h3>Eseguire un programma fuori dal PATH<\/h3>\n<p>Se un programma non si trova in una delle directory presenti nella variabile <code>PATH<\/code>, \u00e8 necessario specificarne il percorso completo.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>\/percorso\/del\/mio_script.sh\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>\/home\/user\/script_backup.sh\r\n<\/code><\/pre>\n<p>In questo caso la shell eseguir\u00e0 direttamente il file indicato.<\/p>\n<hr \/>\n<h3>Eseguire un programma nella directory corrente<\/h3>\n<p>Per motivi di sicurezza, la directory corrente (<code>.<\/code>) non \u00e8 normalmente inclusa nella variabile <code>PATH<\/code>.<\/p>\n<p>Se desideri eseguire uno script presente nella directory in cui ti trovi, devi specificarlo esplicitamente utilizzando:<\/p>\n<pre><code>.\/nome_script.sh\r\n<\/code><\/pre>\n<p>Ad esempio:<\/p>\n<pre><code>.\/backup.sh\r\n<\/code><\/pre>\n<p>Il prefisso <code>.\/<\/code> indica alla shell di eseguire il file presente nella directory corrente.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> Digitare semplicemente <code>backup.sh<\/code> potrebbe non funzionare se la directory corrente non \u00e8 presente nella variabile <code>PATH<\/code>. In questo caso \u00e8 necessario utilizzare <code>.\/backup.sh<\/code>.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Percorsi assoluti e percorsi relativi<\/h3>\n<p>Esistono due modi per specificare il percorso di un file eseguibile.<\/p>\n<table>\n<thead>\n<tr>\n<th>Tipo di percorso<\/th>\n<th>Esempio<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Percorso assoluto<\/td>\n<td><code>\/home\/user\/script.sh<\/code><\/td>\n<\/tr>\n<tr>\n<td>Percorso relativo<\/td>\n<td><code>.\/script.sh<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Il percorso assoluto parte sempre dalla directory radice (<code>\/<\/code>), mentre quello relativo dipende dalla directory corrente.<\/p>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Evita di aggiungere la directory corrente (<code>.<\/code>) alla variabile <code>PATH<\/code>. Questa pratica pu\u00f2 rappresentare un rischio per la sicurezza, poich\u00e9 potrebbe portare all&#8217;esecuzione accidentale di programmi con lo stesso nome dei comandi di sistema. Quando desideri eseguire uno script presente nella directory corrente, utilizza sempre il prefisso <code>.\/<\/code>.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>La variabile <code>PATH<\/code> indica alla shell dove cercare i programmi eseguibili.<\/li>\n<li><code>echo $PATH<\/code> visualizza le directory contenute nel PATH.<\/li>\n<li><code>which comando<\/code> mostra il percorso dell&#8217;eseguibile utilizzato.<\/li>\n<li>I programmi esterni al PATH devono essere eseguiti specificandone il percorso.<\/li>\n<li><code>.\/programma<\/code> permette di eseguire uno script presente nella directory corrente.<\/li>\n<li>I percorsi possono essere assoluti o relativi.<\/li>\n<\/ul>\n<h2>103.1.5 Le virgolette nella shell (Quoting)<\/h2>\n<p>Quando si lavora con la shell Linux, alcuni caratteri hanno un significato speciale. Ad esempio, il simbolo <code>$<\/code> identifica una variabile, mentre spazi e caratteri speciali possono modificare il modo in cui un comando viene interpretato.<\/p>\n<p>Il <strong>quoting<\/strong> \u00e8 il meccanismo che permette di controllare l&#8217;interpretazione di testo e caratteri speciali da parte della shell. Utilizzare correttamente le virgolette \u00e8 fondamentale per scrivere comandi affidabili, evitare errori e gestire correttamente stringhe contenenti spazi o variabili.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere la differenza tra <strong>virgolette doppie (&#8220;&#8221;)<\/strong> e <strong>virgolette singole (&#8221;)<\/strong>, in particolare il comportamento delle variabili d&#8217;ambiente e dei caratteri speciali.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Virgolette doppie (&#8220;&#8221;)<\/h3>\n<p>Le <strong>virgolette doppie<\/strong> preservano la maggior parte dei caratteri contenuti nella stringa, ma permettono comunque alla shell di espandere le variabili d&#8217;ambiente e alcune sequenze speciali.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>$ echo \"La tua home \u00e8: $HOME\"\r\nLa tua home \u00e8: \/home\/user\r\n<\/code><\/pre>\n<p>In questo caso la shell sostituisce automaticamente <code>$HOME<\/code> con il valore della variabile d&#8217;ambiente.<\/p>\n<p>Le virgolette doppie sono particolarmente utili quando una stringa contiene spazi e variabili contemporaneamente.<\/p>\n<hr \/>\n<h3>Virgolette singole (&#8221;)<\/h3>\n<p>Le <strong>virgolette singole<\/strong> preservano il valore letterale di tutti i caratteri contenuti nella stringa.<\/p>\n<p>La shell non interpreta variabili, caratteri speciali o sostituzioni.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>$ echo 'La tua home \u00e8: $HOME'\r\nLa tua home \u00e8: $HOME\r\n<\/code><\/pre>\n<p>In questo caso il testo viene visualizzato esattamente come \u00e8 stato digitato.<\/p>\n<p>Le virgolette singole sono utili quando si desidera impedire qualsiasi elaborazione della stringa da parte della shell.<\/p>\n<hr \/>\n<h3>Confronto tra virgolette doppie e singole<\/h3>\n<table>\n<thead>\n<tr>\n<th>Tipo<\/th>\n<th>Espande le variabili?<\/th>\n<th>Utilizzo principale<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\"...\"<\/code><\/td>\n<td>\u2714 S\u00ec<\/td>\n<td>Stringhe con variabili o caratteri da espandere.<\/td>\n<\/tr>\n<tr>\n<td><code>'...'<\/code><\/td>\n<td>\u2718 No<\/td>\n<td>Testo da mantenere esattamente come scritto.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>Quando utilizzare il quoting?<\/h3>\n<p>Le virgolette vengono utilizzate frequentemente anche per gestire percorsi o nomi di file contenenti spazi.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>cd \"\/home\/user\/Documenti di lavoro\"\r\n<\/code><\/pre>\n<p>oppure:<\/p>\n<pre><code>cp \"Relazione finale.pdf\" backup\/\r\n<\/code><\/pre>\n<p>Senza le virgolette, la shell interpreterebbe ogni parola separata da uno spazio come un argomento distinto.<\/p>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando una stringa contiene spazi, utilizza sempre le virgolette. Se desideri che le variabili vengano sostituite con il loro valore, usa le <strong>virgolette doppie<\/strong>. Se invece vuoi mantenere il testo esattamente come \u00e8 stato scritto, utilizza le <strong>virgolette singole<\/strong>.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Il <strong>quoting<\/strong> controlla il modo in cui la shell interpreta testo e caratteri speciali.<\/li>\n<li>Le <strong>virgolette doppie (&#8220;&#8221;)<\/strong> espandono le variabili d&#8217;ambiente.<\/li>\n<li>Le <strong>virgolette singole (&#8221;)<\/strong> mantengono il testo letterale.<\/li>\n<li>Le virgolette sono indispensabili quando una stringa contiene spazi.<\/li>\n<li>Scegli il tipo di virgolette in base al comportamento desiderato della shell.<\/li>\n<\/ul>\n<h2>103.1.6 Altri comandi utili della shell<\/h2>\n<p>Oltre ai comandi utilizzati quotidianamente per navigare nel filesystem e gestire i file, Linux mette a disposizione numerosi strumenti che consentono di ottenere informazioni sul sistema, consultare la documentazione e comprendere il funzionamento della shell.<\/p>\n<p>In questa sezione vedremo alcuni dei comandi pi\u00f9 utili durante l&#8217;amministrazione di un sistema Linux.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere il funzionamento dei comandi <code>type<\/code>, <code>man<\/code>, <code>uname<\/code> e <code>date<\/code>, oltre a sapere quando utilizzarli.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Il comando <code>type<\/code><\/h3>\n<p>Il comando <code>type<\/code> permette di sapere come la shell interpreta un comando.<\/p>\n<p>Pu\u00f2 indicare se il comando \u00e8:<\/p>\n<ul>\n<li>un comando interno (builtin);<\/li>\n<li>un alias;<\/li>\n<li>una funzione della shell;<\/li>\n<li>un programma eseguibile presente nel filesystem.<\/li>\n<\/ul>\n<p>Ad esempio:<\/p>\n<pre><code>$ type echo\r\necho is a shell builtin\r\n<\/code><\/pre>\n<p>Oppure:<\/p>\n<pre><code>$ type ls\r\nls is \/usr\/bin\/ls\r\n<\/code><\/pre>\n<p>Questo comando \u00e8 molto utile durante il troubleshooting e quando si desidera capire quale versione di un comando verr\u00e0 eseguita.<\/p>\n<hr \/>\n<h3>Consultare la documentazione con <code>man<\/code><\/h3>\n<p>Linux integra una vasta documentazione consultabile tramite il comando <code>man<\/code> (<strong>manual<\/strong>).<\/p>\n<p>Per aprire il manuale di un comando:<\/p>\n<pre><code>man ls\r\n<\/code><\/pre>\n<p>Ogni pagina di manuale contiene:<\/p>\n<ul>\n<li>descrizione del comando;<\/li>\n<li>sintassi;<\/li>\n<li>opzioni disponibili;<\/li>\n<li>esempi di utilizzo.<\/li>\n<\/ul>\n<p>Per uscire dalla pagina del manuale \u00e8 sufficiente premere il tasto <strong>q<\/strong>.<\/p>\n<hr \/>\n<h3>Visualizzare informazioni sul sistema con <code>uname<\/code><\/h3>\n<p>Il comando <code>uname<\/code> visualizza informazioni sul sistema operativo e sul kernel Linux.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>uname\r\n<\/code><\/pre>\n<p>mostra normalmente il nome del kernel.<\/p>\n<p>Per ottenere tutte le informazioni disponibili:<\/p>\n<pre><code>uname -a\r\n<\/code><\/pre>\n<p>L&#8217;output include generalmente:<\/p>\n<ul>\n<li>nome del kernel;<\/li>\n<li>hostname;<\/li>\n<li>versione del kernel;<\/li>\n<li>architettura del processore;<\/li>\n<li>data di compilazione del kernel.<\/li>\n<\/ul>\n<hr \/>\n<h3>Visualizzare data e ora con <code>date<\/code><\/h3>\n<p>Il comando <code>date<\/code> permette di visualizzare la data e l&#8217;ora correnti del sistema.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>date\r\n<\/code><\/pre>\n<p>\u00c8 inoltre possibile personalizzare il formato dell&#8217;output.<\/p>\n<p>Per visualizzare solo la data nel formato ISO:<\/p>\n<pre><code>date +%F\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>2026-07-16\r\n<\/code><\/pre>\n<p>Il comando <code>date<\/code> viene spesso utilizzato negli script Bash per registrare eventi nei file di log.<\/p>\n<hr \/>\n<h3>Quando utilizzare questi comandi<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Funzione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>type<\/code><\/td>\n<td>Individua la natura di un comando (builtin, alias o eseguibile).<\/td>\n<\/tr>\n<tr>\n<td><code>man<\/code><\/td>\n<td>Visualizza il manuale di un comando.<\/td>\n<\/tr>\n<tr>\n<td><code>uname -a<\/code><\/td>\n<td>Mostra informazioni dettagliate sul sistema e sul kernel.<\/td>\n<\/tr>\n<tr>\n<td><code>date<\/code><\/td>\n<td>Visualizza data e ora del sistema.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Quando hai dubbi sull&#8217;utilizzo di un comando, consulta sempre la relativa pagina del manuale con <code>man<\/code>. Durante la scrittura di script Bash utilizza <code>date<\/code> per registrare data e ora delle operazioni e <code>type<\/code> per verificare rapidamente la natura di un comando prima di utilizzarlo.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>type<\/code> identifica se un comando \u00e8 un builtin, un alias, una funzione o un programma eseguibile.<\/li>\n<li><code>man<\/code> consente di consultare la documentazione integrata di Linux.<\/li>\n<li><code>uname -a<\/code> visualizza informazioni dettagliate sul sistema operativo e sul kernel.<\/li>\n<li><code>date<\/code> mostra la data e l&#8217;ora del sistema ed \u00e8 molto utilizzato negli script.<\/li>\n<li>Questi strumenti rappresentano una parte fondamentale del lavoro quotidiano di un amministratore Linux.<\/li>\n<\/ul>\n<h2>\ud83d\udcda Riepilogo della lezione<\/h2>\n<p>In questa lezione hai scoperto come utilizzare la <strong>riga di comando Linux<\/strong>, uno degli strumenti pi\u00f9 potenti a disposizione di un amministratore di sistema. Hai imparato a comprendere la struttura dei comandi, utilizzare le variabili d&#8217;ambiente, sfruttare la cronologia della shell, comprendere il funzionamento della variabile <code>PATH<\/code> e utilizzare correttamente le virgolette per controllare l&#8217;interpretazione dei comandi.<\/p>\n<p>Hai inoltre conosciuto alcuni strumenti fondamentali come <code>type<\/code>, <code>man<\/code>, <code>uname<\/code> e <code>date<\/code>, indispensabili per lavorare in modo efficace dalla riga di comando.<\/p>\n<h3>Concetti principali<\/h3>\n<ul>\n<li>Hai compreso il ruolo della <strong>shell<\/strong> come interprete dei comandi Linux.<\/li>\n<li>Hai imparato la sintassi generale dei comandi e come eseguire pi\u00f9 operazioni in sequenza.<\/li>\n<li>Hai utilizzato le variabili locali e le variabili d&#8217;ambiente attraverso i comandi <code>export<\/code>, <code>echo<\/code>, <code>env<\/code> e <code>unset<\/code>.<\/li>\n<li>Hai imparato a consultare e riutilizzare la cronologia dei comandi con <code>history<\/code>, <code>!!<\/code>, <code>!n<\/code> e <strong>Ctrl + R<\/strong>.<\/li>\n<li>Hai compreso il funzionamento della variabile <code>PATH<\/code> e l&#8217;esecuzione di programmi mediante percorsi assoluti e relativi.<\/li>\n<li>Hai imparato la differenza tra virgolette singole e doppie e il loro effetto sull&#8217;espansione delle variabili.<\/li>\n<li>Hai conosciuto strumenti essenziali come <code>type<\/code>, <code>man<\/code>, <code>uname<\/code> e <code>date<\/code>.<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\ud83c\udfaf Obiettivo raggiunto<\/strong> Al termine di questa lezione sei in grado di utilizzare la shell Linux con maggiore sicurezza, comprendere il comportamento dei comandi e sfruttare gli strumenti fondamentali della riga di comando per amministrare un sistema Linux.<\/p>\n<\/blockquote>\n<h3>Comandi da ricordare<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Descrizione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>pwd<\/code><\/td>\n<td>Visualizza la directory di lavoro corrente.<\/td>\n<\/tr>\n<tr>\n<td><code>history<\/code><\/td>\n<td>Mostra la cronologia dei comandi eseguiti.<\/td>\n<\/tr>\n<tr>\n<td><code>!!<\/code><\/td>\n<td>Riesegue l&#8217;ultimo comando.<\/td>\n<\/tr>\n<tr>\n<td><code>!n<\/code><\/td>\n<td>Esegue il comando identificato dal numero <em>n<\/em> nella cronologia.<\/td>\n<\/tr>\n<tr>\n<td><code>echo $VARIABILE<\/code><\/td>\n<td>Visualizza il contenuto di una variabile.<\/td>\n<\/tr>\n<tr>\n<td><code>env<\/code><\/td>\n<td>Elenca le variabili d&#8217;ambiente.<\/td>\n<\/tr>\n<tr>\n<td><code>export<\/code><\/td>\n<td>Crea una variabile d&#8217;ambiente.<\/td>\n<\/tr>\n<tr>\n<td><code>unset<\/code><\/td>\n<td>Elimina una variabile.<\/td>\n<\/tr>\n<tr>\n<td><code>which comando<\/code><\/td>\n<td>Mostra il percorso dell&#8217;eseguibile associato a un comando.<\/td>\n<\/tr>\n<tr>\n<td><code>type comando<\/code><\/td>\n<td>Indica la natura di un comando (builtin, alias, funzione o eseguibile).<\/td>\n<\/tr>\n<tr>\n<td><code>man comando<\/code><\/td>\n<td>Apre il manuale di un comando.<\/td>\n<\/tr>\n<tr>\n<td><code>uname -a<\/code><\/td>\n<td>Visualizza informazioni dettagliate sul sistema.<\/td>\n<\/tr>\n<tr>\n<td><code>date<\/code><\/td>\n<td>Mostra la data e l&#8217;ora correnti.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p><strong>\ud83d\udca1 Preparazione all&#8217;esame LPIC-1<\/strong> Prima di proseguire assicurati di conoscere la sintassi dei comandi Linux, il funzionamento delle variabili d&#8217;ambiente, la gestione della cronologia, il ruolo della variabile <code>PATH<\/code>, la differenza tra virgolette singole e doppie e l&#8217;utilizzo dei principali strumenti di consultazione della documentazione.<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u27a1\ufe0f Prossima lezione<\/h2>\n<p>Nella prossima lezione (<strong>103.2 Elaborare flussi di testo con i filtri<\/strong>) scoprirai come utilizzare i principali strumenti GNU per elaborare e trasformare il testo. Imparerai a filtrare, ordinare, confrontare e manipolare il contenuto dei file mediante comandi come <code>cat<\/code>, <code>head<\/code>, <code>tail<\/code>, <code>cut<\/code>, <code>sort<\/code>, <code>uniq<\/code>, <code>wc<\/code> e molti altri.<\/p>\n<blockquote>\n<p><strong>\ud83d\udcd6 Materiale di approfondimento<\/strong> Consulta il PDF allegato alla lezione per esercitarti con laboratori guidati, scenari realistici e quiz di autovalutazione.<\/p>\n<\/blockquote>\n","protected":false},"comment_status":"open","ping_status":"closed","template":"","class_list":["post-3635","lesson","type-lesson","status-publish","has-post-thumbnail","hentry"],"uagb_featured_image_src":[],"uagb_author_info":{"display_name":"Rootmail Academy","author_link":"https:\/\/rootmail.it\/en\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"103.1 Lavorare dalla riga di comando La riga di comando (Command Line Interface &#8211; CLI) rappresenta uno degli strumenti pi\u00f9 potenti e versatili di un sistema Linux. Sebbene gli ambienti desktop moderni offrano interfacce grafiche intuitive, gran parte dell&#8217;amministrazione di server, sistemi cloud e infrastrutture Linux viene ancora oggi eseguita direttamente dal terminale. La shell&hellip;","_links":{"self":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson\/3635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson"}],"about":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/types\/lesson"}],"replies":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/comments?post=3635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media\/3673"}],"wp:attachment":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media?parent=3635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}