The echo builtin command¶
Synopsis¶
echo [-neE] [arg ...]
Description¶
echo outputs it's args to stdout, separated by spaces, followed by a newline. The return status is always 0. If the shopt option xpg_echo is set, Bash dynamically determines whether echo should expand escape characters (listed below) by default based on the current platform. echo doesn't interpret -- as the end of options, and will simply print this string if given.
Options¶
| Option | Description | 
|---|---|
-n |  The trailing newline is suppressed. | 
-e |  Interpretation of the following backslash-escaped characters (below) is enabled. | 
-E |  Disables the interpretation of these escape characters, even on systems where they are interpreted by default. | 
Escape sequences¶
| Escape | Description | 
|---|---|
\a |  alert (bell) | 
\b |  backspace | 
\c |  suppress further output | 
\e |  |
\E |  an escape character | 
\f |  form feed | 
\n |  new line | 
\r |  carriage return | 
\t |  horizontal tab | 
\v |  vertical tab | 
\\ |  backslash | 
\0nnn |  the eight-bit character whose value is the octal value nnn (zero to three octal digits) | 
\xHH |  the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) | 
\uHHHH |  the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits) | 
\UHHHHHHHH |  the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits) | 
Examples¶
Portability considerations¶
-  
echois a portability train wreck. No major shell follows POSIX completely, and any shell that attempts to do so should be considered horribly broken. SUSv4 specifies thatechoshall not include any options. Further, it specifies that the behavior of-nas a first argument shall be determined by the implementation, unless XSI is followed, in which case-nis always treated as a string, and backslash escapes are interpreted by default.dashhas the misfeature of following this and interpreting escapes by default, but includes a-nfeature for suppressing newlines nevertheless.In practice, if you're able to assume a korn-like shell including bash, mksh, or zsh,
echowhen used in simple cases is generally reliable. For example, in the very common situation in which echo is supplied with a single argument and whose output is to have a newline appended, usingechois considered common practice. -  
Never use options to
echo! Ever! Any time you feel tempted to useecho -e,-n, or any other special feature of echo, use printf instead! If portability is a requirement, you should consider usingprintfexclusively and just ignore thatechoeven exists. If you must useecho -eand refuse to useprintf, it is usually acceptable to use \'\'echo \$\'...\' \'\'if targeting only shells that support this special quoting style. -  
ksh93has aprintcommand, which if coding specifically forksh93should be preferred overecho. printf still includes most of the functionality of both, and should usually be the most preferred option. 
See also¶
- printf
 - http://cfajohnson.com/shell/cus-faq.html#Q0b
 - http://www.in-ulm.de/~mascheck/various/echo+printf/