# Il comando Echo di Linux: una spiegazione

Le [**distribuzioni Linux**](https://www.ionos.it/digitalguide/server/know-how/linux-lalternativa-conveniente-a-windows/ "Linux, l’alternativa conveniente a Windows") vi consentono di configurare e gestire autonomamente il sistema. Il **comando della bash denominato Echo** è uno dei più diffusi in assoluto. Viene utilizzato nei file e negli script Bash al fine di visualizzare un messaggio di stato in un file o sul vostro schermo. Vi spieghiamo come funziona il comando Echo di Linux e come fare per impostare i colori per il font e per lo sfondo.

## Che cos’è il comando Echo e come funziona?

Il comando Echo di Linux ripete quello che lo si incarica di ripetere. La sua funzione è estremamente facile e per questo assolutamente necessaria. Senza *echo* non visualizzereste, ad esempio, i risultati degli **script della shell**. La shell è l’interfaccia utente nella quale potete digitare svariati comandi, come, ad esempio, i comandi Linux [Tail](https://www.ionos.it/digitalguide/server/configurazione/comando-tail-di-linux/ "Comando tail di Linux"), [Head](https://www.ionos.it/digitalguide/server/configurazione/comando-head-di-linux/ "Comando head di Linux"), [Cat](https://www.ionos.it/digitalguide/server/configurazione/linux-comando-cat/ "Linux: comando cat") o lo stesso comando Echo.

Ma come funziona il comando Echo esattamente e che aspetto ha? Qui di seguito riportiamo la sintassi del comando:

```none
echo [option] [string]
```

Il funzionamento di base di *echo* è lo stesso in tutti i linguaggi di programmazione: digitate quello che volete, nella maggior parte dei casi sotto forma di una **sequenza di caratteri**, e quelle stesse informazioni vengono riprodotte esattamente sullo schermo.

---

### N.B.

L’interfaccia utente o l’interprete a riga di comando shell viene chiamata anche bash shell. **Bash è la shell standard** nelle distribuzioni Linux e la finestra di testo all’interno della quale digitate i vostri comandi. Il programma *echo* è una componente elementare di Ubuntu ed è preinstallato su tutti i sistemi operativi corrispondenti.

---

## Come visualizzare testo e informazioni con il comando echo di Linux?

Nel nostro **primo esempio** vogliamo visualizzare un testo e il contenuto di alcune variabili nella bash. Per scrivere il testo “Questo è un esempio”, digitate il seguente codice nel terminale:

```none
$ echo Questo è un esempio
Questo è un esempio
```

Nel passaggio successivo vogliamo invece **visualizzare una variabile**. È sufficiente indicare il nome della variabile, ad esempio PWD (per Print Working Directory, o più semplicemente indicare la cartella di lavoro). Il comando appare così:

```none
$ echo $PWD 
/Users/Name/Desktop
```

Dopodiché c’è anche la possibilità di **combinare variabili e testo**, come nell’esempio seguente:

```none
$ echo "Vi trovate nella cartella: $PWD" 
Vi trovate nella cartella: /Users/Name/Desktop
```

---

### N.B.

Per visualizzare le informazioni non c’è soltanto il comando della bash *echo*, ma anche *printf* e *tput*. Tra questi **tput** è uno strumento più complesso in quanto può essere usato per resettare le informazioni. Con **printf** ed **echo** invece le informazioni vengono soltanto visualizzate.

---

## Quali caratteri di controllo esistono per echo?

Se avete capito il principio di funzionamento del comando Echo, potete ora passare ai **caratteri di controllo** che possono essere utilizzati in combinazione con il comando. Per caratteri di controllo si intendono quei caratteri che non vengono visualizzati sullo schermo ma **parti di codice** che servono a definire, per esempio, l’interruzione di riga.

Attenzione: *echo* comprende i caratteri di controllo soltanto se impostate l’opzione **-e**. Nell’esempio seguente deve essere visualizzato "\\n", che solitamente serve a **segnalare una nuova riga** e quindi l’**andare a capo**.

```none
$ echo "\n" 
\n
```

Se come nell’esempio successivo dovete andare effettivamente a capo, allora aggiungete **-e**:

```none
$ echo -e "\n"
```

---

### N.B.

Il comando Echo termina solitamente andando a capo. Per impedirlo potete aggiungere **\\c** al termine del comando desiderato.

---

Di seguito una panoramica dei caratteri di controllo che avete a disposizione nella bash:

<table>
  <tbody>
    <tr>
      <td><strong>Caratteri Escape</strong></td>
      <td><strong>Significato</strong></td>
    </tr>
    <tr>
      <td>\\a</td>
      <td>Tono di allarme</td>
    </tr>
    <tr>
      <td>\\b</td>
      <td>Indietro di un carattere</td>
    </tr>
    <tr>
      <td>\\c</td>
      <td>Impedire l’andare a capo</td>
    </tr>
    <tr>
      <td>\\f</td>
      <td>Indietro</td>
    </tr>
    <tr>
      <td>\\n</td>
      <td>Andare a capo</td>
    </tr>
    <tr>
      <td>\\r</td>
      <td>Tornare all’inizio della riga</td>
    </tr>
    <tr>
      <td>\\t</td>
      <td>Tabulazione (orizzontale)</td>
    </tr>
    <tr>
      <td>\\v</td>
      <td>Tabulazione (verticale)</td>
    </tr>
    <tr>
      <td>\\\\</td>
      <td>Visualizzazione della barra rovesciata (backlash)</td>
    </tr>
    <tr>
      <td>\\0nnn</td>
      <td>[Caratteri ASCII](https://www.ionos.it/digitalguide/server/know-how/ascii-american-standard-code-for-information-interchange/) in formato ottale (solo sh e ksk)</td>
    </tr>
    <tr>
      <td>\\nnn</td>
      <td>Caratteri ACSII in formato ottale (solo bash)</td>
    </tr>
  </tbody>
</table>

## Come definire i colori per font e sfondo con il comando echo?

Con il comando Echo potete anche stabilire alcuni attributi di come deve essere visualizzato il testo, come i colori del font e dello sfondo. Per farlo dovete includere **tutti i caratteri tra virgolette** o scrivere direttamente i colori desiderati sotto forma di variabili, così da rendere leggibile la sequenza di caratteri. Un colore viene sempre introdotto da **\\033\[**. La prima opzione appare così (**31m** corrisponde al colore rosso):

```none
$ echo -e "\033[31mQuesto testo è di colore rosso"
```

Per reimpostare il colore degli attributi successivi digitate la seguente stringa di caratteri:

```none
$ echo -e "\033[0m"
```

Definendo invece i colori nel vostro script bash sotto forma di variabili, diventa tutto più facile da comprendere:

```none
red='\033[31m'
reset='\033[0m'
```

Dopodiché potete riutilizzare lo stesso colore semplicemente con il comando Echo:

```none
$ echo -e "${red}Questo testo è di colore rosso.${reset}E ora il testo è di nuovo del colore standard."
```

Nella seguente tabella trovate i **caratteri** **escape** per diversi colori, sia per il font che per lo sfondo.

<table>
  <tbody>
    <tr>
      <td><strong>Carattere di controllo</strong></td>
      <td><strong>Risultato</strong></td>
    </tr>
    <tr>
      <td>\\033\[30m</td>
      <td>Font nero</td>
    </tr>
    <tr>
      <td>\\033\[31m</td>
      <td>Font rosso</td>
    </tr>
    <tr>
      <td>\\033\[32m</td>
      <td>Font verde</td>
    </tr>
    <tr>
      <td>\\033\[33m</td>
      <td>Font giallo</td>
    </tr>
    <tr>
      <td>\\033\[34m</td>
      <td>Font blu</td>
    </tr>
    <tr>
      <td>\\033\[35m</td>
      <td>Font magenta</td>
    </tr>
    <tr>
      <td>\\033\[36m</td>
      <td>Font turchese</td>
    </tr>
    <tr>
      <td>\\033\[37m</td>
      <td>Font bianco</td>
    </tr>
    <tr>
      <td>\\033\[40m</td>
      <td>Sfondo nero</td>
    </tr>
    <tr>
      <td>\\033\[41m</td>
      <td>Sfondo rosso</td>
    </tr>
    <tr>
      <td>\\033\[42m</td>
      <td>Sfondo verde</td>
    </tr>
    <tr>
      <td>\\033\[43m</td>
      <td>Sfondo giallo</td>
    </tr>
    <tr>
      <td>\\033\[44m</td>
      <td>Sfondo blu</td>
    </tr>
    <tr>
      <td>\\033\[45m</td>
      <td>Sfondo magenta</td>
    </tr>
    <tr>
      <td>\\033\[46m</td>
      <td>Sfondo turchese</td>
    </tr>
    <tr>
      <td>\\033\[47m</td>
      <td>Sfondo grigio</td>
    </tr>
  </tbody>
</table>

## Come impostare le caratteristiche testuali con il comando echo?

Oltre ai colori di font e sfondo, con il comando Echo potete impostare anche alcuni attributi testuali come **il grassetto o la sottolineatura**. Di seguito trovate i caratteri di controllo corrispondenti a ciascuna caratteristica:

<table>
  <tbody>
    <tr>
      <td><strong>Carattere di controllo</strong></td>
      <td><strong>Risultato</strong></td>
    </tr>
    <tr>
      <td>\\033\[0m</td>
      <td>Reset di tutti gli attributi</td>
    </tr>
    <tr>
      <td>\\033\[1m</td>
      <td>Grassetto</td>
    </tr>
    <tr>
      <td>\\033\[4m</td>
      <td>Sottolineatura</td>
    </tr>
    <tr>
      <td>\\033\[5m</td>
      <td>Evidenziato</td>
    </tr>
    <tr>
      <td>\\033\[7m</td>
      <td>Visualizzazione inversa</td>
    </tr>
  </tbody>
</table>

Se desiderate visualizzare un testo di colore rosso in grassetto, il codice è il seguente:

```none
$ echo -e "\033[1;31mQuesto testo è di colore rosso e in grassetto."
```

---

### Consiglio

Abbiamo riassunto per voi una panoramica di tutti i [comandi Linux](https://www.ionos.it/digitalguide/server/configurazione/i-comandi-principali-di-linux-una-spiegazione/ "I comandi principali di Linux: una spiegazione") più importanti.

---


This is a markdown version of: [https://www.ionos.it/digitalguide/server/configurazione/comando-echo-di-linux/](https://www.ionos.it/digitalguide/server/configurazione/comando-echo-di-linux/) for AI/LLM consumption.