Az Echo parancs használata Linux alatt

A echoparancs tökéletesen alkalmas formázott szöveg írására a terminál ablakába. És ennek nem kell statikus szövegnek lennie. Tartalmazhat shellváltozókat, fájlneveket és könyvtárakat. Átirányíthatja a visszhangot 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, amit ismételni mond

Zeusz előszeretettel hagyta el az Olümposz hegyét, hogy gyönyörű nimfákkal éljen együtt. 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. Senki sejti, hogy Hera mit tett Zeusszal, amikor utolérte.

És ez nagyjából echosok az életben. Megismétli, amit megismételni mondtak neki. Ez egyszerű, de létfontosságú funkció. Enélkül echoképtelenek lennénk például kimenetet kapni a shell szkriptekből.

Bár nincs megterhelve harangok és sípok sokaságával, jó eséllyel echorendelkezik olyan képességekkel, amelyekről nem tudott, vagy amelyeket elfelejtett.

visszhang? visszhang!

A legtöbb Linux rendszer két változatát kínálja echo. A Bash shellbe saját van echobeépítve, és van egy bináris futtatható verzió echois.

A két különböző verziót a következő parancsok használatával láthatjuk:

típusú visszhang
ahol visszhang van

A typeparancs megmondja, hogy az a argumentum, amelyet argumentumként adunk át neki, egy beépített shell, egy bináris futtatható fájl, álnév vagy egy függvény. Jelzi nekünk, hogy echoegy beépített héj.

Amint megtalálta a választ, typeabbahagyja 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 whereisparancs a bináris futtatható, a forráskód és a man oldalt keresi annak a parancsnak, amelyet parancssori paraméterként adunk át neki. A shell beépített fájlokat nem keresi, mert nincs külön bináris futtatható fájljuk. A Bash futtatható fájl szerves részét képezik.

A whereisparancs jelentése, hogy echoa /binkönyvtárban található bináris futtatható fájl .

Az adott verzió használatához echokifejezetten meg kell hívnia a parancssorban a futtatható fájl elérési útjának megadásával:

/ bin / echo --version

A beépített shell nem tudja, mi a --versionparancssori argumentum, csak megismétli a terminál ablakában:

echo --verzió

Az itt bemutatott példák mindegyike echoa Bash shell alapértelmezett verzióját használja .

Szöveg írása a terminálhoz

Ha egyszerű szöveget szeretne írni a terminál ablakába, írja echobe a kívánt karakterláncot:

visszhang. A nevem 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ézd meg ezt a példát:

visszhang A nevem Dave és stréber vagyok.

A terminál ablakában egy   > tábla látható, és ott ül, és várakozik. 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 szövegrész kezdeteként értelmezte. Mivel egyetlen záró idézetet sem észlelt,  echotovábbi bevitelre várt. Arra számított, hogy további bevitelre kerül a hiányzó egyetlen árajánlat, amire várt.

Egyetlen idézet felvétele egy karakterláncba a legegyszerűbb megoldás az, ha az egész karakterláncot kettős idézőjelbe foglalja:

visszhang: "A nevem Dave, és stréber vagyok."

A szöveg dupla idézőjelbe csomagolása jó általános tanács. A szkriptekben tisztán körülhatárolja azokat a paramétereket, amelyekhez átad echo. 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övegsorba? Ez egyszerű, csak tegyen egy hátlapot \a dupla idézőjel elé (köztük ne legyen szóköz).

echo "A nevem Dave és \" stréber vagyok. \ ""

Ez számunkra kettős idézőjelbe burkolja a „geek” szót. Rövidesen még többet látunk ezekből a visszahúzott karakterből.

Változók használata visszhanggal

Eddig előre definiált szöveget írtunk a terminál ablakába. A (z) változóval echodinamikusabb kimenetet állíthatunk elő, amelynek értékei vannak a számunkra a shell által. Ezzel a paranccsal definiálhatunk egy egyszerű változót:

my_name = "Dave"

my_nameLétrehoztak egy nevű változót . Hozzá lett rendelve a „Dave” szöveg értéke. Használhatjuk a változó nevét azokban a karakterláncokban, amelyekhez átadunk echo , és a változó értéke be lesz írva a terminál ablakába. A $változó neve elé dollárjelet kell tenned, hogy tudasd echo, hogy ez egy változó.

Van egy figyelmeztetés. Ha a karakterláncot egyetlen idézőjelbe csomagolta, echo mindent szó szerint fog kezelni. Ha a változó értékét szeretné megjeleníteni, és nem a változó nevét , használjon dupla idézőjeleket.

echo 'A nevem $ my_name'
echo "A nevem $ my_name"

Kissé találóan érdemes megismételni:

  • Segítségével egyetlen idézőjelet eredmények a szövegben van írva, hogy a terminál ablak egy szó a divat.
  • Dupla idézőjelek használata  azt eredményezi, hogy a változó értelmezhető - más néven változóbővítés -, és az értéket a terminálablakba írják.

KAPCSOLÓDÓ: Hogyan kell dolgozni a Bash változókkal

Parancsok használata visszhanggal

Használhatunk egy parancsot, echoés beépíthetjük annak kimenetét a terminálablakba írt karakterláncba. Úgy kell használnunk a dollárjelet $, mintha a parancs változó lenne, és az egész parancsot zárójelbe kell csomagolni.

Használjuk a dátum parancsot. Az egyik tipp, hogy a parancsot önállóan kell használni, mielőtt elkezdené használni echo. Így ha valami nem stimmel a parancs szintaxisában, akkor azonosítja és kijavítja, mielőtt felvenné a echoparancsba. Ezután, ha a echoparancs nem azt hajtja végre, amire számít, akkor tudja, hogy a problémának a echoszintaxissal kell lennie, mert már bizonyította a parancs szintaxisát.

Tehát próbálja ki ezt a terminál ablakában:

dátum +% D

És megelégedve azzal, hogy megkapjuk, amit elvárunk a date parancstól, integráljuk egy echoparancsba:

echo "A mai dátum: $ (dátum +% D)"

Vegye figyelembe, hogy a parancs a zárójelben van, és a dollárjel $ közvetlenül az első zárójel előtt van.

Szöveg formázása visszhanggal

Az -e(engedélyezheti a visszavágó meneküléseket) 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:

  • \ a : Riasztás (történelmileg BEL néven ismert). Ez generálja az alapértelmezett riasztási hangot.
  • \ b : Backspace karaktert ír.
  • \ c : Elhagy minden további kimenetet.
  • \ e : Menekülési karaktert ír.
  • \ f : Írja az űrlap feed karakterét.
  • \ n : Új sort ír.
  • \ r : Írja a kocsi visszatérését.
  • \ t : vízszintes lapot ír.
  • \ v : Függőleges lapot ír.
  • \\ : Visszajelet ír.

Használjuk fel néhányukat, és nézzük meg, mit csinálnak.

echo -e "Ez egy hosszú szövegsor \ nfelosztva három sorban \ n a \ ttabs \ ton \ tthet \ tthird \ tline"

A szöveget egy új sorra osztják fel, ahol a \nkaraktereket használtuk, és beszúr egy lapot, ahol a \tkaraktereket használtuk .

echo -e "Itt \ vare \ vvertical \ vtabs"

Az \núj vonalkarakterekhez hasonlóan egy függőleges fül \vis a lenti vonalra mozgatja a szöveget. De az \n új sor karakterektől eltérően a  \vfüggőleges fül nem kezdi az új sort a nulla oszlopnál. Az aktuális oszlopot használja.

A \bvisszalépő karakterek a kurzort egy karakterrel hátra mozgatják. Ha még 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 a „4” írja felül.

A \rkocsi visszatérési karakter  echovisszatér az aktuális sor elejére, és további szövegeket ír a nulla oszlopból.

echo -e "123 \ r456"

A „123” karaktereket felülírják a „456” karakterek.

A \afigyelmeztető karakter hallható „pityergést” eredményez. Az alapértelmezett riasztási hangot használja az aktuális témához.

echo -e "Készíts egy blepet \ a"

A -n(nincs új sor) opció nem egy visszavonással elkerült szekvencia, de befolyásolja a szövegelrendezés kozmetikáját, ezért itt tárgyaljuk. Megakadályozza echo, hogy új sort írjon 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 "nincs végleges új sor"

Az echo használata fájlokkal és könyvtárakkal

Használhatja echoegyfajta szegény ember verziójaként ls. Kevés a választási lehetőséged, amikor így használsz echo. Ha bármiféle hűségre vagy finom ellenőrzésre van szüksége, akkor jobb, ha használja lsés annak lehetőségeit.

Ez a parancs felsorolja az aktuális könyvtár összes fájlját és könyvtárát:

visszhang *

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:

visszhang D *

Ez a parancs felsorolja az aktuális könyvtár összes „.desktop” fájlját:

visszhang * .asztal

Igen. Ez nem játszik az echoerősségeinek. Használja ls.

Írás fájlokba visszhanggal

Átirányíthatjuk a kimenetet echoés létrehozhatunk szövegfájlokat, vagy írhatunk meglévő szövegfájlokba.

Ha az >á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 kimenet echoa fájl elejére kerül, felülírva a korábbi tartalmat.

Ha az >>átirányítási operátort használjuk , akkor a fájl létrejön, ha nem létezik. A kimenet echoa fájl végéhez kerül, és nem írja felül a fájl meglévő tartalmát.

echo "Új fájl létrehozása." > minta.txt
echo "Hozzáadás a fájlhoz." >> minta.txt
macska minta.txt

Az első parancs létrehoz egy új fájlt, és szöveget illeszt be. A második parancs egy sor szöveget ad a fájl aljára. A catparancs megjeleníti a fájl tartalmát a terminál ablakában.

Természetesen változókat is felvehetünk, hogy hasznos információkat adjunk a fájlunkhoz. Ha a fájl naplófájl, akkor érdemes időbélyeget hozzáadni hozzá. Ezt megtehetjük a következő paranccsal.

Vegye figyelembe az egyetlen idézőjelet a dateparancs 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 date helyes továbbítását  .

echo "A naplófájl elindítva: $ (dátum + '% D% T')"> logfile.txt
macska logfile.txt

A naplófájlunk számunkra készült, és catmegmutatja, hogy az databélyegzőt és az időbélyeget egyaránt hozzáadták.

KAPCSOLÓDÓ: Mi az stdin, az stdout és a stderr Linux alatt?

Ez a visszhang repertoárja

Egyszerű parancs, de nélkülözhetetlen. Ha nem létezne, ki kellene találnunk.

Végül is jót tettek Zeusz shenaniganjai.