【发布时间】:2016-12-04 09:54:29
【问题描述】:
我首先要说我不确定这是应该在这里还是超级用户,所以让我知道是否需要删除。
我正在 ~./bash_profile 中创建一个函数,以便在我启动新的 Laravel 项目时为我提供帮助。这是脚本:
function bootlaravel {
PROJECT=$1
echo "Magically creating a new Laravel project: $PROJECT..."
cd /Applications/MAMP/htdocs
laravel new $PROJECT
cd $PROJECT
git init
git add .
git commit -m "Install Laravel"
sed -i -e "s/DB_DATABASE=homestead/DB_DATABASE=$PROJECT/g" .env
sed -i -e "s/DB_USERNAME=homestead/DB_USERNAME=root/g" .env
sed -i -e "s/DB_PASSWORD=secret/DB_PASSWORD=/g" .env
/Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot -e "create database $PROJECT DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci"
open "http://$PROJECT.dev"
pstorm .
echo "Project: $PROJECT has been created. Have fun!"
}
用法类似于bootlaravel LaravelProjectName
sed 命令用于修改.env 文件,它实际上是创建一个.env-e 文件作为现有.env 文件的同级文件。我实际上无法理解它为什么这样做。不过,它会根据需要更改单词。
感谢任何帮助
【问题讨论】:
-
这是在黑暗中拍摄的,但尝试
sed -ie而不是sed -i -e?由于-i修改了扩展并且-e被添加,我怀疑这就是问题所在。 -
@CormacO'Brien 差不多了,现在是
.envehaha -
您想要备份吗?这就是
sed -i的想法,并且标志需要非零长度的扩展。如果没有,只需删除-i标志,否则给它一个扩展名,如.bak。 -
@CormacO'Brien 如果我放弃
-i它不会进行替换 -
如果您离开
-i选项,您必须提供一个输出文件。-i表示应该就地编辑文件,这需要备份。 @Kusalananda 的回答似乎是要走的路。
标签: bash sed terminal .bash-profile