kelan.io

Bash trick - Echo as sudo

I’ve been working on setting up a new server, and writing some bash scripts to automate the process. There have been a few cases where I want to write to a file with sudo permissions. I tried doing:

$ sudo echo "Some content with var: $MY_VAR" >/path/to/file/owned/by/root

But, that fails due to lack of permissions, because while the echo is run as sudo, the output redirection (which is what writes to the file) happens just as my current user (without elevated permissions).

Here’s a better way to do it:

$ echo "Some content with var: $MY_VAR" | sudo tee /path/to/file/owned/by/root >/dev/null

There may be entirely different ways to solve this, but this has been working well for me, so I wanted to write it up so I don’t forget about it.