Hur man använder Echo Command på Linux
- Dave McKay
@TheGurkha
- 29 oktober 2019, 08:00 EDT
echo
-kommandot är perfekt för att skriva formaterad text till terminalfönstret. Och det behöver inte vara statisk text. Det kan innehålla skalvariabler, filnamn och kataloger. Du kan också omdirigera ekot för att skapa textfiler och loggfiler. Följ den här enkla guiden för att ta reda på hur.
Echo upprepar vad du säger att det ska upprepas
Zeus gillade att lämna Olympusberget för att samlas med vackra nymfer. På en resa berättade han för en bergsnymf som heter Echo att väglägga sin fru Hera om hon följde honom. Hera kom och letade efter Zeus, och Echo gjorde allt hon kunde för att hålla Hera i samtal. Slutligen tappade Hera sitt humör och förbannade dåligt Echo så att hon bara upprepar de sista orden som någon annan hade sagt. Vad Hera gjorde mot Zeus när hon kom i kontakt med honom är någon som gissar.
Och det är ganska mycket echo
mycket i livet. Det upprepar vad det har fått höra att upprepa. Det är en enkel funktion, men en viktig funktion. Utan echo
skulle vi till exempel inte kunna få synlig utdata från skalskript.
Även om den inte är laddad med en mängd klockor och visselpipor, det finns en god chans att echo
har några funktioner som du inte visste om eller som du hade glömt.
eko? echo!
De flesta Linux-system har två versioner av echo
. Bash-skalet har en egen echo
inbyggd i det, och det finns också en binär körbar version av echo
.
Vi kan se de två olika versionerna med hjälp av följande kommandon:
type echo
whereis echo
type
berättar om kommandot vi skickar till det som dess argument är ett inbyggt skal, en binär körbar, ett alias eller en funktion. Det rapporterar till oss att echo
är ett inbyggt skal.
Så snart det har hittat ett svar, type
slutar leta efter ytterligare matchningar. Så det säger oss inte om det finns andra kommandon med samma namn i systemet. Men det säger oss vilken den hittar först. Och det är den som kommer att användas som standard när vi utfärdar det kommandot.
Kommandot whereis
letar efter den binära körbara, källkoden och man-sidan för kommandot skickar vi till det som dess kommandoradsparameter. Det ser inte efter inbyggda skal eftersom de inte har en separat binär körbar. De är en integrerad del av Bash-körbar.
Kommandot whereis
rapporterar att echo
är en binär körbar i katalogen /bin
.
Om du vill använda den versionen av echo
måste du uttryckligen ringa den genom att tillhandahålla sökvägen till den körbara på kommandoraden:
/bin/echo --version
Inbyggt skal vet inte vad --version
kommandoradsargument är att det bara upprepas i terminalfönstret:
echo --version
Exemplen som visas här använder alla standard version av echo
, i Bash-skalet.
Skriva text till terminalen
Att skriva en enkel textsträng till terminalfönstret , skriv echo
och strängen du vill att den ska visa:
echo My name is Dave.
Texten upprepas för oss. Men när du experimenterar kommer du snart att upptäcka att saker kan bli lite mer komplicerade. Titta på detta exempel:
echo My name is Dave and I"m a geek.
Terminalfönstret visar ett >
-tecken och sitter där och väntar. Ctrl + C återgår till kommandotolken. Vad hände där?
Det enda citatet eller apostrofen i ordet ”Jag är” förvirrad echo
. Det tolkade det enda citatet som början på ett citerat avsnitt av text. Eftersom det inte upptäckte ett avslutande enstaka offert väntade echo
på mer inmatning. Det förväntades att ytterligare inmatning skulle inkludera det saknade enstaka offertet det väntade på.
För att inkludera ett enda citat i en sträng är den enklaste lösningen att slå in hela strängen inom dubbla citattecken:
echo "My name is Dave and I"m a geek."
Inpackning av din text i dubbla citattecken är bra allmänt råd. I skript avgränsar det de parametrar som du skickar till echo
. Det gör läsning – och felsökning – skript mycket enklare.
Vad händer om du vill inkludera ett dubbelt citattecken i din textsträng?Det är enkelt, lägg bara ett snedstreck \
framför dubbelt citattecken (utan utrymme mellan dem).
echo "My name is Dave and I"m a \"geek.\""
Detta slår in ordet ”geek” i dubbla citattecken för oss. Vi kommer snart att se fler av dessa bakåtstreckade tecken.
Använda variabler med eko
Hittills , vi har skrivit fördefinierad text till terminalfönstret. Vi kan använda variabler med echo
för att producera output som är mer dynamisk och har värden införda för oss av skalet. kan definiera en enkel variabel med det här kommandot:
my_name="Dave"
En variabel som heter my_name
har skapats. Den har skapats tilldelade värdet på texten ”Dave.” Vi kan använda variabelnamnet i strängarna som vi skickar till echo
, och värdet på variabeln skrivs till terminalfönstret. Du måste sätta ett dollartecken $
framför variabelnamnet för att echo
ska veta att det är en variabel.
Det finns en varning. Om du har lindat din sträng i enstaka citattecken echo
behandlas allt bokstavligt. För att visa variabelvärdet och inte variabelns namn, använd dubbla citattecken.
echo "My name is $my_name"
echo "My name is $my_name"
Något lämpligt är det värt att upprepa:
- Att använda enstaka citattecken resulterar i att texten skrivs till terminalfönstret på ett bokstavligt sätt.
- Användning av dubbla citattecken resulterar i variabeln som tolkas – även kallad variabelutvidgning – och värdet skrivs till terminalfönstret.
RELATERAD: Hur man arbetar med variabler i bash
Använd kommandon med echo
Vi kan använda ett kommando med echo
och införliva dess utdata i strängen som skrivs till terminalfönstret. Vi måste använda dollartecknet $
som om kommandot var en variabel och slå hela kommandot inom parentes.
Vi ska använda datumkommandot . Ett tips är att använda kommandot på egen hand innan du börjar använda det med echo
. På det sättet, om det är något fel med syntaxen för ditt kommando, identifierar du det och korrigerar det innan du inkluderar det i kommandot echo
. Om kommandot echo
inte gör vad du förväntar dig vet du att problemet måste vara med syntaxen echo
eftersom du har redan bevisat kommandosyntaxen.
Så prova detta i terminalfönstret:
date +%D
Och nöjd med att vi får vad vi förväntar oss av datumkommandot, integrerar vi det i ett echo
-kommando:
echo "Today"s date is: $(date +%D)"
Observera att kommandot ligger inom parentes och dollartecknet $
är omedelbart före den första parentesen.
Formatering av text med eko
Med alternativet -e
(aktivera bakåtvänd snedstreck) kan vi använda några bakåtstreckade tecken för att ändra textens layout. Det här är de bakåtstreckade tecken som vi kan använda:
Låt oss använda några av dem och se vad de gör.
echo -e "This is a long line of text\nsplit across three lines\nwith\ttabs\ton\tthe\tthird\tline"
Texten delas upp i en ny rad där vi har använt \n
-tecknen och en flik infogas där vi har använt \t
-tecknen.
echo -e "Here\vare\vvertical\vtabs"
Liksom \n
nya radtecken, en vertikal flik \v
flyttar texten till raden nedan. Men till skillnad från \n
nya radtecken startar den vertikala fliken \v
inte den nya raden vid kolumn noll. Den använder den aktuella kolumnen.
\b
bakre mellantecken flyttar markören tillbaka ett tecken. Om det finns mer text som ska skrivas till terminalen kommer den texten att skriva över det föregående tecknet.
echo -e "123\b4"
”3” skrivs över av ” 4 ”.
\r
karaktärretur gör att echo
återgår till början av den aktuella raden och till skriv ytterligare text från kolumn noll.
echo -e "123\r456"
”123” -tecknen skrivs över av ”456” -tecknen.
\a
varningstecken ger ett hörbart ”pip”. Den använder standardlarmet för ditt aktuella tema.
echo -e "Make a bleep\a"
-n
(ingen ny linje) är inte en sekvens som undviker snedstreck, men det påverkar kosmetiken i textlayouten, så vi diskuterar det här. Det förhindrar echo
från att lägga till en ny rad i slutet av texten. Kommandotolken visas direkt efter texten som skrivs till terminalfönstret.
echo -n "no final newline"
Använda eko med filer och kataloger
Du kan använda echo
som ett slags av fattigmans version av ls
. Dina alternativ är få och långt ifrån när du använder echo
så här. Om du behöver någon form av trohet eller fin kontroll är det bättre att du använder ls
och dess massor av alternativ.
Detta kommando listar alla filer och kataloger i den aktuella katalogen:
echo *
Detta kommando listar alla filer och kataloger i den aktuella katalogen vars namn börjar med ”D”:
echo D*
Detta kommando listar alla ”.desktop” -filer i den aktuella katalogen:
echo *.desktop
Ja. Detta spelar inte för echo
s styrkor. Använd ls
.
Skriva till filer med eko
Vi kan omdirigera utdata från echo
och antingen skapa textfiler eller skriva till befintliga textfiler.
Om vi använder >
omdirigeringsoperatören skapas filen om den inte finns. Om filen finns, läggs utdata från echo
till i början av filen, vilket skriver över allt tidigare innehåll.
Om vi använder >>
omdirigeringsoperatör, filen skapas om den inte finns. Utdata från echo
läggs till i slutet av filen och skriver inte över något befintligt innehåll i filen.
echo "Creating a new file." > sample.txt
echo "Adding to the file." >> sample.txt
cat sample.txt
En ny fil skapas med det första kommandot och text infogas Gillar det. Det andra kommandot lägger till en textrad längst ner i filen. Kommandot cat
visar filens innehåll till terminalfönstret.
Och naturligtvis kan vi inkludera variabler för att lägga till användbar information till vår fil. Om filen är en loggfil kanske vi vill ha en tidsstämpel till den. Vi kan göra det med nästa kommando.
Observera de enskilda citattecken runt parametrarna för kommandot date
. De förhindrar att mellanrummet mellan parametrarna tolkas som slutet på parametern. De säkerställer att parametrarna skickas till date
korrekt.
echo "Logfile started: $(date +"%D %T")" > logfile.txt
cat logfile.txt
Vår loggfil skapas för oss och cat
visar oss att både datastämpeln och tidsstämpeln har lagts till.
RELATED : Vad är stdin, stdout och stderr på Linux?
Det är echos repertoar
Ett enkelt kommando, men oumbärligt. Om det inte fanns, skulle vi behöva uppfinna det.
Zeus shenanigans gjorde trots allt lite bra.