Come utilizzare il comando Echo su Linux
- Dave McKay
@TheGurkha
- 29 ottobre 2019, 8:00 EDT
Il echo
è perfetto per scrivere testo formattato nella finestra del terminale. E non deve essere testo statico. Può includere variabili di shell, nomi di file e directory. È inoltre possibile reindirizzare l’eco per creare file di testo e file di registro. Segui questa semplice guida per scoprire come.
Echo ripete quello che dici di ripetere
A Zeus piaceva lasciare il Monte Olimpo per andare in compagnia di bellissime ninfe. In un viaggio, disse a una ninfa di montagna chiamata Echo di aggirare sua moglie, Era, se lo avesse seguito. Era è venuta a cercare Zeus ed Echo ha fatto tutto il possibile per mantenere Hera in conversazione. Alla fine, Era perse le staffe e maledisse la povera Echo in modo che ripetesse solo le ultime parole che qualcun altro aveva detto. Quello che Hera ha fatto a Zeus quando lo ha raggiunto non lo sa nessuno.
E questo, più o meno, è il destino di echo
nella vita. Ripete ciò che è stato detto di ripetere. Questa è una funzione semplice, ma fondamentale. Senza echo
, non saremmo in grado di ottenere un output visibile dagli script della shell, ad esempio.
Anche se non siamo carichi di una moltitudine di campane e fischietti, ci sono buone probabilità che echo
abbia alcune funzionalità che non conoscevi o che avevi dimenticato.
echo? echo!
La maggior parte dei sistemi Linux fornisce due versioni di echo
. La shell Bash ha il proprio echo
integrato e c’è anche una versione eseguibile binaria di echo
.
Possiamo vedere le due diverse versioni utilizzando i seguenti comandi:
type echo
whereis echo
Il type
ci dice se il comando che gli passiamo come argomento è un builtin di shell, un eseguibile binario, un alias o una funzione. Ci segnala che echo
è una shell incorporata.
Non appena ha trovato una risposta, type
smette di cercare ulteriori corrispondenze. Quindi non ci dice se ci sono altri comandi con lo stesso nome presenti nel sistema. Ma ci dice quale trova per primo. Ed è quello che verrà usato di default quando emettiamo quel comando.
Il comando whereis
cerca l’eseguibile binario, il codice sorgente e la pagina man per il comando che gli passiamo come parametro della riga di comando. Non cerca i builtin della shell perché non hanno un eseguibile binario separato. Sono parte integrante dell’eseguibile Bash.
Il comando whereis
segnala che echo
è un eseguibile binario situato nella directory /bin
.
Per utilizzare quella versione di echo
dovresti chiamarla esplicitamente fornendo il percorso dell’eseguibile sulla riga di comando:
/bin/echo --version
Il builtin della shell non sa cosa sia --version
l’argomento della riga di comando è, lo ripete semplicemente nella finestra del terminale:
echo --version
Gli esempi mostrati qui usano tutti il valore predefinito versione di echo
, nella shell Bash.
Scrittura di testo sul terminale
Per scrivere una semplice stringa di testo nella finestra del terminale , digita echo
e la stringa che desideri venga visualizzata:
echo My name is Dave.
Il testo viene ripetuto per noi. Ma mentre fai esperimenti, scoprirai presto che le cose possono diventare leggermente più complicate. Guarda questo esempio:
echo My name is Dave and I"m a geek.
La finestra del terminale mostra un segno >
e si siede lì, in attesa. Ctrl + C ti riporterà al prompt dei comandi. Che cosa è successo lì?
La virgoletta singola o l’apostrofo nella parola “Sono” confuso echo
. Ha interpretato quella virgoletta singola come l’inizio di una sezione citata di testo. Poiché non ha rilevato virgolette singole di chiusura, echo
era in attesa di ulteriori input. Si aspettava che ulteriori input includessero le virgolette singole mancanti che stavano aspettando.
Per includere una singola virgoletta in una stringa, la soluzione più semplice è racchiudere l’intera stringa tra virgolette doppie:
echo "My name is Dave and I"m a geek."
Avvolgere il testo tra virgolette doppie è un buon consiglio generale. Negli script, delimita in modo chiaro i parametri che stai passando a echo
. Ciò rende la lettura e il debug degli script molto più semplici.
E se volessi includere una virgoletta doppia nella stringa di testo?È facile, basta inserire una barra rovesciata \
davanti alle virgolette doppie (senza spazi tra di esse).
echo "My name is Dave and I"m a \"geek.\""
Questo racchiude la parola “disadattato” tra virgolette doppie per noi. Vedremo presto altri di questi caratteri con escape backslash.
Uso di variabili con echo
Finora , abbiamo scritto un testo predefinito nella finestra del terminale. Possiamo usare variabili con echo
per produrre un output più dinamico e con valori inseriti per noi dalla shell. Noi può definire una semplice variabile con questo comando:
my_name="Dave"
Una variabile chiamata my_name
è stata creata. È stata assegnato il valore del testo “Dave”. Possiamo usare il nome della variabile nelle stringhe che passiamo a echo
, e il valore della variabile verrà scritto nella finestra del terminale. Devi inserire un segno di dollaro $
davanti al nome della variabile per far sapere a echo
che si tratta di una variabile.
C’è un avvertimento. Se hai racchiuso la stringa tra virgolette singole, echo
tratterà tutto letteralmente. Per visualizzare il valore della variabile e non il nome della variabile, utilizza virgolette doppie.
echo "My name is $my_name"
echo "My name is $my_name"
In modo abbastanza appropriato, vale la pena ripeterlo:
- L’uso di virgolette singole fa sì che il testo venga scritto nella finestra del terminale in modo letterale.
- L’uso di virgolette doppie produce la variabile che viene interpretata, chiamata anche espansione della variabile, e il valore viene scritto nella finestra del terminale.
CORRELATI: Come lavorare con le variabili in Bash
Usare i comandi con echo
Possiamo usare un comando con echo
e incorporare il suo output nella stringa che viene scritta nella finestra del terminale. Dobbiamo usare il simbolo del dollaro $
come se il comando fosse una variabile e racchiudere l’intero comando tra parentesi.
Useremo il comando date . Un consiglio è usare il comando da solo prima di iniziare a usarlo con echo
. In questo modo, se c’è qualcosa di sbagliato nella sintassi del tuo comando, lo identifichi e lo correggi prima di includerlo nel comando echo
. Quindi, se il comando echo
non fa quello che ti aspetti, saprai che il problema deve essere con la sintassi echo
perché tu hai già provato la sintassi del comando.
Quindi, prova questo nella finestra del terminale:
date +%D
E, soddisfatti che siamo ottenendo ciò che ci aspettiamo dal comando date, lo integreremo in un echo
comando:
echo "Today"s date is: $(date +%D)"
Nota che il comando è all’interno delle parentesi e il segno del dollaro $
è immediatamente prima della prima parentesi.
Formattazione del testo con echo
L’opzione -e
(abilita gli escape con barra rovesciata) ci permette di utilizzare alcuni caratteri con caratteri di escape con barra rovesciata per cambiare il layout del testo. Questi sono i caratteri di escape backslash che possiamo usare:
Usiamone alcuni e vediamo cosa fanno.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
Il testo è suddiviso in una nuova riga in cui abbiamo utilizzato i caratteri \n
e viene inserita una tabulazione in cui abbiamo utilizzato i caratteri \t
.
echo -e "Here\vare\vvertical\vtabs"
Come i \n
nuovi caratteri di riga, una tabulazione verticale \v
sposta il testo nella riga sottostante. Tuttavia, a differenza dei \n
nuovi caratteri di riga, la \v
scheda verticale non inizia la nuova riga dalla colonna zero. Utilizza la colonna corrente.
I \b
caratteri backspace spostano il cursore indietro di un carattere. Se c’è più testo da scrivere sul terminale, quel testo sovrascriverà il carattere precedente.
echo -e "123\b4"
Il “3” viene sovrascritto dal carattere ” 4 ”.
Il \r
carattere di ritorno a capo fa sì che echo
ritorni all’inizio della riga corrente e scrivi qualsiasi altro testo dalla colonna zero.
echo -e "123\r456"
I caratteri “123” vengono sovrascritti dai caratteri “456”.
Il \a
carattere di avviso produrrà un “segnale acustico”. Utilizza il suono di avviso predefinito per il tema corrente.
echo -e "Make a bleep\a"
-n
L’opzione (no newline) non è una sequenza con backslash, ma influisce sull’estetica del layout del testo, quindi ne parleremo qui. Impedisce a echo
di aggiungere una nuova riga alla fine del testo Il prompt dei comandi viene visualizzato direttamente dopo il testo scritto nella finestra del terminale.
echo -n "no final newline"
Utilizzo di echo con file e directory
Puoi utilizzare echo
come ordinamento della versione da povero di ls
. Le tue opzioni sono poche e lontane tra loro quando usi echo
in questo modo. Se hai bisogno di qualsiasi tipo di fedeltà o controllo preciso, è meglio usare ls
e la sua legione di opzioni.
Questo comando elenca tutti i file e directory nella directory corrente:
echo *
Questo comando elenca tutti i file e le directory nella directory corrente il cui nome inizia con “D”:
echo D*
Questo comando elenca tutti i file “.desktop” nella directory corrente:
echo *.desktop
Sì. Questo non sta giocando ai punti di forza di echo
. Utilizza ls
.
Scrittura su file con echo
Possiamo reindirizzare l’output da echo
e creare file di testo o scrivere in file di testo esistenti.
Se usiamo l’operatore di reindirizzamento >
, il file viene creato se non esiste. Se il file esiste, l’output di echo
viene aggiunto all’inizio del file, sovrascrivendo qualsiasi contenuto precedente.
Se usiamo >>
operatore di reindirizzamento, il file viene creato se non esiste. L’output di echo
viene aggiunto alla fine del file e non sovrascrive alcun contenuto esistente del file.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Con il primo comando viene creato un nuovo file e viene inserito del testo dentro. Il secondo comando aggiunge una riga di testo alla fine del file. Il comando cat
mostra il contenuto del file nella finestra del terminale.
E, naturalmente, possiamo includere variabili per aggiungere alcune informazioni utili al nostro file. Se il file è un file di log, potremmo volerci aggiungere un timestamp. Possiamo farlo con il prossimo comando.
Nota le virgolette singole attorno ai parametri per il comando date
. Impediscono che lo spazio tra i parametri venga interpretato come la fine dell’elenco dei parametri. Garantiscono che i parametri vengano trasmessi correttamente a date
.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Il nostro file di log è stato creato per noi e cat
ci mostra che il datestamp e il timestamp sono stati entrambi aggiunti.
CORRELATI : Cosa sono stdin, stdout e stderr su Linux?
Questo è il Repertorio di echo
Un comando semplice, ma indispensabile. Se non esistesse, dovremmo inventarlo.
Gli imbrogli di Zeus hanno fatto qualcosa di buono, dopotutto.
Dave McKay ha usato per la prima volta i computer quando era in voga il nastro di carta perforato, e da allora continua a programmare. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come responsabile della protezione dei dati. Dave è un evangelista di Linux e sostenitore dell’open source. Leggi la biografia completa “