130

Possible Duplicate:
sudo & redirect output

I'm trying to create a file in /var/www, but even with sudo this fails:

user@debVirtual:/var/www$ sudo echo "hello" > f.txt
-bash: f.txt: Permission denied

When I use sudo nano, I can save something to this file.

Why can't I use sudo echo?

Patryk
  • 9,146

1 Answers1

256

The redirection is done by the shell before sudo is even started. So either make sure the redirection happens in a shell with the right permissions

sudo bash -c 'echo "hello" > f.txt'

or use tee

echo "hello" | sudo tee f.txt  # add -a for append (>>)
geirha
  • 46,101
  • what if you already used quote and double quote? – tatsu Mar 03 '19 at 18:14
  • 4
    Thanks. Top one didn't work for me on Debian but 2nd option worked perfectly. –  Jul 11 '19 at 09:32
  • Kind of lengthy + ugly really isn't it. – Manachi Mar 05 '21 at 03:15
  • If you need multiple lines as stdin input, use cat <<EOF | sudo tee -a /your/file, and let your input's last line be EOF. – WesternGun Jul 30 '21 at 10:56
  • For those who need to do something similar without logging the information to the console (when you're dealing with private information such as secrets for example), you can find more information here: https://stackoverflow.com/a/18146890/3513260 – Fearnbuster Apr 17 '23 at 19:36