Permissão negada ao usar Sed

3

Estou usando o Sed para encontrar e substituir uma string em um arquivo. Esta é a primeira vez que trabalho com ele, então talvez eu esteja errado,

Eu tenho um arquivo que é de propriedade de "root" chamado "test.properties" e quero substituir "world" por "cat".

Então, eu corro este comando:

sudo sed s/world/cat/ <test.properties >newtest.properties

E funciona muito bem, mas quando eu quero escrever no mesmo arquivo assim:

sudo sed s/world/cat/ <test.properties >test.properties

Ele diz "-bash: test.properties: Permission denied", mas estou usando "sudo", então por que é negado?

    
por Doug Molineux 13.05.2011 / 00:40

2 respostas

4

Não execute o comando que você está tentando executar

Se você tentar redirecionar a saída de sed de volta para o mesmo arquivo, ela será apagada, excluindo todo o conteúdo dos arquivos. Tente algo assim:

sed s/world/cat/ <test.properties >newtest.properties && sudo mv newtest.properties test.properties

Você obtém permissão negada porque a parte de redirecionamento do comando não é executada via sudo, mas executada como usuário normal.

O primeiro comando funciona porque você está simplesmente lendo o primeiro arquivo e escrevendo em um arquivo que você possui, então você pode fazer isso com um usuário comum.

    
por 13.05.2011 / 00:54
4
sudo sed -i s/world/cat/ test.properties
    
por 13.05.2011 / 14:59