onde devo colocar o sudo neste comando? [duplicado]

4

echo "some words" >> /etc/apt/source.list

permission denied

sudo echo "some words" >> /etc/apt/source.list

também retorna permissão negada

Então eu acho que talvez o operador append seja outro comando, eu deveria colocar o sudo antes dele, então eu tento

echo "some words" >> sudo /etc/apt/source.list

também retorna permissão negada

como devo fazer essa tarefa?

    
por mko 30.11.2011 / 09:40

4 respostas

15

sudo sh -c 'echo "some words" >> /etc/apt/source.list'

A razão sudo ecoa "algumas palavras" > > /etc/apt/source.list não funciona porque o sudo está aumentando os privilégios do comando 'echo', e não o redirecionamento.

O > > O redirecionamento faz com que o shell atual crie / inclua no arquivo. Ele falha porque seu shell não tem permissão para isso.

A razão pela qual minha resposta funciona é que você está executando a coisa toda (eco e o redirecionamento) em um novo shell que foi sudo'd. sh -c ... invoca um novo shell e executa o comando fornecido nessa subcamada. O sudo antes faz com que o subshell seja executado com privilégios escalados.

O segundo exemplo do sudo não faz sentido, porque o sudo recebe um comando para executar, e não é isso que você está passando. Aposto que você tem um arquivo no diretório local chamado sudo agora com o conteúdo "algumas palavras". Sinta-se livre para deletar isso: -)

    
por 30.11.2011 / 09:45
10
echo "some words" | sudo tee -a /etc/apt/source.list > /dev/null

-a é para "acrescentar ao arquivo"; tee geralmente substitui o arquivo de destino. Veja man tee .

    
por 30.11.2011 / 09:50
-3

está errado em usar o gato?

sudo cat >> /etc/apt/source.list
some words
^D

mas eu gosto de usar tee como Daniel disse: -)

    
por 30.11.2011 / 10:07
-3
echo "some words" | sudo cat >> /etc/apt/source.list 
    
por 30.11.2011 / 19:50

Tags