Posible duplicado:
Redirigir stdout a un archivo en el que no tiene permiso de escritura
echo "some words" >> /etc/apt/source.list
permission denied
sudo echo "some words" >> /etc/apt/source.list
también permiso de devolución denegado
Entonces creo que tal vez el operador de agregar es otro comando, debería poner el sudo antes, así que lo intento
echo "some words" >> sudo /etc/apt/source.list
también permiso de devolución denegado
¿Cómo debo hacer esta tarea?
Respuesta aceptada:
sudo sh -c 'echo "some words" >> /etc/apt/source.list'
La razón por la que sudo echo "algunas palabras">> /etc/apt/source.list no funciona es porque sudo aumenta los privilegios del comando 'echo', y no la redirección.
La redirección>> hace que el shell actual se cree/se agregue al archivo. Falla porque su shell no tiene permisos para hacerlo.
La razón por la que mi respuesta funciona es que está ejecutando todo (eco y la redirección) en un nuevo shell que ha sido sudo. sh -c ...
invoca un nuevo shell y ejecuta el comando dado en ese subshell. El sudo anterior hace que la subcapa se ejecute con privilegios escalados.
El segundo ejemplo de sudo no tiene sentido, porque sudo necesita un comando para ejecutarse, y eso no es lo que estás pasando. Apuesto a que tienes un archivo en el directorio local llamado sudo ahora con contenido "algunas palabras". Siéntete libre de borrar eso 🙂