2012-10-23 81 views
0

我知道如何找到並在這樣的配置文件替換部分:Bash腳本:如何將配置文件添加到配置文件中?

sudo sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 3M/" /etc/php5/cgi/php.ini 

但我怎麼添加一個全新的部分在bash腳本中的配置文件的結束?

server { 
    listen  xx.xx.xx.xx:80;    # your server's public IP address 
    server_name myapp.com;     # your domain name 
    root   /usr/share/nginx/www/myapp/; # absolute path to your WordPress installation  
} 

我想這個終端echo "server { ... }" >> nginx.conf內,但我得到一個

-bash: nginx.conf: Permission denied 

不知道這是否會在bash腳本中是好的,我會得到許可再次否認...

非常感謝,

回答

0

您正在使用正確的語法。

echo "....." >> ngix.conf 

只要確保您具有'ngix.conf'的正確寫入權限即可。

-bash:nginx.conf:權限被拒絕

這表明你沒有寫權限。

你也可以寫一節像「new_section.txt」一個單一的文件,晚它補充:

cat new_section.txt >> ngix.conf 

不過,我不會建議增加配置,以這種方式來ngix。 您可以使用'include'語句。

include you_conf_path/my_new_config.conf; 

這種方式可以組的配置,並有一些小的配置文件,而不是一個巨大的文件。然後,您還可以以幫助您找到合適的文件的方式命名文件。

+0

appologies,我居然做了'須藤回聲 「服務器{...}」 >> nginx.conf'仍然重定向似乎沒有獲得sudo權限。我會在bash中嘗試一下,看看這個效果是否更好 – Houman

+0

奇怪的是,使用sudo時應該能夠寫入幾乎任何文件。 也許你需要在操作配置之前停止服務器。這是您的本地服務器還是您在共享網絡空間環境中工作? – cb0

+0

有趣的bash腳本,它工作正常。但不是在終端。 :)對我來說足夠了。 – Houman

0

試試這個:

config="server {\n listen  xx.xx.xx.xx:80;\n  server_name myapp.com;    \n root   /usr/share/nginx/www/myapp/; =installation \n }\n" 
in1="text_before_required_input" 
out1=`echo -e $config`; 
       in=$in1 out=$out1 perl -pi.nk -e 's/\Q$ENV{"in"}/$ENV{"out"}/g' file 

如果不是上述原因,然後考慮GNU編http://wiki.bash-hackers.org/howto/edit-ed

相關問題