Jak používat příkaz Echo v systému Linux
- Dave McKay
@TheGurkha
- 29. října 2019, 8:00 EDT
The echo
příkaz je ideální pro zápis formátovaného textu do okna terminálu. A nemusí to být statický text. Může zahrnovat proměnné prostředí, názvy souborů a adresáře. Můžete také přesměrovat ozvěnu a vytvořit textové soubory a soubory protokolu. Postupujte podle tohoto jednoduchého průvodce a zjistěte, jak na to.
Echo Repeats What You Tell It To Repeat
Zeus rád nechal Mount Olympus, aby se stýkal s krásnými nymfami. Na jedné cestě řekl horské víle zvané Echo, aby odvedla jeho manželku Héru, pokud ho následovala. Hera přišla hledat Zeuse a Echo udělala vše, co mohla, aby udržovala Heru v rozhovoru. Nakonec Hera ztratila nervy a proklínala ubohou Echo, takže opakovala jen poslední slova, která řekl někdo jiný. To, co Hera udělala Zeusovi, když ho dostihla, je kdokoli.
A to je do značné míry spousta věcí echo
. Opakuje to, co bylo řečeno opakovat. To je jednoduchá funkce, ale zásadní. Bez echo
bychom například nemohli získat viditelný výstup ze skriptů prostředí.
I když to není naloženo množství zvonků a píšťal, existuje velká šance, že echo
má některé funkce, o kterých jste nevěděli nebo které jste zapomněli.
echo? echo!
Většina systémů Linux poskytuje dvě verze echo
. Bash shell má v sobě zabudovaný vlastní echo
a je zde také binární spustitelná verze echo
.
Můžeme vidět dvě různé verze pomocí následujících příkazů:
type echo
whereis echo
type
příkaz nám říká, zda příkaz, který mu předáme jako argument, je vestavěný shell, binární spustitelný soubor, alias nebo funkce. Hlásí nám, že echo
je integrovaný shell.
Jakmile najde odpověď, type
přestane hledat další zápasy. Neříká nám tedy, zda jsou v systému přítomny další příkazy se stejným názvem. Ale říká nám, který najde jako první. A to je ten, který se ve výchozím nastavení použije, když tento příkaz vydáme.
Příkaz whereis
hledá binární spustitelný soubor, zdrojový kód a manuálovou stránku pro příkaz, který mu předáme jako jeho parametr příkazového řádku. Nehledá vestavěné prostředí, protože nemají samostatný binární spustitelný soubor. Jsou nedílnou součástí spustitelného souboru Bash.
Příkaz whereis
hlásí, že echo
je binární spustitelný soubor nachází se v adresáři /bin
.
Chcete-li použít tuto verzi echo
, budete ji muset výslovně zavolat zadáním cesta k spustitelnému souboru na příkazovém řádku:
/bin/echo --version
Vestavěný shell neví, co --version
argument příkazového řádku je, pouze se opakuje v okně terminálu:
echo --version
Zde uvedené příklady používají výchozí verze echo
v prostředí Bash.
Psaní textu do terminálu
Chcete-li do okna terminálu napsat jednoduchý řetězec textu , zadejte echo
a řetězec, který chcete zobrazit:
echo My name is Dave.
Text se pro nás opakuje. Ale jak budete experimentovat, brzy zjistíte, že věci se mohou trochu zkomplikovat. Podívejte se na tento příklad:
echo My name is Dave and I"m a geek.
V okně terminálu se zobrazí znak >
a sedí tam a čeká. Ctrl + C vás vrátí na příkazový řádek. Co se tam stalo?
Jednoduchý citát nebo apostrof ve slově „Jsem“ zmatený echo
. Interpretoval tento citát jako začátek citované sekce echo
čekal na další vstup, protože nezjistil uzavírací jednoduchou uvozovku. Očekával, že další vstup bude obsahovat chybějící jednoduchou uvozovku, na kterou čekal.
Chcete-li do řetězce zahrnout jednu uvozovku, nejjednodušším řešením je zabalit celý řetězec do dvojitých uvozovek:
echo "My name is Dave and I"m a geek."
Zabalení textu v uvozovkách je dobrá obecná rada. Ve skriptech čistě vymezuje parametry, které předáváte echo
. Díky tomu je čtení a ladění skriptů mnohem jednodušší.
Co když chcete do řetězce textu zahrnout znak uvozovky?To je snadné, stačí uvést zpětné lomítko \
před značku uvozovek (bez mezery).
echo "My name is Dave and I"m a \"geek.\""
Tím se pro nás slovo „geek“ zabalí do uvozovek. Brzy uvidíme více těchto znaků, které unikly zpětnému lomítku.
Použití proměnných s ozvěnou
Zatím , do okna terminálu píšeme předdefinovaný text. Proměnné s echo
můžeme použít k vytvoření výstupu, který je dynamičtější a má do něj vloženy hodnoty, které nám dává shell. může definovat jednoduchou proměnnou pomocí tohoto příkazu:
my_name="Dave"
Byla vytvořena proměnná s názvem my_name
. přidělena hodnota textu „Dave“. Můžeme použít název proměnné v řetězcích, které předáme echo
, a hodnota proměnné se zapíše do okna terminálu. Před název proměnné musíte umístit znak dolaru $
, abyste echo
věděli, že jde o proměnnou.
Existuje upozornění. Pokud jste řetězec zabalili do jednoduchých uvozovek, echo
bude se vším zacházet doslova. Chcete-li zobrazit hodnotu proměnné, nikoli název proměnné, použijte uvozovky.
echo "My name is $my_name"
echo "My name is $my_name"
Trochu výstižně to stojí za opakování:
- Použití jednoduchých uvozovek vede k tomu, že se text do okna terminálu zapíše doslovně.
- Použití uvozovek vede k interpretovaná proměnná – nazývaná také expanze proměnné – a hodnota se zapíše do okna terminálu.
SOUVISEJÍCÍ: Jak pracovat s proměnnými v Bash
Použití příkazů s echo
Můžeme použít příkaz s echo
a začlenit jeho výstup do řetězce, který je zapsán do okna terminálu. Musíme použít znak dolaru $
, jako by byl příkaz proměnnou, a zabalit celý příkaz do závorek.
Použijeme příkaz date . Jedním tipem je použít příkaz samostatně, než jej začnete používat s echo
. Tímto způsobem, pokud je se syntaxí vašeho příkazu něco v nepořádku, identifikujete jej a opravíte, než jej zahrnete do příkazu echo
. Pokud pak příkaz echo
nedělá to, co očekáváte, budete vědět, že problém musí být se syntaxí echo
, protože Syntaxi příkazu jsem již prokázal.
Takže to zkuste v okně terminálu:
date +%D
A jsme spokojeni, že jsme dostaneme to, co očekáváme od příkazu date, integrujeme to do příkazu echo
:
echo "Today"s date is: $(date +%D)"
Všimněte si, že příkaz je v závorkách a znak dolaru $
je bezprostředně před první závorkou.
Formátování textu pomocí echa
Možnost -e
(povolení úniků zpětného lomítka) nám umožňuje ke změně rozložení textu použít některé znaky, které unikly zpětnému lomítku. Jedná se o znaky s únikem zpětného lomítka, které můžeme použít:
Použijme některé z nich a podívejme se, co dělají.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
Text je rozdělena na nový řádek, kde jsme použili \n
znaky a do místa, kde jsme použili \t
znaky, je vložena karta.
echo -e "Here\vare\vvertical\vtabs"
Stejně jako \n
nové řádkové znaky, svislá karta \v
přesune text na řádek níže. Na rozdíl od \n
znaků nového řádku ale \v
vertikální karta nezačíná nový řádek na nule sloupce. Používá aktuální sloupec.
Znaky \b
backspace posunou kurzor o jeden znak zpět. Pokud je do terminálu možné zapsat více textu, přepíše tento text předchozí znak.
echo -e "123\b4"
„3“ je přepsán znakem “ 4 ”.
\r
znak návratu vozíku způsobí echo
návrat na začátek aktuálního řádku a napište další text ze sloupce nula.
echo -e "123\r456"
Znaky „123“ jsou přepsány znaky „456“.
The \a
výstražný znak vygeneruje slyšitelné „pípnutí“. Používá výchozí výstražný zvuk pro vaše aktuální téma.
echo -e "Make a bleep\a"
-n
(no newline) option doesn’t a backslash-escaped sequence, but it does affect the cosmetics of the text layout, so we’re discuss it here. Bráni echo
v přidávání nový řádek na konec textu. Příkazový řádek se zobrazí přímo za textem, který je zapsán do okna terminálu.
echo -n "no final newline"
Použití echa se soubory a adresáři
echo
můžete použít jako druh verze chudáka ls
. Když použijete echo
, máte na výběr jen zřídka. Pokud potřebujete jakýkoli druh věrnosti nebo jemné kontroly, je lepší použít ls
a jeho legii možností.
Tento příkaz uvádí všechny soubory a adresáře v aktuálním adresáři:
echo *
Tento příkaz vypíše seznam všech souborů a adresářů v aktuálním adresáři, jejichž název začíná písmenem „D“:
echo D*
Tento příkaz uvádí všechny soubory „.desktop“ v aktuálním adresáři:
echo *.desktop
Ano. To nehraje na echo
silné stránky. Použijte ls
.
Zápis do souborů s ozvěnou
Můžeme přesměrovat výstup z echo
a buď vytvořte textové soubory, nebo zapisujte do existujících textových souborů.
Pokud použijeme operátor přesměrování >
, soubor se vytvoří, pokud neexistuje. Pokud soubor existuje, výstup z echo
se přidá na začátek souboru a přepíše veškerý předchozí obsah.
Pokud použijeme >>
operátor přesměrování, soubor se vytvoří, pokud neexistuje. Výstup z echo
je přidán na konec souboru a nepřepíše žádný existující obsah souboru.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
První příkaz vytvoří nový soubor a vloží se text do toho. Druhý příkaz přidá řádek textu do spodní části souboru. Příkaz cat
zobrazí obsah souboru v okně terminálu.
A samozřejmě můžeme zahrnout proměnné, které do našeho souboru přidají užitečné informace. Pokud je soubor logický soubor, možná bychom chtěli do něj přidat časové razítko. Můžeme to udělat dalším příkazem.
Všimněte si jednoduchých uvozovek kolem parametrů příkazu date
. Zabraňují tomu, aby mezera mezi parametry byla interpretována jako konec seznamu parametrů. Zajišťují správné předání parametrů date
.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Náš logový soubor je vytvořen pro nás a cat
nám ukazuje, že k němu byly přidány datová a časová značka.
SOUVISEJÍCÍ : Co jsou stdin, stdout a stderr na Linuxu?
To je Repertoár echa
Jednoduchý příkaz, ale nepostradatelný. Pokud by neexistoval, museli bychom to vymyslet.
Koneckonců koneckonců Zeusovi šenangisté udělali něco dobrého.
Dave McKay poprvé použil počítače, když byla v módě děrovaná papírová páska, a od té doby programuje. Po více než 30 letech v IT průmyslu je nyní technologickým novinářem na plný úvazek. Během své kariéry pracoval jako programátor na volné noze, manažer mezinárodního týmu pro vývoj softwaru, projektový manažer IT služeb a naposledy jako inspektor ochrany údajů. Dave je linuxový evangelista a obhájce otevřeného zdroje. Číst celé bio „