Az Echo parancs használata Linux alatt
- Dave McKay
@TheGurkha
- 2019. október 29., 8:00 EDT
A echo
parancs tökéletes formázott szöveg írásához a terminál ablakába. És ennek nem kell statikus szövegnek lennie. Tartalmazhat shellváltozókat, fájlneveket és könyvtárakat. A visszhangot átirányíthatja szöveges és naplófájlok létrehozására is. Kövesse ezt az egyszerű útmutatót, hogy megtudja, hogyan.
Az Echo megismétli azt, amit mondani kell, hogy ismételje meg
Zeusz előszeretettel hagyta el az Olümposz hegyét, hogy gyönyörű nimfákkal álljon össze. Az egyik utazás alkalmával azt mondta egy Echo nevű hegyi nimfának, hogy terjessze feleségét, Herát, ha követi őt. Hera valóban Zeuszt kereste, és Echo mindent megtett, hogy Herát beszélgetés közben tartsa. Végül Hera elvesztette önuralmát és megátkozta szegény Echót, így csak az utolsó szavakat ismételte, amelyeket valaki más mondott. Amit Hera tett Zeusszal, amikor utolérte, azt bárki kitalálja.
És ez nagyjából echo
sok az életben. Megismétli, amit megismételni mondtak neki. Ez egyszerű, de létfontosságú funkció. A echo
nélkül nem tudnánk például látható kimenetet kapni a shell parancsfájlokból.
Noha nem terheljük le harangok és sípok sokasága, jó eséllyel echo
rendelkezik olyan képességekkel, amelyekről nem tudott, vagy amelyeket elfelejtett.
visszhang? echo!
A legtöbb Linux rendszer a echo
két változatát kínálja. A Bash héjba saját echo
van beépítve, és van egy echo
binárisan futtatható verzió is.
A két különböző verziót a következő parancsok használatával láthatjuk:
type echo
whereis echo
A type
parancs megmondja, hogy a parancs, amelyet argumentumként adunk át neki, egy beépített shell, bináris futtatható fájl, álnév vagy függvény. Jelzi nekünk, hogy a echo
egy beépített shell.
Amint megtalálta a választ, type
abbahagyja a további mérkőzések keresését. Tehát nem árulja el, hogy vannak-e más azonos nevű parancsok a rendszerben. De megmondja, melyiket találja meg először. És ez az, amelyet alapértelmezés szerint használni fogunk, amikor kiadjuk a parancsot.
A whereis
parancs a bináris futtatható fájlt, a forráskódot és a man oldalt keresi. a parancs, amelyet parancssori paraméterként adunk át neki. A shell beépítetteket nem keresi, mert nincs külön bináris futtatható fájljuk. A Bash futtatható fájl szerves részét képezik.
A whereis
parancs arról számol be, hogy a echo
egy bináris futtatható fájl a /bin
könyvtárban található.
A echo
verziójának használatához kifejezetten meg kell hívnia, megadva a parancssorban a futtatható fájl elérési útja:
/bin/echo --version
A beépített shell nem tudja, mi a --version
parancssori argumentum, csak megismétli a terminál ablakában:
echo --version
Az itt bemutatott példák mind az alapértelmezettet használják A echo
verzió a Bash héjban.
Szöveg írása a terminálba
Egyszerű szöveges karakterlánc írása a terminál ablakába , írja be a echo
parancsot és a megjeleníteni kívánt karakterláncot:
echo My name is Dave.
A szöveg megismétlődik számunkra. De kísérletezés közben hamar felfedezi, hogy a dolgok kissé bonyolultabbá válhatnak. Nézze meg ezt a példát:
echo My name is Dave and I"m a geek.
A terminálablakban egy >
jel látható és ott ül és vár. A Ctrl + C visszatér a parancssorba. Mi történt ott?
Az egyetlen idézet vagy aposztróf a “vagyok” szóban összezavarodott echo
. Ezt az egyetlen idézetet egy idézett szakasz kezdeteként értelmezte szöveg. Mivel nem talált záró egyetlen idézetet, a echo
további bevitelt várt. Arra számított, hogy további bevitel tartalmazza a hiányzó egyetlen idézetet, amelyre várt.
Ha egyetlen idézetet szeretne beírni egy karakterláncba, a legegyszerűbb megoldás az egész sztring kettős idézőjelbe foglalása:
echo "My name is Dave and I"m a geek."
A szöveg becsomagolása a dupla idézőjelben jó általános tanács. A szkriptekben tisztán körülhatárolja azokat a paramétereket, amelyeket átad a echo
-nek. Ez sokkal megkönnyíti a szkriptek olvasását és hibakeresését.
Mi van, ha kettős idézőjeles karaktert szeretne beilleszteni a szövegsorába?Ez egyszerű, csak tegyen egy visszavonást \
a dupla idézőjel elé (szóköz nélkül).
echo "My name is Dave and I"m a \"geek.\""
Ez kettős idézőjelbe foglalja a számunkra a “geek” szót. Rövidesen többet fogunk látni ezekből a visszavágott karakterekkel.
Változók használata visszhanggal
Eddig , előre definiált szöveget írtunk a terminálablakba. Használhatunk echo
változókat olyan dinamikusabb kimenet előállításához, amelynek értéke van a héj által számunkra. megadhat egy egyszerű változót ezzel a paranccsal:
my_name="Dave"
Létrehoztak egy my_name
nevű változót. hozzárendelte a “Dave” szöveg értékét. Használhatjuk a változó nevét azokban a karakterláncokban, amelyeket átadunk a echo
fájlnak, és a változó értéke be lesz írva a terminál ablakába. A $
dollárjelet kell beírni a változó neve elé, hogy a echo
tudja, hogy ez egy változó.
Van egy figyelmeztetés. Ha a karakterláncot egyetlen idézőjelbe csomagolta, a echo
mindent szó szerint fog kezelni. Ha a változó értékét és nem a változó nevét szeretné megjeleníteni, használjon dupla idézőjeleket.
echo "My name is $my_name"
echo "My name is $my_name"
Kissé találóan érdemes megismételni:
- Egyetlen idézőjel használatával a szöveget szó szerint írják a terminálablakba.
- kettős idézőjel használatával az értelmezendő változó – más néven változóbővítés -, és az értéket a terminál ablakába írja.
KAPCSOLÓDÓ: Hogyan kell dolgozni a Bash-ban szereplő változókkal
Parancsok használata a echo
Használhatunk egy echo
parancsot, és beépíthetjük annak kimenetét a terminálablakba írt karakterláncba. A dollárjelet $
kell használnunk, mintha a parancs változó lenne, és az egész parancsot zárójelbe kell foglalnunk.
A date parancsot fogjuk használni. . Az egyik tipp: önállóan kell használni a parancsot, mielőtt elkezdené használni a echo
vel. Így ha valami nem stimmel a parancs szintaxisában, akkor azonosítja és kijavítja, mielőtt felvenné a echo
parancsba. Ezután, ha a echo
parancs nem azt teszi, amit várt, akkor tudja, hogy a problémának a echo
szintaxissal kell lennie, mert Már bizonyítottuk a parancs szintaxisát.
Tehát próbálkozzon ezzel a terminál ablakában:
date +%D
És meggyőződve arról, hogy mi vagyunk A date parancstól elvárható módon integráljuk egy echo
parancsba:
echo "Today"s date is: $(date +%D)"
Ne feledje, hogy a parancs a zárójelben található, és a dollárjel $
közvetlenül az első zárójel előtt van.
Szöveg formázása visszhanggal
A -e
(visszavágó menekülés engedélyezése) opció lehetővé teszi, hogy néhány visszavágott karakterrel megváltoztassuk a szöveg elrendezését. Ezek a visszafelé tört karakterek, amelyeket használhatunk:
Használjuk fel néhányukat, és nézzük meg, mit csinálnak.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
A szöveg új sorra van felosztva, ahol a \n
karaktereket használtuk, és beszúr egy lapot, ahol a \t
karaktereket használtuk.
echo -e "Here\vare\vvertical\vtabs"
Mint az \n
új sor karakterek, egy függőleges fül \v
áthelyezi a szöveget az alábbi sorra. De az \n
új sor karakterekkel ellentétben a \v
függőleges fül nem kezdi az új sort a nullánál. Az aktuális oszlopot használja.
A \b
visszalépési karakterek a kurzort egy karakterrel visszahelyezik. Ha több szöveget kell írni a terminálra, akkor ez a szöveg felülírja az előző karaktert.
echo -e "123\b4"
A “3” -t felülírja a ” 4 ”.
A \r
kocsi visszatérési karakter miatt a echo
visszatér az aktuális sor elejére és a írjon további szöveget a nulla oszlopból.
echo -e "123\r456"
A “123” karaktereket felülírják a “456” karakterek.
A \a
riasztási karakter hallható “pityergést” eredményez. Az alapértelmezett riasztási hangot használja az aktuális témához.
echo -e "Make a bleep\a"
A -n
(nincs új sor) opció nem egy visszavonással elkerült szekvencia, de befolyásolja a szöveg elrendezésének kozmetikumait, ezért itt tárgyaljuk. Megakadályozza a echo
hozzáadását új sor a szöveg végére. A parancssor közvetlenül a terminál ablakába írt szöveg után jelenik meg.
echo -n "no final newline"
Az echo használata fájlokkal és könyvtárakkal
A echo
alkalmazható rendezésként szegény ember ls
változatának. A echo
ilyen használatakor kevés a lehetőség. Ha bármiféle hűségre vagy finomszabályozásra van szüksége, akkor jobb, ha a ls
fájlt és annak opcióit tartalmazza. könyvtárak az aktuális könyvtárban:
echo *
Ez a parancs felsorolja az aktuális könyvtár összes fájlját és könyvtárát, amelyek neve “D” betűvel kezdődik:
echo D*
Ez a parancs felsorolja az aktuális könyvtár összes “.desktop” fájlját:
echo *.desktop
Igen. Ez nem a echo
erősségeinek játszik. Használja a ls
parancsot.
Írás fájlokba visszhanggal
Átirányíthatjuk a kimenetet a echo
és vagy szöveges fájlokat hoz létre, vagy írjon meglévő szöveges fájlokba.
Ha a >
átirányítási operátort használjuk, akkor a fájl létrejön, ha nem létezik. Ha a fájl létezik, akkor a echo
kimenete hozzáadódik a fájl elejéhez, felülírva minden korábbi tartalmat.
Ha a >>
átirányítási operátor, a fájl létrejön, ha nem létezik. A echo
kimenet hozzáadódik a fájl végéhez, és nem írja felül a fájl meglévő tartalmát.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Az első parancs új fájlt hoz létre, és szöveget illeszt be bele. A második parancs egy sor szöveget ad a fájl aljára. Az cat
parancs megjeleníti a fájl tartalmát a terminál ablakában.
És természetesen változókat is felvehetünk néhány hasznos információ hozzáadásához a fájlunkba. Ha a fájl naplófájl, akkor érdemes időbélyeget hozzáadni hozzá. Megtehetjük a következő paranccsal.
Vegye figyelembe az egyetlen idézőjelet a date
parancs paraméterei körül. Megakadályozzák a paraméterek közötti tér értelmezését a paraméterlista végén. Biztosítják a paraméterek megfelelő átadását a date
címre.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Logfájlunk nekünk készült, és a cat
megmutatja, hogy az databélyegzőt és az időbélyeget egyaránt hozzáadták.
: Mi az stdin, az stdout és a stderr Linux alatt?
Ez az echo repertoárja
Egyszerű, de nélkülözhetetlen parancs. Ha nem létezne, ki kellene találnunk.
Végül is Zeus shenaniganjai jót tettek.
Dave McKay akkor használta a számítógépeket, amikor divatban volt a lyukasztott papírszalag, és azóta programoz. Több mint 30 év után az informatikai iparban ma teljes munkaidős technológiai újságíró. Pályafutása során szabadúszó programozóként, egy nemzetközi szoftverfejlesztő csapat vezetőjeként, informatikai szolgáltatások projektmenedzserként és legutóbb adatvédelmi tisztként dolgozott. Dave Linux evangélista és nyílt forráskódú szószóló. Olvassa el a teljes életrajzot “