Изменение конкретной строки в файле при передаче с использованием SSH

Я развертываю свой проект на сервере с помощью команды scp. В рамках процесса развертывания я загружаю на сервер файл .htaccess. Локально для среды установлено значение DEVELOPMENT:

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

SetEnv KOHANA_ENV 'DEVELOPMENT'

Однако при загрузке на сервер его необходимо изменить на PRODUCTION. Есть ли способ сделать это с помощью ssh?

1
задан 20 June 2014 в 17:43

2 ответа

Вы можете напрямую записывать файл локально следующим образом:

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

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

Не забудьте заменить /path/to/ на путь до .htaccess, а затем скопировать файл с помощью scp. Это заменит содержимое файла.

2
ответ дан 24 May 2018 в 06:28
  • 1
    Спасибо за предложение. Проблема в том, что файл .htaccess содержит много текста, кроме строки, которую мне нужно изменить. Решение, которое вы предложили, устранит все остальное, исправьте? – AngularInDepth.com 20 June 2014 в 17:12
  • 2
    Знаете ли вы номер строки файла, который хотите изменить? – jobin 20 June 2014 в 17:16
  • 3
    Да, это 28, что SetEnv KOHANA_ENV 'PRODUCTION' – AngularInDepth.com 20 June 2014 в 17:19
  • 4
    @Maximus: ответ хаоса должен теперь работать. – jobin 20 June 2014 в 17:21
  • 5
    Да, это так. Благодаря! – AngularInDepth.com 20 June 2014 в 17:33

Если вы хотите преобразовать только 28-ю строку, вы можете сделать:

sed '28s/DEVELOPMENT/PRODUCTION/' file

(возможно, комбинация с опцией -i)

Если вы хотите избежать изменения локальный файл, вы можете сделать:

< /local/path/to/.htaccess sed '28s/DEVELOPMENT/PRODUCTION/' | ssh user@host "cat > /server/path/to/.htaccess"
2
ответ дан 24 May 2018 в 06:28

Другие вопросы по тегам:

Похожие вопросы: