我正在使用scp
命令将我的项目部署到生产服务器。作为部署过程的一部分,我将.htaccess
文件上传到服务器。在本地,环境设置为DEVELOPMENT
:
#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT]
SetEnv KOHANA_ENV 'DEVELOPMENT'
但是,上传到服务器时需要将其更改为PRODUCTION
。有什么方法可以用 ssh 来实现吗?
答案1
您可以使用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
。导致就地编辑文件,而不是写入标准输出 (stdout)。replace_string
file
-i
sed
如果您只想替换第一次出现的条目,请使用以下 sed 命令:
sed -i '0,/search_string/s/search_string/replace_string/' file
有关sed
使用的更多信息man sed
。
答案2
您可以直接在本地写入文件,如下所示:
echo "#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT]
SetEnv KOHANA_ENV 'PRODUCTION'" > /path/to/.htaccess
/path/to/
记得用路径替换.htaccess
,然后使用 scp 复制文件。这将替换文件的内容。
答案3
如果只想转换第 28 行,可以执行以下操作:
sed '28s/DEVELOPMENT/PRODUCTION/' file
(当然可以与 -i 选项结合使用)
如果您想避免修改本地文件,您可以执行以下操作:
< /local/path/to/.htaccess sed '28s/DEVELOPMENT/PRODUCTION/' | ssh user@host "cat > /server/path/to/.htaccess"