Hvordan bruke Echo Command på Linux
- Dave McKay
@TheGurkha
- 29. oktober 2019, 08:00 EDT
echo
kommandoen er perfekt for å skrive formatert tekst til terminalvinduet. Og det trenger ikke være statisk tekst. Det kan inkludere skallvariabler, filnavn og kataloger. Du kan også omdirigere ekko for å opprette tekstfiler og loggfiler. Følg denne enkle veiledningen for å finne ut hvordan.
Echo Repeats What You Tell It To Repeat
Zeus var glad i å forlate Olympus-fjellet for å samle med vakre nymfer. På en tur fortalte han en fjellnymfe som heter Echo, for å veie kona Hera hvis hun fulgte ham. Hera kom og lette etter Zeus, og Echo gjorde alt hun kunne for å holde Hera i samtale. Til slutt mistet Hera temperamentet og forbannet stakkars ekko slik at hun bare gjentok de siste ordene som noen andre hadde sagt. Hva Hera gjorde mot Zeus da hun fikk tak i ham, er det noen som gjetter.
Og det er ganske mye echo
’mye i livet. Det gjentar hva det er blitt fortalt å gjenta. Det er en enkel funksjon, men en viktig funksjon. Uten echo
, ville vi ikke være i stand til å få synlig utdata fra for eksempel skallskripter.
Selv om det ikke er lastet ned med et mangfold av bjeller og fløyter, det er en god sjanse for at echo
har noen funksjoner som du ikke visste om, eller som du hadde glemt.
ekko? ekko!
De fleste Linux-systemer har to versjoner av echo
. Bash-skallet har sin egen echo
innebygd i det, og det er også en binær kjørbar versjon av echo
.
Vi kan se de to forskjellige versjonene ved å bruke følgende kommandoer:
type echo
whereis echo
type
-kommandoen forteller oss om kommandoen vi overfører til den som argument, er et innebygd skall, en binær kjørbar, et alias eller en funksjon. Den rapporterer til oss at echo
er et innebygd skall.
Så snart det har funnet svar, type
slutter å lete etter flere treff. Så det forteller oss ikke om det er andre kommandoer med samme navn i systemet. Men det forteller oss hvilken den finner først. Og det er den som vil bli brukt som standard når vi utsteder den kommandoen.
whereis
-kommandoen ser etter den binære kjørbare, kildekoden og mannssiden for kommandoen vi sender til den som kommandolinjeparameter. Det ser ikke etter shell builtins fordi de ikke har en separat binær kjørbar. De er en integrert del av Bash-kjørbar.
whereis
-kommandoen rapporterer at echo
er en binær kjørbar ligger i /bin
-katalogen.
For å bruke den versjonen av echo
, må du eksplisitt ringe den ved å oppgi stien til kjørbar på kommandolinjen:
/bin/echo --version
Innebygd skall vet ikke hva --version
kommandolinjeargumentet er, det gjentar det bare i terminalvinduet:
echo --version
Eksemplene som vises her, bruker alle standard versjon av echo
, i Bash-skallet.
Skrive tekst til terminalen
For å skrive en enkel tekststreng til terminalvinduet , skriv echo
og strengen du vil at den skal vises:
echo My name is Dave.
Teksten gjentas for oss. Men når du eksperimenterer, vil du snart oppdage at ting kan bli litt mer kompliserte. Se på dette eksemplet:
echo My name is Dave and I"m a geek.
Terminalvinduet viser et >
tegn og sitter der og venter. Ctrl + C vil returnere deg til ledeteksten. Hva skjedde der?
Enkelt sitatet eller apostrofen i ordet «I’m» forvirret echo
. Det tolket det ene sitatet som starten på et sitert avsnitt tekst. Fordi den ikke oppdaget et avsluttende enkelt sitat, ventet echo
på mer innspill. Det forventet at ytterligere input ville inkludere det manglende enkelt sitatet det ventet på.
For å inkludere et enkelt sitat i en streng, er den enkleste løsningen å pakke hele strengen med doble anførselstegn:
echo "My name is Dave and I"m a geek."
Innpakning av teksten i dobbelt anførselstegn er gode generelle råd. I skript avgrenser det parametrene du sender til echo
. Dette gjør lesing – og feilsøking – skript mye enklere.
Hva om du vil inkludere et dobbelt anførselstegn i tekststrengen din?Det er enkelt, bare sett et tilbakeslag \
foran det dobbelte anførselstegnet (uten mellomrom mellom dem).
echo "My name is Dave and I"m a \"geek.\""
Dette pakker inn ordet «geek» med doble anførselstegn for oss. Vi ser snart flere av disse tilbakeslagstegnede tegnene.
Bruk av variabler med ekko
Så langt , har vi skrevet forhåndsdefinert tekst til terminalvinduet. Vi kan bruke variabler med echo
for å produsere output som er mer dynamisk og har verdier satt inn i det for oss av skallet. kan definere en enkel variabel med denne kommandoen:
my_name="Dave"
En variabel kalt my_name
er opprettet. Den har blitt opprettet tilordnet verdien av teksten «Dave.» Vi kan bruke variabelnavnet i strengene vi overfører til echo
, og verdien av variabelen vil bli skrevet til terminalvinduet. Du må sette et dollartegn $
foran variabelnavnet for å la echo
vite at det er en variabel.
Det er en advarsel. Hvis du har pakket strengen i enkle anførselstegn echo
, behandles alt bokstavelig. For å få variabelverdien vist, og ikke navnet på variabelen, bruk dobbel anførselstegn.
echo "My name is $my_name"
echo "My name is $my_name"
Noe passende er det verdt å gjenta:
- Bruk av enkle anførselstegn resulterer i at teksten skrives bokstavelig til terminalvinduet.
- Bruk av doble anførselstegn variabelen som tolkes – også kalt variabel utvidelse – og verdien skrives til terminalvinduet.
RELATED: How to Work with Variables in Bash
Bruk kommandoer med ekko
Vi kan bruke en kommando med echo
og innlemme utgangen i strengen som skrives til terminalvinduet. Vi må bruke dollartegnet $
som om kommandoen var en variabel, og pakke hele kommandoen i parentes.
Vi skal bruke dato-kommandoen . Et tips er å bruke kommandoen alene før du begynner å bruke den med echo
. På den måten, hvis det er noe galt med syntaksen til kommandoen din, identifiserer du den og retter den før du tar den med i echo
-kommandoen. Hvis echo
-kommandoen ikke gjør det du forventer, vet du at problemet må være med echo
syntaksen fordi du har allerede bevist kommandasyntaks.
Så prøv dette i terminalvinduet:
date +%D
Og fornøyd med at vi er får vi det vi forventer av datokommandoen, integrerer vi den i en echo
-kommando:
echo "Today"s date is: $(date +%D)"
Merk at kommandoen er innenfor parentes og dollartegnet $
er rett før den første parentesen.
Formatering av tekst med ekko
Med alternativet -e
(aktiver tilbakeslag) kan vi bruke noen tegn som er unntatt skråstrek for å endre utformingen av teksten. Dette er tegnene vi kan bruke med tilbakeslag, vi kan bruke:
La oss bruke noen av dem og se hva de gjør.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
Teksten er delt inn i en ny linje der vi har brukt \n
tegn og det settes inn en fane der vi har brukt \t
tegn.
echo -e "Here\vare\vvertical\vtabs"
Som \n
nye linjetegn, en loddrett fane \v
flytter teksten til linjen nedenfor. Men i motsetning til \n
nye linjetegn, starter ikke den nye linjen ved kolonne null, \v
. Den bruker den gjeldende kolonnen.
\b
tilbakeslagstegn flytter markøren ett tegn tilbake. Hvis det skal skrives mer tekst til terminalen, vil den teksten overskrive det forrige tegnet.
echo -e "123\b4"
«3» er overskrevet av » 4 ”.
\r
vognretur får echo
til å gå tilbake til starten av den nåværende linjen og til skriv hvilken som helst ytterligere tekst fra kolonne null.
echo -e "123\r456"
«123» -tegnene blir overskrevet av «456» -tegnene.
\a
varselkarakter vil gi et hørbart «pip». Den bruker standard varsellyd for ditt nåværende tema.
echo -e "Make a bleep\a"
-n
(ingen ny linje) -alternativet er ikke en sekvens som er unntatt tilbakeslag, men det påvirker kosmetikken til tekstoppsettet, så vi vil diskutere det her. Det forhindrer echo
en ny linje til slutten av teksten. Kommandoprompten vises rett etter teksten som er skrevet til terminalvinduet.
echo -n "no final newline"
Bruke ekko med filer og kataloger
Du kan bruke echo
som en slags av fattigmannsversjonen av ls
. Alternativene er få og langt mellom når du bruker echo
som dette. Hvis du trenger noen form for troskap eller fin kontroll, er det bedre å bruke ls
og dens rekke alternativer.
Denne kommandoen viser alle filene og kataloger i den gjeldende katalogen:
echo *
Denne kommandoen viser alle filene og katalogene i den aktuelle katalogen hvis navn starter med «D»:
echo D*
Denne kommandoen viser alle «.desktop» -filene i gjeldende katalog:
echo *.desktop
Ja. Dette spiller ikke for echo
s styrker. Bruk ls
.
Skrive til filer med ekko
Vi kan omdirigere utdata fra echo
og enten opprette tekstfiler eller skrive til eksisterende tekstfiler.
Hvis vi bruker >
viderekoblingsoperatøren, opprettes filen hvis den ikke eksisterer. Hvis filen finnes, legges utdata fra echo
til i begynnelsen av filen, og overskriver tidligere innhold.
Hvis vi bruker >>
omdirigeringsoperator, filen opprettes hvis den ikke eksisterer. Utgangen fra echo
legges til på slutten av filen og overskriver ikke noe eksisterende innhold i filen.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
En ny fil opprettes av den første kommandoen, og tekst settes inn i det. Den andre kommandoen legger til en tekstlinje nederst i filen. Kommandoen cat
viser innholdet av filen til terminalvinduet.
Og selvfølgelig kan vi inkludere variabler for å legge til nyttig informasjon i filen vår. Hvis filen er en loggfil, vil vi kanskje ha et tidsstempel lagt til den. Vi kan gjøre det med neste kommando.
Legg merke til de enkelte anførselstegnene rundt parametrene for date
-kommandoen. De forhindrer at mellomrom mellom parameterne tolkes som slutten på parameterlisten. De sørger for at parameterne blir sendt til date
riktig.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Loggfilen vår er opprettet for oss og cat
viser oss at både datastempel og tidsstempel ble lagt til den.
RELATED : Hva er stdin, stdout og stderr på Linux?
Det er ekkos repertoar
En enkel kommando, men uunnværlig. Hvis den ikke eksisterte, måtte vi oppfinne den.
Zeus’s shenanigans gjorde tross alt noe godt.
Dave McKay brukte datamaskiner først når stanset papirbånd var på moten, og han har programmert siden. Etter over 30 år i IT-bransjen er han nå heltids-teknologijournalist. I løpet av karrieren har han jobbet som frilans programmerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist som databeskyttelsesansvarlig. Dave er en Linux-evangelist og åpen kildekode-talsmann. Les full bio «