Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
想用bash更改conf文件中的完整行,请指导我_Bash_Shell - Fatal编程技术网

想用bash更改conf文件中的完整行,请指导我

想用bash更改conf文件中的完整行,请指导我,bash,shell,Bash,Shell,我的conf文件中有这一行 ssl_certificate /etc/nginx/sites-enabled/abc.com/abc.com_fullchain.txt; 所以我想把它改成 ssl_certificate /var/www/ssl/nginx/abc.com/abc.com_fullchain.txt; 如何在多个*.conf文件中执行此操作?您可以使用sed实现此操作,如下所示: sed -i 's/ssl_certificate \/etc\/nginx\/sites-e

我的conf文件中有这一行

ssl_certificate /etc/nginx/sites-enabled/abc.com/abc.com_fullchain.txt;
所以我想把它改成

ssl_certificate /var/www/ssl/nginx/abc.com/abc.com_fullchain.txt;

如何在多个
*.conf
文件中执行此操作?

您可以使用
sed
实现此操作,如下所示:

sed -i 's/ssl_certificate \/etc\/nginx\/sites-enabled\/abc.com\/abc.com_fullchain.txt;/ssl_certificate \/var\/www\/ssl\/nginx\/abc.com\/abc.com_fullchain.txt;/g' ./*.conf

请注意,目录字符串中的正斜杠需要用反斜杠转义。

您能更具体一点吗?运行此命令时发生了什么?@binbashbosh在我的环境中,命令末尾的
/g
不是必需的。它提供了什么?我得到了这个“sed:-e表达式#1,char 110:unterminated`s'命令”,而且,我有多个conf文件,名称像abc.com.conf;xyz.com.conf等。。。。所以我不想对300个文件运行这个命令。因此,请指导我如何做到这一点。您是否尝试过编辑中列出的命令?至于限制将此应用于哪些文件,可以将命令中的
*.conf
替换为所需文件的全名。如果要更改的所有文件在其名称中共享一个公共模式,则可以使用。因为您还没有给出关于用例的任何更具体的信息,所以我将让您研究如何匹配所需的文件名。