Altera a linha específica em um arquivo durante a transferência usando SSH

3

Estou implantando meu projeto no servidor de produção usando o comando scp . Como parte do processo de implantação, eu carrego para o servidor o arquivo .htaccess . Localmente, o ambiente é definido como DEVELOPMENT :

#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT] 

SetEnv KOHANA_ENV 'DEVELOPMENT'

No entanto, quando carregado para o servidor, ele precisa ser alterado para PRODUCTION . Existe alguma maneira de conseguir isso com o ssh?

    
por AngularInDepth.com 20.06.2014 / 14:01

3 respostas

6

Você pode fazer isso com o comando sed e o -i para editar o arquivo:

sed -i "s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g" /path/to/.htaccess

Via ssh ficaria assim:

ssh user@host "sed -i \"s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g\" /path/to/.htaccess"

Trabalhar com sed para substituir cadeias de arquivos é bastante simples:

sed -i 's/search_string/replace_string/g' file

Substitui todas as ocorrências de search_string por replace_string do que dá file . -i faz com que sed edite o arquivo no lugar, em vez de gravar na saída padrão (stdout).

Se você quiser apenas que a primeira ocorrência seja substituída, use este comando sed:

sed -i '0,/search_string/s/search_string/replace_string/' file

Para mais informações sobre sed use man sed .

    
O
por chaos 20.06.2014 / 14:19
2

Você pode gravar diretamente no arquivo localmente da seguinte maneira:

echo "#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT] 

SetEnv KOHANA_ENV 'PRODUCTION'" > /path/to/.htaccess

Lembre-se de substituir /path/to/ pelo caminho para .htaccess e copie o arquivo usando scp. Isso irá substituir o conteúdo do arquivo.

    
por jobin 20.06.2014 / 14:07
2

Se você quiser converter apenas a 28ª linha, faça:

sed '28s/DEVELOPMENT/PRODUCTION/' file

(combinável com a opção -i, claro)

Se você quiser evitar a modificação de um arquivo local, faça o seguinte:

< /local/path/to/.htaccess sed '28s/DEVELOPMENT/PRODUCTION/' | ssh user@host "cat > /server/path/to/.htaccess"
    
por Ángel 20.06.2014 / 15:21

Tags