How to set specific file permissions when redirecting output?
There's no way to do it while piping as far as I know, a simple script might be the best solution.
if [ -e /tmp/foo.log ]; then
foo >> /tmp/foo.log
else
foo >> /tmp/foo.log
chmod 0644 /tmp/foo.log
fi
I know it's an old question, but I wanted to add my two cents.
I had the same idea and came up with a solution similar to BowlesCR.
The problem with his solution was that my command (foo
) wouldn't work if I changed the umask before running it, so this is my take on the problem:
foo | ( umask 0033; cat >> /tmp/foo.log; )
Here, umask
only affects the redirection to foo.log
in the subshell. Everything else remains unaffected.
A bit convoluted, but it works.