如何通过Shell脚本获取Linux中运行的Nginx配置文件目录
提取Nginx配置文件所在目录的命令方案
你当前的命令能获取到完整的配置文件路径,但要得到目录部分,可通过以下几种方式修改:
方案一:用dirname提取目录
这是最直观的方式,利用dirname命令专门获取文件路径的上级目录:
nginx -V 2>&1 | grep -o '--conf-path=[^ ]*' | cut -d '=' -f2 | dirname
- 修正了原命令中
grep的正则:--conf-path=[^ ]*能正确匹配从--conf-path=开始到下一个空格为止的完整路径(原正则--conf-path=(.conf)存在语法错误,且无法匹配真实路径格式) cut -d '=' -f2提取等号后的完整路径- 最后通过
dirname输出该路径的目录部分
方案二:用sed直接移除文件名
如果不想多管道调用dirname,可以用sed直接替换掉路径末尾的/nginx.conf:
nginx -V 2>&1 | grep -o '--conf-path=[^ ]*' | sed 's/\/nginx.conf$//'
sed 's/\/nginx.conf$//'表示匹配行尾的/nginx.conf并将其替换为空,剩下的就是目标目录
方案三:单步sed完成提取
也可以不依赖grep和cut,直接用sed一次性提取目录:
nginx -V 2>&1 | sed -n 's/.*--conf-path=\(.*\)\/nginx.conf.*/\1/p'
-n表示只输出匹配的行- 正则
.*--conf-path=\(.*\)\/nginx.conf.*匹配包含--conf-path=的行,捕获/nginx.conf之前的部分 \1引用捕获的内容并输出
内容的提问来源于stack exchange,提问作者anand8398
相关产品推荐
相关产品推荐

