echo är ett skalkommando i Unix-liknande miljöer som upprepar text, vanligen en enskild rad.

Kommandot används vanligen för utskrift från skript och för utskrift av värdet på variabler. Normalt tolkar echo inte på något vis tecknen som skall skrivas ut; i det senare fallet är det kommandotolken, inte kommandot, som ersätter variabelreferensen med variabelns värde.

Olika varianter redigera

Enligt POSIX skall echo tolka argumenten som text som skall skrivas ut som sådan, utan något slag av tolkning, med ett mellanslag mellan argumenten och ett radbyte sist. Standarden tillåter dock annat beteende om "-n" är första argument eller något argument innehåller \, utom i XSI-system, där "-n" inte har någon specialbetydelse och vissa \-koder tilldelas specifika betydelser. I motsats till de flesta andra Unix-program används inte STDIN.[1]

Denna något oväntade definition av hur echo behandlar argumenten beror på att olika Unix-varianter behandlat dem olika och POSIX här går efter den minsta gemensamma nämnaren. printf rekommenderas istället för echo.[1]

BSD-varianten kontrollerar det första argumentet och lämnar bort det avslutande radbytet om detta är "-n". SYSV-varianten tillåter \-koder, så som POSIX definierar för XSI-system.[1]

GNU-varianten av echo tillåter argument som påverkar hur kommandot fungerar, nämligen "-n" för att undvika radbrytningen, "-e" för att tolka \-koder och "-E" för att inte tolka \-koder. Argumenten kan kombineras på sedvanliga sätt (t.ex. "-en"). Kommandot kan också användas med "--help" eller "--version".[2]

Ofta finns en inbyggd funktion med samma namn och motsvarande funktion i kommandotolken, varvid denna i allmänhet används istället för kommandot.[2]

Koder redigera

De koder som känns igen av echo i XSI-system och GNU inkluderar:[1][2]

  • \\: \
  • \a: ljudsignal (eller, i vissa omgivningar, blink)
  • \c: upphör att tolka argumenten, skriv inget radbyte
  • \e: escape
  • \n: ny rad
  • \b, \f, \r, \t, \v: backsteg, ny sida, vagnretur, tabulator, vertikal tabulator
  • \0NNN: en byte med oktalkoden NNN (1–3 siffror, 0–7)
  • \xNN: endast GNU, en byte med hexadecimalkoden NN (1–2 siffror, 0–F)

Användande redigera

Exempel (rå text):
echo "echo är ett trevligt kommando";
Ger:
echo är ett trevligt kommando

Exempel (miljövariabel):
echo $PATH
Ger:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games

Man kan styra utdatan till en fil:
echo $PATH > path.txt
Skickar utdatan till filen path.txt, som därmed skrivs över.

echo $PATH >> path.txt
Skickar utdatan till filen path.txt, detta skriver utdatan till slutet av filen.

program; echo -e '\a'
Kör programmet "program" och ger en ljudsignal då körningen avslutats (GNU-variant; motsvarande med CSI och SYSV utan "-e").

Källor redigera

  1. ^ [a b c d] POSIX Programmer's Manual (2003): echo
  2. ^ [a b c] GNU coreutils 8.5: [[man (Unix)|]]ualsida för echo