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