GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Bash Echo spiegato con esempi in Linux

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

Linux
  1. Comando wc Linux con esempi

  2. Comando di spegnimento di Linux spiegato con esempi

  3. Comando Traceroute di Linux, spiegato con esempi

  4. Comando JQ in Linux con esempi

  5. Esempi di comandi echo in Linux

Linux more Comando spiegato con esempi

Comando wget Linux spiegato con esempi

Il comando Tr in Linux spiegato con esempi

w Comando spiegato con esempi in Linux

Spiegazione del comando tee di Linux (con esempi)

Spiegazione del comando csplit di Linux (con esempi)