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?
option 1:
% echo -e "text\n" >> file.conf
option 2:
% ( echo text ; echo "" ) >> file.conf
option 3:
% echo text >> file.conf
% echo "" >> file.conf
echo ""
=> echo
). Also, option 4: echo $'text\n'
, which is useful for any command as the $''
is interpreted by bash.
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.
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
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.
Commented
Jun 21, 2010 at 10:13
echo
adds a newline by default.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.