Append lines to the end of a file with Bash

At some point it is gonna be useful to write to a file with Bash. You can do so in a Bash script or directly via the command-line. To do so you use the append operator(>>).

#!/bin/bash

# 1. Set the file to write to
file='log.txt'

# 2. Append text with '>>'
echo "[INFO] caught a bass" >> $file

The >> appends to a file or creates the file if it doesn’t exist. Don’t confuse >> with >, the latter completely overwrites a file erasing all current lines.

Append command output to a file

So technically this is what we did with echo as well. Where the output of the echo command was appended to a file. You can use the output of other commands as well in combination with the append operator. Like the ls command for example.

#!/bin/bash

# 1. Set the file to write to
file='files_and_directories.txt'

# 2. Append text with '>>'
ls >> $file

Append multiple lines at once

Until so far we only appended single lines. But you might as well want to write multiple lines to a file at once. Tis a bit more cryptic however. But you can use cat for this.

#!/bin/bash

# 1. set the file to write to
file='log.txt'

# 2. Append multiple lines with '>>' and 'cat'
cat << EOT >> $file
[INFO] caught a bass
[INFO] and released the bass
EOT

Learning more

The best way to learn more is to use Bash. A lot. Don’t forget that Google is your friend.

In case you learn well from books I would recommend these.

See Also

6 Non-Programming Books for Programmers