Creative Saplings

Sådan bruges Echo Command på Linux

oktober 19, 2020
No Comments
  • Dave McKay

    @TheGurkha

  • 29. oktober 2019, 8:00 am EDT
Fatmawati Achmad Zaenuri /

echo kommandoen er perfekt til at skrive formateret tekst til terminalvinduet. Og det behøver ikke at være statisk tekst. Det kan omfatte shellvariabler, filnavne og mapper. Du kan også omdirigere ekko for at oprette tekstfiler og logfiler. Følg denne enkle vejledning for at finde ud af, hvordan.

Echo gentager, hvad du fortæller det at gentage

Zeus var glad for at forlade Olympus-bjerget for at samle sig med smukke nymfer. På en tur fortalte han en bjergnimfe kaldet Echo om at lægge sin kone, Hera, hvis hun fulgte ham. Hera kom på udkig efter Zeus, og Echo gjorde alt hvad hun kunne for at holde Hera i samtale. Endelig mistede Hera sit temperament og forbandede stakkels ekko, så hun kun gentog de sidste ord, som en anden havde sagt. Hvad Hera gjorde mod Zeus, da hun fangede ham, er nogens gætte.

Og det er stort set echo ‘s meget i livet. Det gentager, hvad det er blevet fortalt at gentage. Det er en simpel funktion, men en vital funktion. Uden echo ville vi for eksempel ikke være i stand til at få synligt output fra shell-scripts.

Annonce

Selvom det ikke er fyldt med et væld af klokker og fløjter, der er en god chance for, at echo har nogle funktioner, som du ikke vidste om, eller som du havde glemt.

ekko? ekko!

De fleste Linux-systemer leverer to versioner af echo. Bash-skallen har sin egen echo indbygget i den, og der er også en binær eksekverbar version af echo.

Vi kan se de to forskellige versioner ved hjælp af følgende kommandoer:

type echo
whereis echo

type -kommandoen fortæller os, om den kommando, vi sender til den som dens argument, er en shell-indbygget, en binær eksekverbar, et alias eller en funktion. Det rapporterer til os, at echo er en shell-indbygget.

Annonce

Så snart den har fundet et svar, type holder op med at lede efter flere kampe. Så det fortæller os ikke, om der er andre kommandoer med samme navn til stede i systemet. Men det fortæller os, hvilken den finder først. Og det er den, der vil blive brugt som standard, når vi udsteder den kommando.

whereis -kommandoen søger efter den binære eksekverbare, kildekode og mandside til kommandoen vi sender til den som dens kommandolinjeparameter. Det ser ikke efter shell builtins, fordi de ikke har en separat binær eksekverbar. De er en integreret del af Bash-eksekverbar.

Kommandoen whereis rapporterer, at echo er en binær eksekverbar placeret i /bin -mappen.

For at bruge den version af echo skal du eksplicit kalde det ved at angive stien til den eksekverbare på kommandolinjen:

/bin/echo --version
Annonce

Skallen indbygget ved ikke, hvad --version kommandolinjeargument er, det gentager det bare i terminalvinduet:

echo --version

De viste eksempler bruger alle standard version af echo, i Bash-skallen.

Skrivning af tekst til terminalen

At skrive en simpel tekststreng til terminalvinduet , skriv echo og den streng, du vil have den vist:

echo My name is Dave.

Teksten gentages for os. Men når du eksperimenterer, opdager du snart, at ting kan blive lidt mere komplicerede. Se på dette eksempel:

echo My name is Dave and I"m a geek.
Annonce

Terminalvinduet viser et > tegn og sidder der og venter. Ctrl + C vender tilbage til kommandoprompten. Hvad skete der?

Enkelt citatet eller apostrofen i ordet “Jeg er” forvirret echo. Det fortolket dette enkelt citat som starten på et citeret afsnit af tekst. Da det ikke registrerede et afsluttende enkelt citat, ventede echo på mere input. Det forventede, at yderligere input ville omfatte det manglende enkelt citat, det ventede på.

For at inkludere et enkelt citat i en streng er den enkleste løsning at pakke hele strengen inden for dobbelt anførselstegn:

echo "My name is Dave and I"m a geek."

Indpakning af din tekst med dobbelt anførselstegn er god generel rådgivning. I scripts afgrænser det de parametre, du sender til echo, rent. Dette gør læsning – og fejlretning – scripts meget lettere.

Annonce

Hvad hvis du vil medtage et dobbelt citattegn i din tekststreng?Det er let, bare læg et tilbageslag \ foran det dobbelte anførselstegn (uden mellemrum imellem dem).

echo "My name is Dave and I"m a \"geek.\""

Dette indpakker ordet “nørd” i dobbelt anførselstegn for os. Vi ser snart flere af disse backslash-undslipede tegn.

Brug af variabler med ekko

Indtil videre , vi har skrevet foruddefineret tekst til terminalvinduet. Vi kan bruge variabler med echo til at producere output, der er mere dynamisk og har værdier indsat i det af skallen. kan definere en simpel variabel med denne kommando:

my_name="Dave"

En variabel kaldet my_name er oprettet. Den er blevet oprettet tildelt værdien af teksten “Dave.” Vi kan bruge variabelnavnet i strengene, som vi sender til echo, og værdien af variablen skrives til terminalvinduet. Du skal sætte et dollartegn $ foran variabelnavnet for at lade echo vide, at det er en variabel.

Annonce

Der er en advarsel. Hvis du har pakket din streng i enkelte anførselstegn echo behandler alt bogstaveligt. For at få variabelværdien vist, og ikke navnet på variablen, skal du bruge dobbelt anførselstegn.

echo "My name is $my_name"
echo "My name is $my_name"

Lidt passende er det værd at gentage:

  • Brug af enkelt anførselstegn resulterer i, at teksten skrives til terminalvinduet på en bogstavelig måde.
  • Brug af dobbelt anførselstegn resulterer i variablen fortolkes – også kaldet variabeludvidelse – og værdien skrives til terminalvinduet.

RELATERET: Sådan arbejder du med variabler i bash

Brug af kommandoer med ekko

Vi kan bruge en kommando med echo og inkorporere dens output i den streng, der er skrevet til terminalvinduet. Vi skal bruge dollartegnet $ som om kommandoen var en variabel og pakke hele kommandoen i parentes.

Vi skal bruge dato-kommandoen . Et tip er at bruge kommandoen alene, før du begynder at bruge den med echo. På den måde, hvis der er noget galt med syntaksen for din kommando, identificerer du den og retter den, før du inkluderer den i kommandoen echo. Hvis kommandoen echo ikke gør, hvad du forventer, ved du, at problemet skal være med echo syntaksen, fordi du har allerede bevist kommandoens syntaks.

Så prøv dette i terminalvinduet:

date +%D

Og tilfreds med at vi er når vi får det, vi forventer af datokommandoen, integrerer vi den i en echo -kommando:

echo "Today"s date is: $(date +%D)"
Annonce

Bemærk, at kommandoen er inden for parenteserne, og dollartegnet $ er umiddelbart før den første parentes.

Formatering af tekst med ekko

Muligheden -e (aktiver backslash escapes) giver os mulighed for at bruge nogle backslash-escape-tegn til at ændre tekstens layout. Disse er de backslash-undslippede tegn, vi kan bruge:

Lad os bruge nogle af dem og se, hvad de gør.

echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"

Teksten er opdelt i en ny linje, hvor vi har brugt \n tegn, og der indsættes en fane, hvor vi har brugt \t tegn.

echo -e "Here\vare\vvertical\vtabs"
Annonce

Ligesom \n nye linjetegn, en lodret fane \v flytter teksten til linjen nedenfor. Men i modsætning til \n nye linjetegn starter \v den lodrette fane ikke den nye linje ved kolonne nul. Den bruger den aktuelle kolonne.

\b backspace-tegn flytter markøren et tegn tilbage. Hvis der skal skrives mere tekst til terminalen, overskriver den tekst det forrige tegn.

echo -e "123\b4"

“3” er overskrevet af ” 4 ”.

\r vognreturtegnet får echo til at vende tilbage til starten af den aktuelle linje og til skriv enhver yderligere tekst fra kolonne nul.

echo -e "123\r456"

“123” -tegnene overskrives af “456” -tegnene.

\a alarmkarakter vil give et hørbart “pip”. Det bruger standardalarm til dit aktuelle tema.

echo -e "Make a bleep\a"
Annonce

-n (ingen ny linje) -mulighed er ikke en backslash-undgået sekvens, men det påvirker kosmetikken i tekstlayoutet, så vi diskuterer det her. Det forhindrer echo i at tilføje en ny linje til slutningen af teksten. Kommandoprompten vises direkte efter teksten, der er skrevet til terminalvinduet.

echo -n "no final newline"

Brug af ekko med filer og kataloger

Du kan bruge echo som en slags af fattige mands version af ls. Dine muligheder er få og langt imellem, når du bruger echo som denne. Hvis du har brug for nogen form for troskab eller fin kontrol, er det bedre at bruge ls og dens række af valgmuligheder.

Denne kommando viser alle filerne og mapper i det aktuelle bibliotek:

echo *

Denne kommando viser alle filerne og mapperne i den aktuelle mappe, hvis navn starter med “D”:

echo D*
Annonce

Denne kommando viser alle “.desktop” -filerne i den aktuelle mappe:

echo *.desktop

Ja. Dette afspilles ikke med echo s styrker. Brug ls.

Skrivning til filer med ekko

Vi kan omdirigere output fra echo og opret enten tekstfiler eller skriv til eksisterende tekstfiler.

Hvis vi bruger > omdirigeringsoperatoren, oprettes filen, hvis den ikke findes. Hvis filen findes, tilføjes output fra echo i starten af filen og overskriver alt tidligere indhold.

Hvis vi bruger >> omdirigeringsoperator, filen oprettes, hvis den ikke findes. Outputtet fra echo tilføjes til slutningen af filen og overskriver ikke eksisterende indhold i filen.

echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
Annonce

En ny fil oprettes med den første kommando, og der indsættes tekst ind i det. Den anden kommando tilføjer en tekstlinje i bunden af filen. Kommandoen cat viser indholdet af filen til terminalvinduet.

Og selvfølgelig kan vi inkludere variabler for at tilføje nogle nyttige oplysninger til vores fil. Hvis filen er en logfil, vil vi måske have et tidsstempel tilføjet til det. Vi kan gøre det med den næste kommando.

Bemærk de enkelte anførselstegn omkring parametrene for date kommandoen. De forhindrer, at mellemrummet mellem parametrene fortolkes som slutningen af parameterlisten. De sikrer, at parametrene videregives til date korrekt.

echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Annonce

Vores logfil er oprettet for os, og cat viser os, at datestempel og tidsstempel begge blev føjet til den.

RELATED : Hvad er stdin, stdout og stderr på Linux?

Det er ekkos repertoire

En simpel kommando, men uundværlig. Hvis det ikke eksisterede, ville vi være nødt til at opfinde det.

Zeus’s shenanigans gjorde trods alt noget godt.

Dave McKay
Dave McKay brugte først computere, når stanset papirbånd var på mode, og han har programmeret lige siden. Efter over 30 år i IT-branchen er han nu fuldtids teknologijournalist. I løbet af sin karriere har han arbejdet som freelance programmør, leder af et internationalt team til softwareudvikling, projektleder for it-tjenester og senest som databeskyttelsesofficer. Dave er en Linux-evangelist og open source-fortaler. Læs fuld bio “

Articles
Previous Post

Top 10 kobberrige fødevarer, du bør medtage i din kost

Next Post

Vælg dine smagsstoffer

Skriv et svar Annuller svar

Seneste indlæg

  • Verdens bedste fotografiskoler, 2020
  • Suveræne borgere tager deres regeringsfilosofi til vejene
  • Guide til reparation af stuk reparationer
  • Muckrakers (Dansk)
  • Precision Oncology

Arkiver

  • februar 2021
  • januar 2021
  • december 2020
  • november 2020
  • oktober 2020
  • september 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.