Creating a file with some content in Shell scripting

Just use output redirection. E.g.

#!/bin/bash

echo "some file content" > /path/to/outputfile

The > will write all stdin provided by the stdout of echo to the file outputfile here.

Alternatively, you could also use tee and a pipe for this. E.g.

echo "some file content" | tee outputfile

Be aware that any of the examples will overwrite an existing outputfile.

If you need to append to a currently existing file, use >> instead of > or tee -a.

If you don't accept user input in this line, no user input can change the behaviour here.


I think it is superior to use a here doc to create a new file in a script. It is cleaner looking, which I believe encourages readability.

For example:

cat > filename <<- "EOF"
file contents
more contents
EOF

The "-" in <<- is optional, allowing for tabbed indents which will be stripped when the file is created. The quotes around the "EOF" prevent the "here doc" from doing any substitutions.

Tags:

Bash