Kuinka käyttää Echo-komentoa Linuxissa

echoKomento on täydellinen kirjoittamista muotoiltua tekstiä pääteikkuna. Ja sen ei tarvitse olla staattinen teksti. Se voi sisältää shell-muuttujia, tiedostonimiä ja hakemistoja. Voit myös ohjata kaiun uudelleen luomaan tekstitiedostoja ja lokitiedostoja. Seuraa tätä yksinkertaista opasta saadaksesi selville miten.

Kaiku toistaa sen, mitä käskit sen toistamaan

Zeus halusi lähteä Olympus-vuorelta puolisoiden kanssa kauniiden nymfien kanssa. Yhdellä matkalla hän käski vuoren nymfin nimeltä Echo sijoittamaan vaimonsa Heran, jos hän seuraisi häntä. Hera tuli etsimään Zeusta, ja Echo teki kaiken voitavansa pitääkseen Heraa keskustelussa. Lopuksi Hera menetti itsensä ja kirosi köyhän Echon niin, että hän toisti vain viimeiset sanat, jotka joku muu oli sanonut. Kuka arvaa, mitä Hera teki Zeukselle, kun hän sai hänet kiinni.

Ja sitä on melkein paljon echoelämässä. Se toistaa sen, mitä sen on käsketty toistaa. Se on yksinkertainen, mutta tärkeä tehtävä. Ilman sitä echoemme pystyisi saamaan näkyvää ulostuloa esimerkiksi shell-skripteistä.

Vaikka sitä ei ole kuormitettu lukuisilla kelloilla ja pilleillä, on hyvät mahdollisuudet, joilla echoon joitain ominaisuuksia, joita et tiennyt tai jotka olet unohtanut.

kaiku? kaiku!

Useimmat Linux-järjestelmät tarjoavat kaksi versiota echo. Bash-kuoressa on oma echosisäänrakennettu, ja siellä on myös binaarinen suoritettava versio echo.

Näemme kaksi eri versiota käyttämällä seuraavia komentoja:

tyyppi kaiku
missä on kaikua

typeKomento kertoo, onko käsky välitämme sitä argumenttina on sisäänrakennettu komento, binaariohjelman alias, tai toiminto. Se ilmoittaa meille, että echose on sisäänrakennettu kuori.

Heti kun se on löytänyt vastauksen, se typelakkaa etsimästä uusia otteluita. Joten se ei kerro meille, onko järjestelmässä muita samannimisiä komentoja. Mutta se kertoo meille, kumman se löytää ensin. Ja sitä käytetään oletuksena, kun annamme kyseisen komennon.

whereisKomento etsii binaariohjelman lähdekoodia, ja man-sivulta komennon välitämme sitä sen komentoriviparametria. Se ei etsi rakennettuja kuori-ohjelmia, koska niillä ei ole erillistä binaarista suoritettavaa tiedostoa. Ne ovat olennainen osa Bash-suoritettavaa tiedostoa.

whereisKomento raportoi, että echoon suoritettavassa sijaitsee /binhakemistossa.

Tämän version käyttämiseksi echosinun on nimenomaisesti kutsuttava sitä antamalla polku suoritettavaan tiedostoon komentorivillä:

/ bin / echo --versio

Sisäänrakennettu kuori ei tiedä mikä --versionkomentoriviargumentti on, se vain toistaa sen pääteikkunassa:

kaiku - versio

Kaikki tässä esitetyt esimerkit käyttävät echoBash-kuoren oletusversiota .

Tekstin kirjoittaminen päätelaitteeseen

Voit kirjoittaa yksinkertaisen merkkijonon pääteikkunaan kirjoittamalla echoja merkkijonon, jonka haluat sen näyttävän:

kaiku Nimeni on Dave.

Teksti toistetaan meille. Mutta kokeilessasi huomaat pian, että asiat voivat olla hieman monimutkaisempia. Katso tätä esimerkkiä:

kaiku Nimeni on Dave ja olen nörtti.

Terminaali-ikkunassa näkyy   > merkki ja istuu siellä odottamassa. Ctrl + C palauttaa sinut komentokehotteeseen. Mitä tapahtui siellä?

Yksittäinen lainaus tai heittomerkki sanassa "olen" sekava echo. Se tulkitsi kyseisen yhden lainauksen lainatun tekstiosan aluksi. Koska se ei havainnut lopullista yksittäistä tarjousta,  echoodotti lisää syötettä. Se odotti, että lisäpanos sisälsi puuttuvan yksittäisen tarjouksen, jota se odotti.

Yhden lainauksen sisällyttäminen merkkijonoon yksinkertaisin ratkaisu on kietoa koko merkkijono kaksoislainausmerkkeihin:

kaiku "Nimeni on Dave ja olen nörtti."

Tekstin kääriminen lainausmerkeihin on hyvä yleinen neuvo. Skripteissä se rajaa puhtaasti parametrit, joille välität echo. Tämä helpottaa komentosarjojen lukemista ja virheenkorjausta.

Entä jos haluat sisällyttää kaksinkertaisen lainausmerkin tekstijonoon? Se on helppoa, laita vain taaksepäin \kaksoislainausmerkin eteen (ilman tilaa niiden välillä).

kaiku "Nimeni on Dave ja olen \" geek. \ ""

Tämä kietoo sanan "geek" meille lainausmerkkeihin. Näemme lisää näistä taaksepäin pakenevista hahmoista pian.

Muuttujien käyttäminen kaikun kanssa

Toistaiseksi olemme kirjoittaneet ennalta määritettyä tekstiä pääteikkunaan. Voimme käyttää muuttujia kanssa echotuottaaksemme dynaamisemman tuotannon, jonka kuori on lisännyt siihen arvot. Voimme määritellä yksinkertaisen muuttujan tällä komennolla:

my_name = "Dave"

Muuttuja nimeltä my_nameon luotu. Sille on annettu Dave-tekstin arvo. Voimme käyttää muuttujan nimeä merkkijonoissa, joille välitämme echo , ja muuttujan arvo kirjoitetaan pääteikkunaan. Sinun on laitettava dollarin merkki $muuttujan nimen eteen, jotta echotiedät, että se on muuttuja.

On olemassa varoitus. Jos olet käärittänyt merkkijonon lainausmerkeihin, echo se käsittelee kaikkea kirjaimellisesti. Käytä muuttujan arvoa eikä muuttujan nimeä , käytä kaksoislainausmerkkejä.

echo 'Nimeni on $ my_name'
echo "Nimeni on $ my_name"

Hieman osuvasti, se kannattaa toistaa:

  • Yksittäisten lainausmerkkien käyttö johtaa siihen, että teksti kirjoitetaan pääteikkunaan kirjaimellisesti .
  • Kaksoislainausmerkkien käyttäminen  johtaa muuttujan tulkitsemiseen - jota kutsutaan myös muuttujan laajennukseksi - ja arvo kirjoitetaan pääteikkunaan.

RELATED: Kuinka työskennellä muuttujien kanssa Bashissa

Komentojen käyttäminen kaikun kanssa

Voimme käyttää komentoa echoja sisällyttää sen lähdön merkkijonoon, joka kirjoitetaan pääteikkunaan. Meidän on käytettävä dollarin merkkiä $ikään kuin komento olisi muuttuja, ja kääri koko komento sulkeisiin.

Aiomme käyttää päivämäärä-komentoa. Yksi vinkki on käyttää komentoa yksin, ennen kuin aloitat sen käytön echo. Tällä tavoin, jos komentosi syntaksissa on jotain vikaa, tunnistat sen ja korjaat sen ennen kuin lisäät sen echokomentoon. Sitten, jos echokomento ei toimi odotetulla tavalla, tiedät, että ongelman on oltava echosyntaksissa, koska olet jo osoittanut komennon syntaksin.

Joten, kokeile tätä pääteikkunassa:

päivämäärä +% D

Ja ollessamme tyytyväisiä siihen, että saamme mitä odotamme päivämääräkomennolta, integroimme sen echokomentoon:

kaiku "Päivän päivämäärä on: $ (päivämäärä +% D)"

Huomaa, että komento on sulkeissa ja dollarin merkki $ on välittömästi ennen ensimmäisiä sulkeita.

Tekstin muotoilu kaikulla

-e(Mahdollistavat kenoviivasuojaukset) mahdollisuus antaa meidän käyttää joitakin kenoviivalla merkkejä muuttaa asettelua tekstin. Nämä ovat taaksepäin kallistetut merkit, joita voimme käyttää:

  • \ a : Hälytys (tunnetaan historiallisesti nimellä BEL). Tämä tuottaa oletusarvoisen hälytysäänen.
  • \ b : kirjoittaa askelpalautusmerkin.
  • \ c : Hylkää kaikki muut tuotokset.
  • \ e : Kirjoittaa pakomerkin.
  • \ f : kirjoittaa lomakkeen syötemerkin.
  • \ n : kirjoittaa uuden rivin.
  • \ r : Kirjoittaa paluukuljetuksen.
  • \ t : Kirjoittaa vaakasuoran välilehden.
  • \ v : Kirjoittaa pystysuoran välilehden.
  • \\ : Kirjoittaa taaksepäin viivan.

Käytetään joitain niistä ja katsotaan, mitä he tekevät.

echo -e "Tämä on pitkä tekstirivi \ njakautunut kolmen rivin yli \ npalalla \ ttabs \ ton \ tthth \ tthird \ tline"

Teksti jaetaan uudeksi riviksi, jossa olemme käyttäneet \nmerkkejä, ja välilehti lisätään kohtaan, jossa olemme käyttäneet \tmerkkejä.

echo -e "Tässä \ vare \ vvertical \ vtabs"

Kuten \nuudet rivimerkit, pystysuuntainen välilehti \vsiirtää tekstin alla olevalle riville. Mutta toisin kuin  \n uudet rivimerkit, \vpystysuuntainen välilehti ei aloita uutta riviä sarakkeessa nolla. Se käyttää nykyistä saraketta.

\bAskelpalauttimen hahmot siirrä kohdistin yhden kirjaimen. Jos päätelaitteeseen on kirjoitettava enemmän tekstiä, se korvaa edellisen merkin.

echo -e "123 \ b4"

"3" on ylikirjoittanut "4".

\rRivinvaihto merkki aiheuttaa  echopalata alusta nykyisen rivin ja kirjoittaa muita tekstin sarakkeessa nolla.

echo -e "123 \ r456"

”123” -merkit korvataan “456” -merkeillä.

\aHälytys merkki tuottaa kuultavan ”kiristää.” Se käyttää nykyisen teeman oletushälytysääntä.

echo -e "Tee piippaus \ a"

-n(Ei newline) vaihtoehto ei ole kenoviivalla järjestyksessä, mutta se ei vaikuta kosmetiikka tekstin asettelu, niin kerromme täällä. Se estää echouuden rivin lisäämisen tekstin loppuun. Komentokehote näkyy välittömästi pääteikkunaan kirjoitettavan tekstin jälkeen.

echo -n "ei lopullista uutta riviä"

Kaiun käyttäminen tiedostojen ja hakemistojen kanssa

Voit käyttää echositä eräänlaisena köyhän miehen versiona ls. Vaihtoehtosi ovat vähän ja kaukana, kun käytät echotätä. Jos tarvitset minkäänlaista uskollisuutta tai hienoa hallintaa, sinun on parempi käyttää lsja sen joukko vaihtoehtoja.

Tämä komento listaa kaikki nykyisen hakemiston tiedostot ja hakemistot:

kaiku *

Tämä komento listaa kaikki nykyisen hakemiston tiedostot ja hakemistot, joiden nimi alkaa kirjaimella “D”:

kaiku D *

Tämä komento listaa kaikki nykyisen hakemiston .desktop-tiedostot:

echo * .työtaso

Joo. Tämä ei pelaa echovahvuuksille. Käytä ls.

Kirjoittaminen tiedostoihin kaikulla

Voimme ohjata lähdön echoja joko luoda tekstitiedostoja tai kirjoittaa olemassa oleviin tekstitiedostoihin.

Jos käytämme >uudelleenohjausoperaattoria, tiedosto luodaan, jos sitä ei ole olemassa. Jos tiedosto on olemassa, lähde lähteestä echolisätään tiedoston alkuun korvaamalla kaikki aikaisemmat sisällöt.

Jos käytämme >>uudelleenohjausoperaattoria, tiedosto luodaan, jos sitä ei ole olemassa. Lähtö kohteesta echolisätään tiedoston loppuun eikä korvaa tiedoston olemassa olevaa sisältöä.

echo "Uuden tiedoston luominen." > näyte.txt
echo "Lisääminen tiedostoon". >> näyte.txt
kissan näyte. txt

Ensimmäinen komento luo uuden tiedoston ja siihen lisätään tekstiä. Toinen komento lisää tekstirivin tiedoston loppuun. catKomento näyttää tiedoston sisältö päätelaitteelle ikkunaan.

Ja tietysti voimme sisällyttää muuttujia lisätäksesi hyödyllisiä tietoja tiedostoon. Jos tiedosto on lokitiedosto, saatamme haluta lisätä siihen aikaleiman. Voimme tehdä sen seuraavalla komennolla.

Huomaa yksittäiset lainausmerkit datekomennon parametrien ympärillä . Ne estävät parametrien välisen tilan tulkitsemisen parametriluettelon loppuun. Ne varmistavat, että parametrit välitetään  date oikein.

echo "Lokitiedosto aloitettu: $ (päivämäärä + '% D% T')"> logfile.txt
kissan lokitiedosto.txt

Lokitiedostomme on luotu meille ja catosoittaa meille, että siihen lisättiin sekä päivämäärä- että aikaleima.

RELATED: Mitä ovat stdin, stdout ja stderr Linuxissa?

Se on kaikun repertuaari

Yksinkertainen komento, mutta välttämätön. Jos sitä ei olisi, meidän olisi keksittävä se.

Zeuksen shenanigans tekivät loppujen lopuksi hyvää.