Come Utilizzare il Comando Echo su Linux
echo
comando è perfetto per la scrittura del testo formattato la finestra del terminale. E non deve essere testo statico. Può includere variabili di shell, nomi di file e directory. È inoltre possibile reindirizzare echo per creare file di testo e file di registro. Segui questa semplice guida per scoprire come.
Echo Ripete ciò che gli dici di ripetere
Zeus amava lasciare il Monte Olimpo per consorte con belle ninfe. Durante un viaggio, disse a una ninfa di montagna chiamata Echo di lasciare sua moglie, Hera, se lo avesse seguito. Era venne a cercare Zeus, e Echo fece tutto il possibile per tenere Hera in conversazione. Alla fine, Hera perse la calma e maledisse la povera Eco in modo che ripetesse solo le ultime parole che qualcun altro aveva detto. Quello che Hera ha fatto a Zeus quando lo ha raggiunto è un’ipotesi di chiunque.
E questo, praticamente, è il lotto di echo
nella vita. Ripete ciò che è stato detto di ripetere. Questa è una funzione semplice, ma vitale. Senza echo
, non saremmo in grado di ottenere un output visibile dagli script della shell, ad esempio.
Pur non essendo carico di una moltitudine di campane e fischietti, c’è una buona probabilità cheecho
abbia alcune funzionalità che non sapevi o che avevi dimenticato.
eco? eco!
La maggior parte dei sistemi Linux fornisce due versioni diecho
. La shell Bash ha il proprio echo
integrato in esso, e c’è anche una versione eseguibile binaria di echo
.
Possiamo vedere le due diverse versioni, utilizzando i seguenti comandi:
type echo
whereis echo
type
comando ci dice se il comando da passare come argomento è un comando interno della shell, un eseguibile binario, un alias, o di una funzione. Ci segnala cheecho
è 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. E questo è quello che verrà utilizzato di default quando emettiamo quel comando.
Il comandowhereis
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 comandowhereis
segnala cheecho
è un eseguibile binario situato nella directory/bin
.
Per utilizzare la versione di echo
si avrebbe bisogno di chiamare in modo esplicito da fornire il percorso del file eseguibile sulla riga di comando:
/bin/echo --version
La shell builtin, non sa che il --version
argomento della riga di comando, solo che lo si ripete nella finestra del terminale:
echo --version
Tutti gli esempi mostrati qui usano la versione predefinita diecho
, nella shell Bash.
la Scrittura di un Testo per Terminale
Per scrivere una semplice stringa di testo nella finestra di terminale, digitare echo
e la stringa che si desidera visualizzare:
echo My name is Dave.
Il testo è ripetuto per noi. Ma come si sperimenta, scoprirete presto che le cose possono ottenere un po ‘ più complicato. Guarda questo esempio:
echo My name is Dave and I'm a geek.
La finestra del terminale visualizza un segno>
e si trova lì, in attesa. Ctrl + C ti restituirà al prompt dei comandi. Cos’e ‘successo li’?
La singola citazione o apostrofo nella parola “Sono” confusoecho
. Ha interpretato quella singola citazione come l’inizio di una sezione di testo citata. Poiché non ha rilevato una singola citazione di chiusura,echo
stava aspettando più input. Si aspettava che ulteriori input includessero la citazione singola mancante che stava aspettando.
Per includere una singola citazione in una stringa, la soluzione più semplice è quella di avvolgere l’intera stringa all’interno di virgolette doppie:
echo "My name is Dave and I'm a geek."
Avvolgere il testo in virgolette doppie è un buon consiglio generale. Negli script, delimita in modo pulito i parametri che stai passando a echo
. Questo rende la lettura—e il debug-script molto più facile.
Cosa succede se si desidera includere un carattere di virgolette doppie nella stringa di testo? È facile, basta mettere un backslash \
davanti al segno di virgolette doppie (senza spazio tra di loro).
echo "My name is Dave and I'm a \"geek.\""
Questo avvolge la parola “geek” in virgolette doppie per noi. Vedremo più di questi personaggi backslash-escape a breve.
Usando variabili con echo
Finora, abbiamo scritto 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. Possiamo definire una variabile semplice con questo comando:
my_name="Dave"
È stata creata una variabile chiamatamy_name
. E ‘stato 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 mettere un simbolo di dollaro $
davanti al nome della variabile per far sapere a echo
che è una variabile.
C’è un avvertimento. Se hai avvolto la stringa in virgolette singoleecho
tratterà tutto alla lettera. Per visualizzare il valore della variabile e non il nome della variabile, utilizzare le virgolette doppie.
echo 'My name is $my_name'
echo "My name is $my_name"
In modo un po ‘ appropriato, vale la pena ripetere:
- L’uso di virgolette singole fa sì che il testo venga scritto nella finestra del terminale in modo letterale.
- Usando le virgolette doppie la variabile viene interpretata-chiamata anche espansione variabile-e il valore viene scritto nella finestra del terminale.
RELATED: Come lavorare con le variabili in Bash
Usando i comandi Con echo
Possiamo usare un comando conecho
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 avvolgere l’intero comando tra parentesi.
Useremo il comando date. Un consiglio è quello di utilizzare 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é hai già dimostrato la sintassi del comando.
Quindi, prova questo nella finestra del terminale:
date +%D
E, soddisfatti dei risultati che stiamo ottenendo quello che ci aspettiamo dalla data di comando, dovremo integrare in un echo
comando:
echo "Today's date is: $(date +%D)"
si noti 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
(enable backslash escape) consente di utilizzare alcuni caratteri di backslash escape per modificare il layout del testo. Questi sono i caratteri con 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 viene diviso in una nuova riga in cui sono stati utilizzati i caratteri\n
e viene inserita una scheda in cui sono stati utilizzati i caratteri\t
.
echo -e "Here\vare\vvertical\vtabs"
Come i \n
nuovi caratteri di riga, una scheda verticale \v
sposta il testo nella riga sottostante. Ma, a differenza dei caratteri di riga\n
, la scheda verticale\v
non avvia la nuova riga alla colonna zero. Utilizza la colonna corrente.
I caratteri \b
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” è sovrascritto dal “4”.
Il carattere di ritorno a capo\r
fa sì cheecho
ritorni all’inizio della riga corrente e scriva qualsiasi ulteriore testo dalla colonna zero.
echo -e "123\r456"
I caratteri “123” vengono sovrascritti dai caratteri “456”.
Il carattere di avviso \a
produrrà un “bleep” udibile.”Utilizza il suono di avviso predefinito per il tema corrente.
echo -e "Make a bleep\a"
L’opzione-n
(nessuna nuova riga) non è una sequenza con escape backslash, ma influisce sui cosmetici del layout del testo, quindi ne parleremo qui. Impedisce echo
di aggiungere una nuova riga alla fine del testo. Il prompt dei comandi viene visualizzato direttamente dopo il testo che viene scritto nella finestra del terminale.
echo -n "no final newline"
Usando echo con file e directory
Puoi usare echo
come una sorta di versione per poveri di ls
. Le tue opzioni sono poche e lontane tra loro quando usiecho
in questo modo. Se hai bisogno di qualsiasi tipo di fedeltà o controllo fine, è meglio usare ls
e la sua legione di opzioni.
Questo comando elenca tutti i file e le 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 “.desktop” file nella directory corrente:
echo *.desktop
Sì. Questo non sta giocando ai punti di forza di echo
. Utilizzare ls
.
Scrivere su file con echo
Possiamo reindirizzare l’output daecho
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 da echo
viene aggiunto all’inizio del file, sovrascrivendo qualsiasi contenuto precedente.
Se usiamo l’operatore di reindirizzamento >>
, il file viene creato se non esiste. L’output da 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
Un nuovo file viene creato dal primo comando e viene inserito del testo. Il secondo comando aggiunge una riga di testo nella parte inferiore del file. Il comandocat
visualizza 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 desiderare di avere un timestamp aggiunto ad esso. Possiamo farlo con il prossimo comando.
Nota le virgolette singole attorno ai parametri per il comandodate
. Impediscono che lo spazio tra i parametri venga interpretato come la fine dell’elenco dei parametri. Assicurano che i parametri vengano passati 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 ad esso.
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 del bene, dopo tutto.