echo (command)

In computing, echo is a command that outputs the strings it is being passed as arguments. It is a command available in various operating system shells and typically used in shell scripts and batch files to output status text to the screen[1] or a computer file, or as a source part of a pipeline.

echo
The echo command on Unix
Operating systemMultics, Unix, Unix-like, V, Plan 9, Inferno, FLEX, TRIPOS, Z80-RIO, OS-9, DOS, MSX-DOS, Panos, FlexOS, SISNE plus, OS/2, Windows, ReactOS, MPE/iX, KolibriOS, SymbOS
TypeCommand

Implementations

The command is available in Multics,[2] TSC FLEX,[3] MetaComCo TRIPOS,[4] Zilog Z80-RIO,[5] Microware OS-9,[6] DOS, Acorn Computers Panos,[7] Digital Research FlexOS,[8] IBM OS/2,[9] Microsoft Windows,[10] ReactOS,[11] HP MPE/iX,[12] KolibriOS,[13] SymbOS, Unix and Unix-like operating systems.

Many shells, including all Bourne-like (such as Bash[14] or zsh[15]) and Csh-like shells as well as COMMAND.COM and cmd.exe implement echo as a builtin command.

The command is also available in the EFI shell.[16]

History

echo began within Multics. After it was programmed in C by Doug McIlroy as a "finger exercise" and proved to be useful, it became part of Version 2 Unix. echo -n in Version 7 replaced prompt, (which behaved like echo but without terminating its output with a line delimiter).[17]

On PWB/UNIX and later Unix System III, echo started expanding C escape sequences such as \n with the notable difference that octal escape sequences were expressed as \0ooo instead of \ooo in C.[18]

Eighth Edition Unix echo only did the escape expansion when passed a -e option,[19] and that behaviour was copied by a few other implementations such as the builtin echo command of Bash or zsh and GNU echo.

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

Nowadays, several incompatible implementations of echo exist 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.

The POSIX Specification of echo[21] leaves the behaviour unspecified if the first argument is -n or 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, many echo implementations are not compliant in the default environment.

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

Usage examples

C:\>echo Hello world
Hello world

Using ANSI escape code SGR sequences, compatible terminals can print out colored text.

Using a UNIX 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 with printf:

BGRED=`printf '\33[41m'`
NORMAL=`printf '\33[m'`
printf '%s\n' "${BGRED}Text on red background${NORMAL}"
gollark: Well, since my laptop screen doesn't support VSync, *it's* always 60Hz.
gollark: Whenever consoles advertise high FPS or resolution it's generally with the catch of "0.0001% of the time if you turn settings to minimum".
gollark: My computer has 3000000000Hz.
gollark: Its name is cool. If you have several you can say "I have 5 Valve Indices".
gollark: It has one major advantage, though.

See also

References

  1. https://archive.org/details/1988-rugheimer-spanik-amigados-quick-reference
  2. https://www.multicians.org/multics-commands.html
  3. FLEX 9.0 User’s Manual
  4. https://www.pagetable.com/docs/amigados_tripos/tripos_manuals.pdf
  5. Z80-RIO OPERATING SYSTEM USER'S MANUAL
  6. Paul S. Dayan (1992). The OS-9 Guru - 1 : The Facts. Galactic Industrial Limited. ISBN 0-9519228-0-7.
  7. http://chrisacorns.computinghistory.org.uk/Panos.html#CL
  8. http://www.bitsavers.org/pdf/digitalResearch/flexos/1073-2003_FlexOS_Users_Guide_V1.3_Nov86.pdf
  9. http://www.jatomes.com/Help/Os2Bat.php#ECHO
  10. echo | Microsoft Docs article
  11. https://github.com/reactos/reactos/tree/master/base/shell/cmd
  12. MPE/iX Command Reference Manual
  13. http://wiki.kolibrios.org/wiki/Shell
  14. https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html
  15. http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html
  16. "EFI Shells and Scripting". Intel. Retrieved 2013-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". Retrieved 24 July 2016.
  19. "8th Edition Unix echo man page". Retrieved 24 July 2016.
  20. Wolverton, Van (2003). Running MS-DOS Version 6.22 (20th Anniversary Edition), 6th Revised edition. Microsoft Press. ISBN 0-7356-1812-7.
  21. echo: write arguments to standard output  Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
  22. "Autoconf documentation on echo portability". Free Software Foundation. Retrieved 24 July 2016.

Further reading

  • Wolverton, Van (1990). MS-DOS Commands: Microsoft Quick Reference, 4th Revised edition. Microsoft Press. ISBN 978-1556152894.
  • Kathy Ivens; Brian Proffit (1993). OS/2 Inside & Out. Osborne McGraw-Hill. ISBN 978-0078818714.
  • Frisch, Æleen (2001). Windows 2000 Commands Pocket Reference. O'Reilly. ISBN 978-0-596-00148-3.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.