Sådan bruges Echo-kommandoen på Linuk
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.