Sådan bruges Echo Command på Linux
- Dave McKay
@TheGurkha
- 29. oktober 2019, 8:00 am EDT
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.
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.
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
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.
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.
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.
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)"
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"
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"
-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*
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
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
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 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 “