Incomputing,echois acommandthat outputs the strings that are passed to it asarguments.It is a command available in variousoperating systemshellsand typically used inshell scriptsandbatch filesto output status text to the screen[1]or acomputer file,or as a source part of apipeline.

echo
Original author(s)Douglas McIlroy
(AT&T Bell Laboratories)
Developer(s)Variousopen-sourceandcommercialdevelopers
Operating systemMultics,Unix,Unix-like,V,Plan 9,Inferno,FLEX,TRIPOS,AmigaDOS,Z80-RIO,OS-9,DOS,MSX-DOS,Panos,FlexOS,SISNE plus,OS/2,Windows,ReactOS,MPE/iX,KolibriOS,SymbOS
PlatformCross-platform
TypeCommand

Implementations

edit

The command is available in the following operating systems:

Many shells, including allBourne-like (such asBash[14]orzsh[15]) andCsh-like shells as well asCOMMAND.COMandcmd.exeimplementechoas abuiltin command.

The command is also available in theEFI shell.[16]

History

edit

echobegan withinMultics.After it was programmed inCbyDoug McIlroyas a "finger exercise" and proved to be useful, it became part ofVersion 2 Unix.echo -ninVersion 7replacedprompt,(which behaved likeechobut without terminating its output with a line delimiter).[17]

OnPWB/UNIXand laterUnix System III,echostarted expandingC escape sequencessuch as\nwith the notable difference that octal escape sequences were expressed as\0oooinstead of\oooin C.[18]

Eighth Edition Unixechoonly did the escape expansion when passed a-eoption,[19]and that behaviour was copied by a few other implementations such as the builtinechocommand ofBashorzshand GNUecho.

OnMS-DOS,the command is available in versions 2 and later.[20]

Nowadays, several incompatible implementations ofechoexist on different operating systems (often several on the same system), some of them expanding escape sequences by default, some of them not, some of them accepting options (the list of which varying with implementations), some of them not.

ThePOSIXspecification ofecho[21]leaves the behaviour unspecified if the first argument is-nor any argument contain backslash characters while the Unix specification (XSI option in POSIX) mandates the expansion of (some) sequences and does not allow any option processing. In practice, manyechoimplementations are not compliant in the default environment.

Because of these variations in behaviour,echois considered a non-portable command on Unix-like systems[22]and theprintfcommand(where available, introduced by Ninth Edition Unix) is preferred instead.

Usage examples

edit
C:\>echoHello world
Hello world

UsingANSI escape codeSGRsequences, compatible terminals can print out colored text.

Using aUNIX System III-style implementation:

BGRED=`echo"\033[41m"`
FGBLUE=`echo"\033[35m"`
BGGREEN=`echo"\033[42m"`

NORMAL=`echo"\033[m"`

Or a Unix Version 8-style implementation (such as Bash when not in Unix-conformance mode):

BGRED=`echo-e"\033[41m"`
FGBLUE=`echo-e"\033[35m"`
BGGREEN=`echo-e"\033[42m"`

NORMAL=`echo-e"\033[m"`

and after:

echo"${FGBLUE}Text in blue${NORMAL}"
echo"Text normal"
echo"${BGRED}Background in red "
echo"${BGGREEN}Background in Green and back to Normal${NORMAL}"

Portably withprintf:

BGRED=`printf'\33[41m'`
NORMAL=`printf'\33[m'`
printf'%s\n'"${BGRED}Text on red background${NORMAL}"

See also

edit

References

edit
  1. ^Rügheimer, Hannes; Spanik, Christian (September 12, 1988).AmigaDOS quick reference.Grand Rapids, Mi: Abacus.ISBN9781557550491– via Internet Archive.
  2. ^"Multics Commands".www.multicians.org.
  3. ^"FLEX 9.0 User's Manual"(PDF).
  4. ^"Manual"(PDF).www.pagetable.com.Retrieved2020-09-12.
  5. ^"Z80-RIO OPERATING SYSTEM USER'S MANUAL"(PDF).
  6. ^Paul S. Dayan (1992).The OS-9 Guru - 1: The Facts.Galactic Industrial Limited.ISBN0-9519228-0-7.
  7. ^"Chris's Acorns: Panos".chrisacorns.computinghistory.org.uk.
  8. ^"FlexOS™ User's Guide"(PDF).Archived fromthe original(PDF)on 2018-09-14.
  9. ^"OS/2 Batch File Commands".Archived fromthe originalon 2019-04-14.
  10. ^"echo".docs.microsoft.com.2 October 2023.
  11. ^"reactos/reactos".GitHub.3 January 2022.
  12. ^"MPE/iX Command Reference Manual"(PDF).Archived fromthe original(PDF)on 2018-10-21.Retrieved2018-10-21.
  13. ^"Shell - KolibriOS wiki".wiki.kolibrios.org.
  14. ^"Bash Builtins (Bash Reference Manual)".www.gnu.org.
  15. ^"zsh: 17 Shell Builtin Commands".zsh.sourceforge.net.
  16. ^"EFI Shells and Scripting".Intel.Retrieved2013-09-25.
  17. ^McIlroy, M. D.(1987).A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986(PDF)(Technical report). CSTR. Bell Labs. 139.
  18. ^Mascheck, Sven."echo and printf behaviour".Retrieved24 July2016.
  19. ^"8th Edition Unix echo man page".Retrieved24 July2016.
  20. ^Wolverton, Van (2003).Running MS-DOS Version 6.22 (20th Anniversary Edition), 6th Revised edition.Microsoft Press.ISBN0-7356-1812-7.
  21. ^echo:write arguments to standard output – Shell and Utilities Reference,The Single UNIX Specification,Version 4 fromThe Open Group
  22. ^"Autoconf documentation on echo portability".Free Software Foundation.Retrieved24 July2016.

Further reading

edit
edit