Problema... quiero redireccionar el stdout de un comando a un archivo o directorio en el que no tengo permiso de escritura.

Respuestas macheteadas de acá

$ echo "hola" > /hola.txt
bash: /hola.txt: Permission denied

El sudo a secas no nos sirve, porque la redirección la hace el shell desde donde lo invocamos:

$ sudo echo "hola" > /hola.txt
bash: /hola.txt: Permission denied

Solución 1: hacerlo en un sub-shell

sudo sh -c 'echo "hola" > /hola.txt'

Si quiero hacerlo con muchas líneas:

sudo sh -c 'cat > /hola.txt' <<EOF
Este es un texto
que ocupa
varias lineas.
EOF

Solución 2: sudo tee

# el >/dev/null es para que no tenga la salida por stdout
echo "hola" | sudo tee /hola.txt >/dev/null

SudoRedirectStdOut (última edición 2009-04-02 20:59:29 efectuada por MarianoAbsatz)