Cuando intenta modificar un archivo sin tener permisos de escritura, obtiene un error:
> touch /tmp/foo && sudo chown root /tmp/foo
> echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Sudoing no ayuda, porque ejecuta el comando como root, pero el shell maneja la redirección de stdout y abre el archivo de todos modos:
> sudo echo test > /tmp/foo
zsh: permission denied: /tmp/foo
¿Hay alguna manera fácil de redirigir stdout a un archivo en el que no tiene permiso para escribir, además de abrir un shell como root y manipular el archivo de esa manera?
> sudo su
# echo test > /tmp/foo
Respuesta aceptada:
Sí, usando tee
. Entonces echo test > /tmp/foo
se convierte
echo test | sudo tee /tmp/foo
También puede agregar (>>
)
echo test | sudo tee -a /tmp/foo