Skip Navigation

correct way to echo | sudo tee

Can someone explain why this would make the command wait forever? What is tee waiting for?

echo "test" | sudo tee newfile

What would be a scriptable workaround for such cases?

Edit: this command would not terminate in zsh. This works fine in bash tho.

17

You're viewing a single thread.

17 comments
  • Can’t reproduce.

    16:22:48:~/tmp$ echo foo | sudo tee newfile
    [sudo] Passwort für bleistift2:         
    foo
    
    16:23:02:~/tmp$ ls -l newfile
    -rw-r--r-- 1 root root 4 Feb 23 16:22 newfile
    
    • I just switched over to bash and it worked lol. It just didn't return for me in zsh...

      • I use zsh and it works fine for me fwiw. Same with zsh --no-rcs (which doesn't load zshrc). Maybe you have some weird setting enabled?

      • My initial guess was that sudo would eat up the echo’d foo as the password. Maybe sudo works differently when invoked via zsh?

        • sudo does not prompt for password in my container. It just elevates the privileges straight away. Yeah, it's hard to tell. Or test for that matter.

      • It works here in zsh, did you mistype the closing quote? Although that alters my prompt.

        • no way. I'm in /tmp for this one

          echo 'test' | tee newfile
          tee: newfile: Permission denied
          test
          echo 'test' | sudo tee newfile #the prompt never returns when running this in zsh
          
17 comments