64

I would like to append text to a file. So I wrote in bash

echo text >> file.conf

However it doesn't leave a new line. So I can only do this once. How do I add a new line?

2
  • 5
    What do you mean? An extra newline? echo adds a newline by default. Jun 21, 2010 at 9:58
  • 4
    echo by default does leave a newline - do you need it to leave two? Also, if you're running this on a linux system and opening the file on a windows or mac system, make sure your editor supports *nix newlines, or it'll appear all on one line even though it's on multiple lines. Jun 21, 2010 at 10:01

3 Answers 3

128

option 1:

% echo -e "text\n" >> file.conf

option 2:

% ( echo text ; echo "" ) >> file.conf

option 3:

% echo text >> file.conf
% echo ""  >> file.conf
1
  • 8
    You can drop the empty argument (echo "" => echo). Also, option 4: echo $'text\n', which is useful for any command as the $'' is interpreted by bash.
    – Roger Pate
    Jun 24, 2010 at 23:55
13

I think the proper answer should be that your command

echo text >> file.conf

does add an extra line, but after the new text, not before.

I guess that you want to add an extra line before that text, probably because your initial file doesn't end in a new line. In that case you could use

echo -e "\ntext" >> file.conf

instead, as the -e option allows you to use the new line \n character.

4

Just to add to akira's response

Option 4:

use ctrl-v ctrl-m key combos twice to insert two newline control character in the terminal. Ctrl-v lets you insert control characters into the terminal. You could use the enter or return key instead of the ctrol-m if you like. It inserts the same thing.

This ends up looking like echo text^M^M >> file.conf

1
  • 2
    If you need linefeeds instead of carriage returns (linux/unix), try echo "text^J^J" >> file.conf Typing ^J might actually insert a literal newline, just make sure to put the quotes and it'll be good. Jun 21, 2010 at 10:13

You must log in to answer this question.