Sådan bruges Echo-kommandoen på Linuk

Fatmavati Achmad Toenuri/

echo kommando er perfekt til at skrive formateret tekst til terminalvinduet. Og det behøver ikke at være statisk tekst. Det kan omfatte shell variabler, filnavne og mapper. Du kan også omdirigere echo 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

På en tur fortalte han en bjergnymfe kaldet Echo at lægge sin kone, Hera, hvis hun fulgte ham. Hera ledte efter hende, og Echo gjorde alt, hvad hun kunne for at holde Hera i samtale. Endelig mistede Hera sit temperament og forbandede dårlig ekko, så hun kun gentager de sidste ord, som en anden havde sagt. Hvad Hera gjorde ved hende, da hun indhentede ham, er nogens gæt.

og det er stort set echo ‘s lot in life. Det gentager, hvad det er blevet fortalt at gentage. Det er en simpel funktion, men en vital. Uden echo, ville vi ikke kunne få synligt output fra shell scripts, for eksempel.

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

ekko? echo!

de fleste systemer leverer to versioner afecho. Bash shell 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 kommando fortæller os, om den kommando, vi videregiver 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 det har fundet et svar, type stopper med at lede efter yderligere 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 denne kommando.

whereis kommandoen ser efter den binære eksekverbare, kildekode og man-side for den kommando, vi videregiver til den som dens kommandolinjeparameter. Det ser ikke ud til shell builtins, fordi de ikke har en separat binær eksekverbar. De er en integreret del af Bash eksekverbare.

whereis kommando rapporterer, atecho er en binær eksekverbar placeret i/bin mappe.

for at bruge den version afecho skal du eksplicit kalde det ved at give stien til den eksekverbare på kommandolinjen:

/bin/echo --version

shell-indbygget ved ikke, hvad

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

echo --version

eksemplerne vist her bruger alle standardversionen af echo, i Bash shell.

skrivning af tekst til terminalen

for at skrive en simpel tekststreng til terminalvinduet skal du skriveecho og den streng, du vil have den til at vise:

echo My name is Dave.

teksten gentages for os. Men når du eksperimenterer, vil du snart opdage, at tingene kan blive lidt mere komplicerede. Se på dette eksempel:

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

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

det enkelte citat eller apostrof i ordet “Jeg er” forvirretecho. Det fortolkede det enkelte citat som starten på et Citeret afsnit af teksten. Fordi det ikke registrerede et afsluttende enkelt citat,echo ventede på mere input. Det forventede, at yderligere input til at inkludere 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 citatmærker:

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

indpakning af din tekst i dobbelt citatmærker er god generel rådgivning. I scripts afgrænser det rent de parametre, du overfører til echo. Dette gør læsning—og debugging-scripts meget lettere.

Hvad hvis du vil medtage et dobbelt citattegn i din tekststreng? Det er nemt, bare sæt en backslash \ foran det dobbelte citatmærke (uden mellemrum mellem dem).

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

dette ombryder ordet “nørd” i dobbelt citatmærker for os. Vi vil snart se flere af disse backslash-escaped tegn.

brug af variabler med echo

indtil videre har vi 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 for os af skallen. Vi kan definere en simpel variabel med denne kommando:

my_name="Dave"

en variabel kaldet my_name er oprettet. Det er blevet tildelt værdien af teksten “Dave.”Vi kan bruge variabelnavnet i strengene , som vi videregiver 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 enkelt citatmærker echo vil behandle alt bogstaveligt. For at få den variable værdi vist, og ikke navnet på variablen, skal du bruge dobbelt citatmærker.

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

noget passende, det er værd at gentage:

  • brug af enkelt citatmærker resulterer i, at teksten skrives til terminalvinduet på en bogstavelig måde.
  • brug af dobbelt citatmærker resulterer i, at variablen fortolkes—også kaldet variabel ekspansion—og værdien skrives til terminalvinduet.

RELATERET: Sådan arbejder du med variabler i Bash

brug af kommandoer med echo

Vi kan bruge en kommando medecho og indarbejde dens output i strengen, der er skrevet til terminalvinduet. Vi skal bruge dollartegnet $ som om kommandoen var en variabel, og pakk hele kommandoen i parentes.

Vi skal bruge kommandoen dato. 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 syntaks, fordi du allerede har bevist kommandoens syntaks.

så prøv dette i terminalvinduet:

date +%D

og tilfreds med, at vi får det, vi forventer fra datakommandoen, integrerer vi det i en echo kommando:

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

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

formatering af tekst med echo

-e (aktiver backslash escapes) mulighed lader os bruge nogle backslash-escaped tegn til at ændre layoutet af teksten. Dette er de backslash-escaped 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 en fane indsættes, 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 lodret fane ikke den nye linje ved kolonne nul. Den bruger den aktuelle kolonne.

\b backspace tegn flyt markøren tilbage et tegn. Hvis der er mere tekst, der skal skrives til terminalen, overskriver denne tekst det forrige tegn.

echo -e "123\b4"

” 3 “er overskrevet af”4”.

\r vognreturtegn forårsagerecho for at vende tilbage til starten af den aktuelle linje og skrive yderligere tekst fra kolonne nul.

echo -e "123\r456"

“123” tegnene overskrives af ” 456 ” tegnene.

\a alert tegn vil producere en hørbar “bip.”Det bruger standard alarm lyd til din aktuelle tema.

echo -e "Make a bleep\a"

-n (ingen ny linje) mulighed er ikke en backslash-escaped sekvens, men det påvirker kosmetik af 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 mapper

Du kan bruge echo som en slags fattig 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 legion af muligheder.

denne kommando viser alle filer og mapper i den aktuelle mappe:

echo *

denne kommando viser alle filer og mapper i den aktuelle mappe, hvis Navn starter med “D”:

echo D*

denne kommando viser alle “.desktop ” filer i den aktuelle mappe:

echo *.desktop

Ja. Dette spiller ikke til echo‘s styrker. Brug ls.

skrivning til filer med echo

Vi kan omdirigere output fraecho og enten oprette tekstfiler eller skrive til eksisterende tekstfiler.

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

Hvis vi bruger>> omdirigeringsoperatør, oprettes filen, hvis den ikke findes. Outputtet fra echo føjes til slutningen af filen og overskriver ikke noget 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 af den første kommando, og tekst indsættes i den. Den anden kommando tilføjer en tekstlinje til bunden af filen. Kommandoencat 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 en tidsstempel tilføjet til den. Vi kan gøre det med den næste kommando.

Bemærk de enkelte citatmærker omkring parametrene for kommandoendate. De forhindrer, at mellemrummet mellem parametrene fortolkes som slutningen af parameterlisten. De sikrer, at parametrene overføres 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 datestamp og tidsstempel er oprettet for os, og cat viser os, at datestamp og tidsstempel blev begge tilføjet til det.

RELATERET: Hvad er stdin, stdout og stderr?

det er echo ‘ s Repertoire

en simpel kommando, men uundværlig. Hvis den ikke fandtes, måtte vi opfinde den.

Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo, Jo.



Skriv et svar

Din e-mailadresse vil ikke blive publiceret.