Я развертываю свой проект на производственном сервере с помощью команды scp
. В рамках процесса развертывания я загружаю на сервер файл .htaccess
. Локально среда устанавливается на DEVELOPMENT
:
#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT]
SetEnv KOHANA_ENV 'DEVELOPMENT'
Однако при загрузке на сервер ее необходимо изменить на PRODUCTION
. Есть ли способ сделать это с помощью ssh?
Можно сделать это с sed
команда и эти -i
флаг для редактирования файла на месте:
sed -i "s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g" /path/to/.htaccess
Через ssh
я был бы похож на это:
ssh user@host "sed -i \"s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g\" /path/to/.htaccess"
Работа с sed
к строкам замены в файлах довольно проста:
sed -i 's/search_string/replace_string/g' file
Замены все происшествия search_string
с replace_string
из давания file
. -i
причины sed
для редактирования файла на месте, вместо того, чтобы писать в стандартный вывод (stdout).
, Если Вы только хотите, чтобы первое вхождение было заменой, используют эту команду sed:
sed -i '0,/search_string/s/search_string/replace_string/' file
Для получения дополнительной информации [приблизительно 1 113] использование man sed
.
Можно непосредственно записать в файл локально следующим образом:
echo "#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT]
SetEnv KOHANA_ENV 'PRODUCTION'" > /path/to/.htaccess
Не забывают заменять /path/to/
путем к .htaccess
и затем копировать файл с помощью scp. Это заменит содержание файла.
Если Вы хотите преобразовать просто 28-ю строку, можно сделать:
sed '28s/DEVELOPMENT/PRODUCTION/' file
(объединяемый с-i опцией, конечно)
, Если Вы не хотите изменять локальный файл, можно сделать:
< /local/path/to/.htaccess sed '28s/DEVELOPMENT/PRODUCTION/' | ssh user@host "cat > /server/path/to/.htaccess"