Eu quero fazer:
echo "something" >> /etc/config_file
Mas, como apenas o usuário root tem permissão de gravação neste arquivo, não posso fazer isso. Mas o seguinte também não funciona.
sudo echo "something" >> /etc/config_file
Existe uma maneira de anexar a um arquivo nessa situação sem precisar primeiro abri-lo com um sudo
editor e, em seguida, anexar o novo conteúdo manualmente?
linux
command-line
sudo
hsribei
fonte
fonte
ls
com o caminho do diretório mostra os arquivos, masls
com o padrão de arquivo, não?Respostas:
Use
tee -a
(outee --append
) comsudo
Então seu comando se torna
As vantagens de
tee
executar o Bash com permissões administrativas sãofonte
tee
tem a-a
bandeira de acréscimo.echo "output" | sudo tee -a file > /dev/null
se você quiser pular a saída do console.O redirecionamento é executado no shell atual. Para fazer o redirecionamento com privilégios elevados, você deve executar o próprio shell com privilégios elevados:
fonte
O sudo gera uma sub-shell:
Neste exemplo, o sudo executa "sh" com o restante como argumentos.
(isso é mostrado como um exemplo na página de manual do sudo)
fonte
Eu costumo usar o documento shell HERE com o sudo tee -a . Algo ao longo das linhas de:
fonte
Na minha opinião, o melhor neste caso é dd:
fonte
Pode haver um problema com o sudo aqui e o redirecionamento. Use um editor de texto de sua escolha para adicionar a linha.
Ou então, você pode tentar su
fonte
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'
Deveria trabalhar. como não há nada que o shell possa expandir por engano no arg para ecoar, aspas simples o comando geral.Isso não funcionará, você está tentando redirecionar (usando
>>
) a saída do sudo. O que você realmente deseja fazer é redirecionar a saída doecho
. Sugiro que você simplesmente use seu editor favorito e adicione essa linha manualmente a/etc/profile
. Isso tem o benefício adicional de que você pode verificar se/etc/profile
já está definidoJAVA_HOME
.fonte
Use ex -way:
e substitua
FOO
pela sua variável a acrescentar.Em alguns sistemas (como o OS X), o
/etc/profile
arquivo tem 444 permissões; portanto, se você ainda tiver permissão negada , verifique e corrija a permissão primeiro:depois tente novamente.
fonte