GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Bash Echo vysvětlený s příklady v Linuxu

Jako začátečník, když začínáte pracovat se skripty Bash, prvním příkazem, který se pravděpodobně naučíte a budete jej používat, je echo příkaz. Můžete si představit příkaz bash echo něco podobného jako print příkazy v jiných programovacích jazycích. echo příkaz je vestavěný bash a jeho účelem je vytisknout výstup na stdout (tj. terminál).

V tomto článku vám ukážu, co je příkaz bash echo a jak jej používat ve skriptech shellu. Než se pustíme do tématu, podívejme se na rozdíl mezi Bash vestavěným a externím příkazem.

Vestavěný příkaz Bash echo vs externí příkaz echo

V Linuxu a dalších unixových systémech jsou některé příkazy poskytovány jako vestavěné i externí příkazy. Například /bin/echo je externí příkaz, který má stejný název jako echo vestavěný bash.

Když zavoláme příkaz, který existuje jako vestavěný i jako externí příkaz, obvykle se vestavěný příkaz provede ve výchozím nastavení. Protože pořadí priorit pro názvy příkazů je alias a poté function a poté builtin a poté externí příkaz v adresářích uvedených v $PATH v pořádku.

Pokud chcete vynutit externí příkaz, který je k dispozici jako vestavěný i externí příkaz, jednoduše použijte jeho úplnou cestu.

Abychom to vysvětlili jasně, následující příkaz volá vestavěný bash:

$ echo <some-text>

A následující volání externí echo příkaz:

$ /bin/echo <some-text>

Chcete-li zjistit, zda je příkaz vestavěný nebo externí příkaz, můžeme použít type příkaz:

$ type echo 
echo is a shell builtin

Chcete-li zobrazit všechna umístění obsahující zadaný spustitelný soubor, použijte -a příznak:

$ type -a echo 
echo is a shell builtin
echo is /usr/bin/echo

Další podrobnosti o type použití příkazu naleznete na následujícím odkazu:

  • Výukový program příkazu typu s příklady pro začátečníky

V této příručce budeme diskutovat o vestavěném bash echo příkaz, nikoli externí.

Zobrazit nápovědu k příkazu bash echo

Téměř všechny linuxové příkazy tam mají buď manuálovou stránku, nebo sekci nápovědy, kde se dozvíte, jak tento příkaz používat. Příručka nápovědy echo Příkaz je součástí manuálové stránky Bash

Pro přístup k manuálové stránce pro bash příkaz, spusťte:

$ man bash

Nyní zadejte /echo a stiskněte n dokud neuvidíte sekci nápovědy echo příkaz.

Případně můžete použít následující jednořádkový příkaz k zobrazení sekce nápovědy echo příkaz:

$ man bash | less --pattern='^ *echo +\['

Struktura příkazu echo

echo příkaz přijímá tři volitelné argumenty a text, který má být vytištěn na 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)

Nyní přeskočme tři volitelné argumenty a podívejme se, jak používat echo pro tisk textu na stdout (Terminál).

Můžete buď spustit následující část kódu přímo v terminálu, nebo vytvořit soubor skriptu a poté jej spustit. Spustím to přímo v Terminálu:

$ echo "Hello World"
Hello World

Podívejte se na výše uvedený příklad. Je to tradiční hello world program, který spustíme vždy, když se naučíme jakýkoli nový jazyk, a spustíme jej jako první kód. echo příkaz zde přijímá "hello world" text jako argument a vytiskne jej na terminál (Stdout).

Jak potlačit znak nového řádku

Výchozí chování bash echo je, automaticky přidá nový řádek (\n ). Spusťte stejný hello world program znovu a všimněte si, že výzva terminálu se zobrazí na novém řádku.

$ echo "Hello World"
Hello World

Nyní, pokud chcete toto chování potlačit, můžete použít "-n" příznak, který potlačí nový řádek a výzva terminálu bude vytištěna na stejném řádku, jak je uvedeno níže.

$ echo -n "Hello world"
Hello world

Co se stane, když není předán žádný argument

Když příkazu echo není předán žádný argument, příkaz se nezdaří, ale vrátí prázdný nový řádek. Spusťte svůj terminál a spusťte "echo" a uvidíte, že vytiskne prázdný řádek a skončí.

$ echo
$ echo $?
0

Toto chování můžete přepsat přidáním "-n" příznak, který nevytiskne nový řádek, i když nebude předán žádný argument.

$ echo -n 

Kde to bude užitečné? Možná se divíte. Pokud chcete mezi výstupy nějaké prázdné řádky, můžete použít echo bez argumentů.

Práce s proměnnými a příkazy

echo příkaz bude interpretovat uživatelem definované proměnné nebo proměnné prostředí, které jsou předány jako argument, a vypíše hodnotu. Podívejte se na níže uvedené příklady.

Nejprve proměnná env "SHELL" je předán echo a vypíše hodnotu proměnné.

# Environmental Variable:

$ echo " I am currently using ${SHELL}"
I am currently using /bin/bash

Za druhé, uživatelem definovaná proměnná "NAME" je předán echo a hodnota se vytiskne na terminál.

# User Defined Variable:

$ NAME="PoP_OS"
$ echo "I am using ${NAME}"
I am using PoP_OS

Můžete také spouštět příkazy uvnitř argumentů. Podívejte se na níže uvedený příklad, kde je "uname -r" příkaz je předán jako argument a příkaz je interpretován a výstup je vytištěn.

$ echo "KERNEL_VERSION=$(uname -r)"
KERNEL_VERSION=5.11.0-7620-generic

Dopad používání jednoduchých a dvojitých uvozovek

Ve všech předchozích příkladech jste si mohli všimnout, že kolem argumentů používám dvojité uvozovky. Co se tedy stane, když argument není uzavřen v uvozovkách? Příkaz Echo se nezdaří a získáte stejný výstup.

Podívejte se na následující příklad. Spouštím stejný příkaz, který jsem použil v předchozí části, ale bez uvozovek a vytiskne výstup bez jakékoli chyby.

$ echo I am using ${NAME}
I am using Pop_OS

Doporučuje se vždy argumenty uzavřít do uvozovek.

Pokud je argumentem prostý text, můžete použít jednoduché nebo dvojité uvozovky. Ale pokud chcete spustit jakýkoli příkaz nebo rozšířit jakoukoli proměnnou v argumentu, měli byste použít dvojité uvozovky, nikoli jednoduché uvozovky.

Jednoduchá uvozovka zabrání spuštění jakéhokoli příkazu nebo rozšíření proměnné. Prostě bude celý argument považovat za prostý text.

Podívejte se na níže uvedený příklad. Když argument uzavřem do jednoduchých uvozovek, proměnná "NAME" není interpretován a považován za text.

# 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

Přesměrování a potrubí výstupu

Jak bylo uvedeno dříve, echo příkaz standardně tiskne výstup na standardní výstup (terminál). Když píšete skripty shellu, můžete se dostat do situace, kdy budete ukládat výstup echo příkaz do souboru. Můžete to udělat pomocí přesměrování bash operátor.

$ echo "Welcome to OSTechNix" > /tmp/op.log
$ cat /tmp/op.log
Welcome to OSTechNix

Doporučené čtení:

  • Přesměrování Bash vysvětleno na příkladech
  • Výukový program Bash Heredoc pro začátečníky

Můžete také odeslat výstup echo příkaz do pipe k dalšímu zpracování.

$ echo "I am using ${NAME}"
I am using PoP_OS
$ echo "I am using ${NAME}" | grep -i -o POP
PoP

Víceřádkový řetězec

Váš argument se někdy může objevit na více než jednom řádku. Víceřádkový argument můžete uzavřít dvojitými uvozovkami, aby se výstup vytiskl s ohledem na nové řádky, tabulátory a mezery.

$ echo "This is Line 1
This is Line 2
This is Line 3"

V některých případech, i když je váš argument předán jako víceřádkový řetězec, můžete jej vytisknout jako jeden řádek. V takových případech použijte "\" symbol na konci každého řádku, takže další řádek bude navazovat na předchozí řádek.

$ echo "I am running \
the echo command \
again"

Ukázkový výstup:

I am running the echo command again

Toto není výlučně specifické pro bash echo příkaz. Tento přístup můžete použít k vytváření velmi velkých příkazů na víceřádkové pro lepší čitelnost.

Zpětné lomítko unikne interpretaci

echo příkaz přijímá jako argumenty mnoho uvozených znaků. Aby byly tyto speciální znaky rozpoznány příkazem echo, "-e" vlajka by měla být předána. Seznam podporovaných speciálních znaků můžete získat z echo manuálová stránka příkazu.

Ve svém každodenním životě nebudete používat všechny speciální znaky. Většinou budete používat znaky nového řádku, tabulátory a zpětné lomítko.

Znak nového řádku – \n

Po předání \n bude přidán nový řádek na echo příkaz. Můžete také předat více \n, čímž se odpovídajícím způsobem přidají další řádky.

$ echo -e "This is the first line\nThis is the second Line\nThis is the third line"

Ukázkový výstup:

This is the first line
This is the second Line
This is the third line

Záložka Horizontální – \t

Když \t je použit, přidá mezery tabulátoru. Můžete také kombinovat několik únikových znaků, jako jsem to udělal níže.

$ echo -e "Enter the U_NAME\t:\n"
Enter the U_NAME    :

Svislá karta – \v

Chcete-li vytvořit karty svisle, použijte \v .

$ echo -e "Enter the username\vEnter the password"
Enter the username
                  Enter the password

Potlačit výstup - \c

Když \c se používá, cokoliv, co následuje za \c bude potlačeno.

$ echo -e "I am using \cCosmic Desktop"
I am using

Vrácení vozíku - \r

Když \r Pokud se použije, kurzor se resetuje na první znak a cokoli, co následuje za \r se vytiskne a nahradí existující znaky.

$ echo -e "I use Arch, \rBtw"
Btwse Arch, 

Zakázat interpretaci zpětného lomítka

Výchozí chování echo příkaz je, že bude se speciálními znaky zacházet jako s prostým textem, pokud není -e vlajka je předána. Stejného chování lze dosáhnout použitím -E vlajka.

Ukážu vám příklad.

Dovolte mi spustit echo příkaz bez jakýchkoli příznaků:

$ echo "Welcome to OSTechNix \nblog"
Welcome to OSTechNix \nblog
OSTechNix

Dále spustím stejný příkaz s -E Vlajka:

$ echo -E "Welcome to OSTechNix \nblog"
Welcome to OSTechNix \nblog
OSTechNix

Jak můžete vidět, výsledek je podobný, když jsem spustil echo příkaz s -E vlajky a bez jakékoli vlajky. V obou případech echo příkaz zpracovává /n speciální znak jako prostý řetězec.

Nyní mi dovolte znovu spustit stejný příkaz, ale tentokrát s -e vlajka.

$ echo -e "Welcome to OSTechNix \nblog"
Welcome to OSTechNix
blog

Všimli jste si rozdílu? Příkaz echo nezpracoval /n znak jako prostý text a zobrazí vše, co následuje za /n speciální znak na novém řádku.

Pokud tedy chcete použít nějaké speciální znaky jako \n , \t , \v atd., měli byste použít -e vlajka. Jinak echo bude vše považovat za prostý řetězec.

Dovolte mi ukázat vám další příklad.

$ echo -e "Hello world\nHello World\nHello World"
Hello world
Hello World
Hello World

Jak vidíte ve výše uvedeném výstupu, echo příkaz zobrazí "Hello World" řetězec třikrát, jeden po druhém (tj. na nový řádek).

Co když chcete uniknout pouze konkrétní speciální postavě? Zde je dvojité zpětné lomítko (\\ ) přichází na pomoc.

Například chci uniknout třetímu /n speciální znak v předchozím příkazu.

Abych tak učinil, přidám před třetí speciální znak dvojité zpětné lomítko (\\ ) jako níže:

$ echo -e "Hello world\nHello World\\\nHello World"
Hello world
Hello World\nHello World

Nyní echo příkaz zpracovává třetí \n speciální znak jako prostý řetězec.

Pokud tedy máte mnoho speciálních znaků a chcete uniknout pouze konkrétnímu speciálnímu znaku, musíte přidat dvojité zpětné lomítko (\\ ) před tímto speciálním znakem.

Závěr

V tomto článku jsme viděli, co echo příkaz je a různé způsoby jeho použití. Toto je velmi jednoduchý příkaz a bez použití echo nebude žádný shell skript pokud se nerozhodnete použít printf což je alternativa pro echo příkaz v bash.

Související čtení:

  • Bash Scripting – proměnné vysvětlené na příkladech
  • Bash Scripting – funkce vysvětlené na příkladech
  • Bash Scripting – pro smyčku vysvětlenou s příklady
  • Bash Scripting – smyčka Zatímco a dokud není vysvětlena příklady

Linux
  1. Příkaz vypnutí Linuxu s příklady

  2. Příkaz Linux Traceroute, vysvětlený s příklady

  3. JQ Command v Linuxu s příklady

  1. wc Linux Command s příklady

  2. Echo Command v Linuxu (s příklady)

  3. Příklady příkazů echo v Linuxu

  1. Linux cut Command Vysvětlení pomocí 6 příkladů

  2. 16 Příklady příkazů Echo v Linuxu

  3. Echo Command v Linuxu s příklady