You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed命令替换含特殊字符的phpMyAdmin配置行内容

sed修改phpMyAdmin配置的正确方案

第一步:先备份文件(必做)

之前操作出现过清空文件的情况,先执行备份命令,出错可随时还原:

cp /var/www/html/phpMyAdmin/config.inc.php /var/www/html/phpMyAdmin/config.inc.php.bak

还原命令(操作出错时执行):

cp /var/www/html/phpMyAdmin/config.inc.php.bak /var/www/html/phpMyAdmin/config.inc.php

第二步:执行替换命令

直接执行下面的命令即可完成需求:

sed -i '/AllowRoot/s/false/true/' /var/www/html/phpMyAdmin/config.inc.php

命令逻辑说明:

  • /AllowRoot/:先精准定位到包含AllowRoot的配置行,和你之前测试能成功匹配目标行的规则一致,不会误改其他内容
  • s/false/true/:仅在定位到的行内,把匹配到的false替换为true,刚好对应配置值从false改true的需求
  • 整个sed执行逻辑用单引号包裹,shell不会解析表达式里的$、[]等特殊字符,不会出现字符转义错误、变量被意外替换的问题

之前命令失效的常见原因

  • 用双引号包裹sed表达式时,shell会自动把$cfg、$i识别为当前shell的环境变量,因为你没有定义这两个变量,最终传给sed的表达式会被替换成残缺内容,很容易把文件改乱甚至清空
  • 之前写的表达式不符合sed替换命令的基础语法,sed的文本替换必须以s开头标识替换操作,缺少这个标识sed无法识别执行逻辑
  • 写的匹配规则'AllowRoot|false'不符合sed默认正则规则,基础正则模式下|不代表或逻辑,且拼接的匹配串和原文件行内容不匹配,自然无法生效

验证修改结果

执行以下命令查看目标行内容,确认修改成功:

grep AllowRoot /var/www/html/phpMyAdmin/config.inc.php

正常输出应为:

$cfg['Servers'][$i]['AllowRoot'] = true;

内容的提问来源于stack exchange,提问作者Patrickkasie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 12:09:18