我正在尝试使用命令行获取 Ubuntu 14.04 上编译的 nginx 的配置参数。
跑步/usr/local/nginx/sbin/nginx -V
给我们带来:
nginx version: nginx/1.8.1
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module
这是有道理的。
所以现在我想把这一行剪掉,使其变为:
--使用-http_ssl_module --使用-http_stub_status_module --添加模块=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --使用-http_sub_module
在网上查看后,似乎
/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
或者
/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
或者
/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
但它们都只是输出相同的内容nginx -V
我理解错了什么?
答案1
每行都使用了 :
,因此您可以将行视为由分隔的几个部分:
,并且在您的情况下,您需要configure arguments
出现字符串的第二个字段:
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
正如问题下的评论中提到的那样,的输出-V
进入错误流,所以我们必须让它进入流stdout
(这就是所做2>&1
的)
答案2
输出可能会转到标准错误。您需要重定向它:
/usr/local/nginx/sbin/nginx -V 2>&1 | sed -n -e '/arguments/ s/.*\: *//p'
# ~~~~