Jak Použít Příkaz Echo na Linuxu
echo
příkaz je ideální pro psaní formátovaného textu do okna terminálu. A nemusí to být statický text. Může obsahovat proměnné prostředí, názvy souborů a adresáře. Můžete také přesměrovat echo k vytváření textových souborů a souborů protokolu. Postupujte podle tohoto jednoduchého průvodce a zjistěte jak.
Echo Opakuje to, Co řeknete To Opakovat
Zeus byl rád opouští Olymp stýkat s krásnými nymfy. Na jedné cestě, řekl horské nymfě zvané Echo, aby cestovala svou ženou, Hera, kdyby ho následovala. Hera přišla hledat Zeuse, a Echo udělala vše, co mohla, aby udržela Heru v rozhovoru. Nakonec Hera ztratila náladu a proklela špatnou ozvěnu, takže opakovala pouze poslední slova, která řekl někdo jiný. To, co Hera udělala Zeusovi, když ho dohonila, je někdo hádat.
a to je do značné míry echo
‚s lot in life. 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ů shellu.
Zatímco není naložený s mnoha zvonky a píšťalky, tam je dobrá šance, že echo
má některé funkce, které jste nevěděli, nebo že jsi na to zapomněl.
echo? ozvěna!
většina linuxových systémů poskytuje dvě verze echo
. Bash shell má svůj vlastní echo
vestavěný do něj, a tam je binární spustitelný verze echo
stejně.
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 míjíme jako její argument je shell builtin, binární spustitelný soubor, alias nebo funkci. Hlásí nám, že echo
je shell builtin.
jakmile najde odpověď, type
přestane hledat další shody. Takže nám neříká, zda v systému existují další příkazy se stejným názvem. Ale říká nám, který z nich najde první. A to je ten, který bude ve výchozím nastavení použit, když vydáme tento příkaz.
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 parametr příkazového řádku. Nehledá Shell builtins, protože nemají samostatný binární spustitelný soubor. Jsou nedílnou součástí spustitelného souboru Bash.
whereis
příkaz zprávy, že echo
je binární spustitelný soubor se nachází v /bin
adresář.
Chcete-li použít tuto verzi, echo
musíte explicitně volat to tím, že poskytuje cestu ke spustitelnému souboru na příkazovém řádku:
/bin/echo --version
shell builtin neví, co --version
command-line argument je, že jen opakuje to, v okně terminálu:
echo --version
zde uvedené příklady všechny použít výchozí verze echo
, v Bash shellu.
Psaní Textu na Terminálu
napsat jednoduchý textový řetězec do okna terminálu zadejte echo
a řetězec, který chcete zobrazit:
echo My name is Dave.
text, který se opakuje pro nás. Ale jak experimentujete, brzy zjistíte, že věci se mohou trochu komplikovat. Podívejte se na tento příklad:
echo My name is Dave and I'm a geek.
okno terminálu zobrazí>
podepíše a čeká. Ctrl + C vás vrátí na příkazový řádek. Co se tam stalo?
jediný citát nebo apostrof ve slově „jsem“ zmatený echo
. Tento jediný citát interpretoval jako začátek citované části textu. Vzhledem k tomu, že nezjistil závěrečnou jednu nabídku, echo
čekal na další vstup. Očekával, že další vstup bude obsahovat chybějící jedinou citaci, na kterou čekal.
zahrnout uvozovky v řetězci, nejjednodušší řešení je zabalit celý řetězec do dvojitých uvozovek:
echo "My name is Dave and I'm a geek."
Obtékání textu ve dvojité uvozovky, je dobré obecné rady. Ve skriptech čistě vymezuje parametry, které předáváte echo
. Díky tomu je čtení—a ladění—skripty mnohem jednodušší.
Co když chcete do řetězce textu zahrnout znak dvojité citace? To je snadné, stačí dát zpětné lomítko \
před značku dvojité citace(bez mezery mezi nimi).
echo "My name is Dave and I'm a \"geek.\""
toto pro nás zabalí slovo „geek“ do dvojitých uvozovek. Brzy uvidíme více těchto znaků uniklých zpětným lomítkem.
pomocí proměnných s ozvěnou
zatím jsme psali předdefinovaný text do okna terminálu. Proměnné s echo
můžeme použít k vytvoření dynamičtějšího výstupu, který má hodnoty vložené do shellu. Pomocí tohoto příkazu můžeme definovat jednoduchou proměnnou:
my_name="Dave"
byla vytvořena proměnná nazvaná my_name
. Byla mu přiřazena hodnota textu “ Dave.“Můžeme použít název proměnné v řetězcích, které předáme echo
, a hodnota proměnné bude zapsána do okna terminálu. Musíte dát znak dolaru $
před název proměnné echo
vím, že to je variabilní.
je zde upozornění. Pokud jste řetězec zabalili do jediné uvozovky echo
, bude vše zacházet doslova. Chcete-li zobrazit hodnotu proměnné, nikoli název proměnné, použijte dvojité uvozovky.
echo 'My name is $my_name'
echo "My name is $my_name"
Poněkud příhodně, že to stojí za opakování:
- Pomocí jediné uvozovky výsledky v textu je napsáno na okně terminálu v doslovném způsobem.
- použití dvojitých uvozovek vede k interpretaci proměnné-nazývané také rozšíření proměnné – a hodnota je zapsána do okna terminálu.
SOUVISEJÍCÍ: Jak Pracovat s Proměnnými v Bash
Pomocí Příkazů echo
můžeme použít příkaz 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 příkaz byl proměnnou, a celý příkaz zabalit do závorek.
použijeme příkaz date. Jeden tip je použít příkaz sám, než jej začnete používat s echo
. Tímto způsobem, pokud tam je něco špatně s syntaxe příkazu, můžete identifikovat a opravit, než jej zahrnout do echo
příkaz. Pak, pokud echo
příkaz nedělá to, co očekáváte, budete vědět, že problém musí být u echo
syntaxe, protože jsi dokázal, že příkaz má syntaxi.
zkuste to v okně terminálu:
date +%D
A, spokojen, že dostáváme to, co očekáváme od data příkazu, budeme integrovat to do echo
příkaz:
echo "Today's date is: $(date +%D)"
Poznámka: příkaz je uvnitř závorky a znak dolaru $
je bezprostředně před první závorku.
Formátování Textu S echo
-e
(povolit zpětné lomítko uniká) možnost nám umožňuje použít některé zpětné lomítko-uvozena znaky změnit rozložení textu. Toto jsou znaky uniklé zpětným lomítkem, které můžeme použít:
pojďme použít některé z nich a uvidíme, 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ělen do nové linky, kde jsme použili \n
postavy a karta je vložena, kde jsme použili \t
znaky.
echo -e "Here\vare\vvertical\vtabs"
\n
nový řádek znaky, vertikální tabulátor \v
přesune text do řádku níže. Ale na rozdíl od \n
nové řádkové znaky,\v
vertikální karta nespustí nový řádek ve sloupci nula. Používá aktuální sloupec.
znaky\b
backspace přesouvají kurzor zpět o jeden znak. Pokud je do terminálu zapsáno více textu, přepíše tento text předchozí znak.
echo -e "123\b4"
„3“ je u konce-napsaný „4“.
\r
carriage return charakter způsobuje echo
pro návrat na začátek aktuálního řádku a napsat jakýkoli další text ze sloupce nula.
echo -e "123\r456"
„123“ znaky jsou přepsány „456“ znaky.
\a
výstražný znak vytvoří slyšitelné “ pípnutí.“Používá výchozí zvuk upozornění pro vaše aktuální téma.
echo -e "Make a bleep\a"
-n
(ne řádek) možnost není zpětné lomítko-utekl sekvence, ale to nemá vliv na kosmetiku z rozvržení textu, tak to probereme zde. Zabraňuje echo
Přidat 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"
Pomocí echo se Soubory a S adresáři
můžete použít echo
jako jakýsi chudý muž verze ls
. Vaše možnosti jsou málo a daleko od sebe, když použijete echo
takhle. Pokud potřebujete jakýkoli druh věrnosti nebo jemné kontroly, je lepší použít ls
a jeho legii možností.
Tento příkaz vypíše všechny soubory a adresáře v aktuálním adresáři:
echo *
Tento příkaz vypíše všechny soubory a adresáře v aktuálním adresáři, jejichž jméno začíná na „D“ :
echo D*
Tento příkaz vypíše všechny „.desktop“ soubory v aktuálním adresáři:
echo *.desktop
Ano. To není hraní na echo
silné stránky. Použijte ls
.
zápis do Souborů s echo
můžete přesměrovat výstup z echo
a buď vytvořit textové soubory, nebo napište do existující textové soubory.
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 jakýkoli 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
nový soubor je vytvořen první příkaz, a text se vkládá do něj. Druhý příkaz přidá řádek textu do dolní části souboru. Příkaz cat
zobrazí obsah souboru do okna terminálu.
a samozřejmě můžeme zahrnout proměnné pro přidání některých užitečných informací do našeho souboru. Pokud je soubor logfile, možná budeme chtít přidat časové razítko. Můžeme to udělat s dalším příkazem.
poznamenejte si jednotlivé uvozovky kolem parametrů pro příkaz date
. Zabraňují tomu, aby byl prostor mezi parametry interpretován 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áš log je vytvořen pro nás, a cat
nám ukazuje, že datestamp a časové razítko byli oba k ní přidá.
SOUVISEJÍCÍ: Co jsou stdin, stdout a stderr na Linuxu?
to je repertoár echo
jednoduchý příkaz, ale nepostradatelný. Kdyby neexistovala, museli bychom ji vymyslet.
Zeusovy vylomeniny nakonec udělaly něco dobrého.