Come principiante, quando inizi a lavorare con gli script Bash, il primo comando che probabilmente imparerai e utilizzerai è echo
comando. Puoi pensare al comando bash echo qualcosa di simile a print
comando in altri linguaggi di programmazione. L'echo
Il comando è un bash integrato e il suo scopo è stampare l'output su stdout (cioè Terminale).
In questo articolo, ti mostrerò cos'è il comando bash echo e come usarlo negli script della shell. Prima di entrare nell'argomento, vediamo la differenza tra un bulit-in Bash e un comando esterno.
Comando eco integrato di Bash vs eco esterno
In Linux e altri sistemi simili a Unix, alcuni comandi sono forniti sia come comandi interni che esterni. Ad esempio, il /bin/echo
è un comando esterno che ha lo stesso nome di echo
bash integrato.
Quando chiamiamo un comando che esiste sia come integrato che come comando esterno, di solito il built-in viene eseguito per impostazione predefinita. Perché l'ordine di precedenza per i nomi dei comandi è alias
, quindi function
, quindi builtin
, e quindi comando esterno nelle directory elencate in $PATH
In ordine.
Se vuoi forzare un comando esterno disponibile sia come comando integrato che esterno, usa semplicemente il suo percorso completo.
Per dirla chiaramente, il seguente comando chiama il built-in bash:
$ echo <some-text>
E le seguenti chiamate esterne echo
comando:
$ /bin/echo <some-text>
Per scoprire se un comando è integrato o esterno, possiamo utilizzare tipo comando:
$ type echo echo is a shell builtin
Per visualizzare tutte le posizioni che contengono l'eseguibile specificato, usa -a
bandiera:
$ type -a echo echo is a shell builtin echo is /usr/bin/echo
Per maggiori dettagli su type
utilizzo del comando, fare riferimento al seguente link:
- Esercitazione sui comandi di tipo con esempi per principianti
In questa guida, parleremo dell'echo
integrato in bash comando, non quello esterno.
Visualizza la guida del comando bash echo
Quasi tutti i comandi Linux là fuori hanno una pagina man o una sezione della guida per capire come usare quel comando. Il manuale di aiuto di echo
comando è incluso nella pagina di manuale di Bash
Per accedere alla pagina man di bash
comando, esegui:
$ man bash
Ora, digita /echo
e premi n
fino a visualizzare la sezione della guida di echo
comando.
In alternativa, puoi usare il seguente comando one-liner per visualizzare la sezione della guida di echo
comando:
$ man bash | less --pattern='^ *echo +\['
Struttura del comando echo
L'echo
comando accetta tre argomenti opzionali e il testo da stampare su stdout.
echo [-neE] [arg ...] -n → Do not append a new line -e → enable interpretation of backslash escapes -E → disable the interpretation of backslash escapes (default)
Saltiamo i tre argomenti opzionali per ora e vediamo come usare echo
per stampare un testo sullo stdout (Terminale).
Puoi eseguire la seguente parte di codice direttamente nel terminale o creare un file di script e quindi eseguirlo. Lo eseguirò direttamente nel Terminale:
$ echo "Hello World" Hello World
Dai un'occhiata all'esempio sopra. È il tradizionale hello world
programma che eseguiamo ogni volta che impariamo un nuovo linguaggio e lo eseguiamo come primo codice. L'echo
il comando qui accetta "hello world"
text come argomento e lo stampa sul terminale (Stdout).
Come eliminare il carattere di nuova riga
Il comportamento predefinito di bash echo
comando è che aggiungerà automaticamente una nuova riga (\n
). Esegui lo stesso hello world
programma di nuovo e nota che il prompt del terminale verrà visualizzato in una nuova riga.
$ echo "Hello world" Hello world
Ora, se desideri eliminare questo comportamento, puoi utilizzare il "-n"
flag che sopprimerà la nuova riga e il prompt del terminale verrà stampato nella stessa riga mostrata di seguito.
$ echo -n "Hello world" Hello world
Cosa succede quando non viene passato alcun argomento
Quando nessun argomento viene passato al comando echo, il comando non fallirà ma restituirà una nuova riga vuota. Avvia il tuo terminale ed esegui "echo"
e vedrai che stampa solo una riga vuota ed esce.
$ echo
$ echo $?
0
Puoi ignorare questo comportamento aggiungendo il "-n"
flag che non stamperà una nuova riga anche se non viene passato alcun argomento.
$ echo -n
Dove sarà utile? Potresti chiederti. Quando vuoi delle righe vuote tra i tuoi output, puoi usare echo
senza argomenti.
Lavorare con variabili e comandi
L'echo
Il comando interpreterà le variabili definite dall'utente o della shell che vengono passate come argomento e stamperà il valore. Dai un'occhiata agli esempi qui sotto.
Innanzitutto, la variabile env "SHELL"
viene passato a echo
comando e stampa il valore della variabile.
# Environmental Variable: $ echo " I am currently using ${SHELL}" I am currently using /bin/bash
In secondo luogo, la variabile definita dall'utente "NAME"
viene passato a echo
comando e il valore viene stampato sul terminale.
# User Defined Variable: $ NAME="PoP_OS" $ echo "I am using ${NAME}" I am using PoP_OS
Puoi anche eseguire comandi all'interno degli argomenti. Dai un'occhiata all'esempio seguente in cui il "uname -r"
comando viene passato come argomento e il comando viene interpretato e l'output viene stampato.
$ echo "KERNEL_VERSION=$(uname -r)" KERNEL_VERSION=5.11.0-7620-generic
Impatto dell'utilizzo di virgolette singole e doppie
In tutti gli esempi precedenti, potresti aver notato che ho usato virgolette doppie attorno agli argomenti. Quindi cosa succede quando l'argomento non è racchiuso tra virgolette? Echo Command non fallirà e otterrai lo stesso output.
Dai un'occhiata al seguente esempio. Sto eseguendo lo stesso comando che ho usato nella sezione precedente ma senza virgolette e stampa l'output senza alcun errore.
$ echo I am using ${NAME} I am using Pop_OS
Come buona pratica, racchiudere sempre gli argomenti tra virgolette.
Se l'argomento è il testo normale, puoi utilizzare virgolette singole o doppie. Ma se desideri eseguire qualsiasi comando o espandere qualsiasi variabile nell'argomento, dovresti usare virgolette doppie, non virgolette singole.
La virgoletta singola impedirà l'esecuzione di qualsiasi comando o l'espansione della variabile. Tratterà semplicemente l'intero argomento come testo normale.
Guarda l'esempio qui sotto. Quando racchiudo l'argomento tra virgolette singole, la variabile "NAME"
non viene interpretato e trattato come testo.
# SINGLE QUOTES $ echo 'I am using ${NAME}' I am using ${NAME} # DOUBLE QUOTES $ echo "I am using Linux ${NAME}" I am using Linux PoP_OS
Reindirizzamento dell'uscita e piping
Come affermato in precedenza, l'echo
il comando stampa l'output sullo standard output (terminale) per impostazione predefinita. Quando scrivi script di shell, potresti trovarti nella situazione di memorizzare l'output di echo
comando in un file. Puoi farlo usando il reindirizzamento bash operatore.
$ echo "Welcome to OSTechNix" > /tmp/op.log
$ cat /tmp/op.log Welcome to OSTechNix
Lettura consigliata:
- Il reindirizzamento di Bash spiegato con esempi
- Tutorial Bash Heredoc per principianti
Puoi anche inviare l'output di echo
comando alla pipe
per ulteriore elaborazione.
$ echo "I am using ${NAME}" I am using PoP_OS
$ echo "I am using ${NAME}" | grep -i -o POP PoP
Stringa multilinea
Il tuo argomento a volte può generarsi su più di una riga. Puoi racchiudere l'argomento multilinea tra virgolette doppie per stampare l'output considerando nuove righe, tabulazioni e spazi.
$ echo "This is Line 1
This is Line 2
This is Line 3"
In alcuni casi, sebbene il tuo argomento venga passato come una stringa multilinea, potresti volerlo stampare come una singola riga. In questi casi, utilizza il "\"
simbolo alla fine di ogni riga, quindi la riga successiva sarà in continuazione con la riga precedente.
$ echo "I am running \ the echo command \ again"
Risultato di esempio:
I am running the echo command again
Questo non è esclusivamente specifico per bash echo
comando. Puoi utilizzare questo approccio per generare comandi molto grandi su più righe per una migliore leggibilità.
La barra rovesciata sfugge all'interpretazione
L'echo
comando accetta molti caratteri di escape come argomenti. Affinché questi caratteri speciali vengano riconosciuti dal comando echo, il "-e"
la bandiera dovrebbe essere passata. Puoi ottenere l'elenco dei caratteri speciali supportati da echo
pagina man del comando.
Non utilizzerai tutti i caratteri speciali nella tua vita quotidiana. Utilizzerai principalmente caratteri di nuova riga, tabulazioni e caratteri di escape barra rovesciata.
Carattere di nuova riga - \n
Una nuova riga verrà aggiunta quando passerai \n
all'echo
comando. Puoi anche passare più \n che aggiungeranno più righe di conseguenza.
$ echo -e "This is the first line\nThis is the second Line\nThis is the third line"
Risultato di esempio:
This is the first line This is the second Line This is the third line
Scheda Orizzontale - \t
Quando \t
viene utilizzato, aggiungerà spazi di tabulazione. Puoi anche combinare più caratteri di escape come ho fatto di seguito.
$ echo -e "Enter the U_NAME\t:\n" Enter the U_NAME :
Scheda Verticale - \v
Per creare schede in verticale, usa \v
.
$ echo -e "Enter the username\vEnter the password" Enter the username Enter the password
Elimina output - \c
Quando \c
viene utilizzato, tutto ciò che viene dopo \c
verrà soppresso.
$ echo -e "I am using \cCosmic Desktop" I am using
Ritorno a bordo - \r
Quando \r
viene utilizzato, il cursore viene riportato al primo carattere e a tutto ciò che viene dopo \r
viene stampato sostituendo i caratteri esistenti.
$ echo -e "I use Arch, \rBtw" Btwse Arch,
Disabilita l'interpretazione di escape della barra rovesciata
Il comportamento predefinito di echo
comando è che tratterà i caratteri speciali come testo normale a meno che -e
bandiera è passata. Lo stesso comportamento può essere ottenuto usando il -E
bandiera.
Ti mostro un esempio.
Fammi eseguire echo
comando senza flag:
$ echo "Welcome to OSTechNix \nblog" Welcome to OSTechNix \nblog
Successivamente, eseguo lo stesso comando con -E
Segnala:
$ echo -E "Welcome to OSTechNix \nblog" Welcome to OSTechNix \nblog
Come puoi vedere, il risultato è simile quando ho eseguito echo
comando con -E
bandiera e senza alcuna bandiera. In entrambi i casi, echo
il comando tratta il /n
carattere speciale come stringa normale.
Ora fammi eseguire di nuovo lo stesso comando, ma questa volta con -e
bandiera.
$ echo -e "Welcome to OSTechNix \nblog"
Welcome to OSTechNix
blog
Hai notato la differenza? Il comando echo non ha trattato /n
carattere come testo normale e visualizza tutto ciò che viene dopo il /n
carattere speciale nella nuova riga.
Pertanto, se desideri utilizzare caratteri speciali come \n
, \t
, \v
ecc., dovresti usare -e
bandiera. Altrimenti echo
tratterà tutto come una semplice stringa.
Permettetemi di mostrarvi un altro esempio.
$ echo -e "Hello world\nHello World\nHello World" Hello world Hello World Hello World
Come vedi nell'output sopra, echo
il comando visualizza "Hello World"
stringa tre volte, una per una (cioè in una nuova riga).
E se volessi sfuggire solo a uno specifico carattere speciale? Qui è dove doppia barra rovesciata (\\
) viene in soccorso.
Ad esempio, voglio sfuggire al terzo /n
carattere speciale nel comando precedente.
Per fare ciò, anteporrò al terzo carattere speciale una doppia barra rovesciata(\\
) come di seguito:
$ echo -e "Hello world\nHello World\\\nHello World" Hello world Hello World\nHello World
Ora, echo
il comando tratta il terzo \n
carattere speciale come stringa normale.
Pertanto, quando si dispone di molti caratteri speciali e si desidera eseguire l'escape solo di un carattere speciale specifico, è necessario aggiungere la doppia barra rovesciata (\\
) davanti a quel carattere speciale.
Conclusione
In questo articolo, abbiamo visto cosa echo
comando è e diversi modi per usarlo. Questo è un comando molto semplice e non ci saranno script di shell senza usare echo
comando a meno che tu non decida di usare printf
che è l'alternativa per echo
comando in bash.
Lettura correlata:
- Scripting Bash:variabili spiegate con esempi
- Scripting Bash:funzioni spiegate con esempi
- Scripting Bash:il ciclo For viene spiegato con esempi
- Scripting di Bash:spiegazione del ciclo While e Until con esempi