Você pode usar tee
:
$ echo "something" | sudo tee -a /etc/profile
Se você omitir o -a
(anexar), o arquivo será sobrescrito.
Digamos que eu queira adicionar alguma linha ao / etc / profile. Eu tento:
$ sudo echo "something" >> /etc/profile
bash: /etc/profile: Access forbidden
Claro que eu poderia escrever:
$ sudo su
# echo "something" >> /etc/profile
e isso funciona, no entanto, não funciona dentro de um script de shell.
Então, qual é o caminho certo?
Você pode usar tee
:
$ echo "something" | sudo tee -a /etc/profile
Se você omitir o -a
(anexar), o arquivo será sobrescrito.
Sua versão:
sudo echo "something" >> /etc/profile
Nesse comando, echo
é executado como root, mas o shell que está redirecionando a saída de echo
para o arquivo somente raiz ainda está sendo executado como você. É por isso que você está recebendo "Acesso proibido"
Versão de trabalho:
sudo bash -c 'echo "something" >> /etc/profile'
Neste comando, você usa sudo para iniciar um novo shell com privilégios de root e, em seguida, fornece a esse shell toda a cadeia de comando (incluindo o redirecionamento) com a opção -c do bash.
Tags command-line scripts