Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I dump a string with hexdump like this 2031 3334 2e30 0a32 2032 3331 302e 000a. It is clear that 0x0a is new line character, however, when I try to echo this string out, I always got 1 430.2 2 13.0 -- the new line is replaced with a space, even I use the -e flag.

What may be the problem? Does the tailing \0 ruin the output? Is there any alternatives to print 0x0a a new line?

Thanks and Best regards.

share|improve this question
when I try to echo this string out How exactly do you do that? What is the exact command you use? – Dennis Jul 2 '12 at 19:01
@Dennis I mean echo -e. Thanks, I find a solution. – Summer_More_More_Tea Jul 3 '12 at 2:00
the preferred solution is just to use printf "...\n" instead of echo. – michael_n May 3 '15 at 8:04
up vote 15 down vote accepted

The new line character with the echo command is "\n". Taking the following example:

echo -e "This is line 1\nThis is line 2"

Would result in the output

This is line 1
This is line 2

The "-e" parameter is important here.

share|improve this answer
Thanks. I find a solution. – Summer_More_More_Tea Jul 3 '12 at 2:01
btw, this "echo -e ..." relies on bash's echo to work correctly (e.g., dash will just print the "-e"); but '/bin/echo' may (or may not) also work. Unfortunately (perhaps appropriately), there are a lot of echo's around, and you don't really want to care about which one you're going to get. Using 'printf "....\n" is a more portable option across env's and shells. – michael_n May 3 '15 at 8:03
@michael_n which is what the OP finally reverted too, in fact. But the question was explicitely stating "with echo" – hence my answer this way. Anyhow, it was not "with Bash" – so thanks for your pointing out those differences! – Izzy May 4 '15 at 9:28

I finally properly format this string with printf "$string". Thank you all.

share|improve this answer

POSIX 7 says you can't

-e is not defined and backslashes are implementation defined:

If the first operand is -n, or if any of the operands contain a <backslash> character, the results are implementation-defined.

unless you have an optional XSI extension.

So use printf instead:

format operand shall be used as the format string described in XBD File Format Notation [...]

the File Format Notation:

\n <newline> Move the printing position to the start of the next line.

Also keep in mind that Ubuntu 15.10 and most distros implement echo both as:

  • a Bash built-in: help echo
  • a standalone executable: which echo

which can lead to some confusion.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.