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.


I’m gonna take a couple of stabs in the dark.
According to this Stack Overflow answer using
teecan prevent the prompt from drawing which makes it appear that a script has not terminated. The answerer’s workaround is to put a very short sleep command after the tee command.If this is what happened to you maybe the reason the script works in bash but not in zsh is because you have different prompts configured in those two shells.
Another idea is to replace
teewithspongefrommoreutils. The difference is thatspongewaits for the end of stdin before it starts writing which can avoid problems in some situations.Nice one, didn’t know about
moreutils. I indeed used p10k on top of zsh. Newzshinstance without sourcing anythingzsh --no-rcsmanaged to write to file without issues. Thanks