J'essaie d'obtenir uniquement les arguments de configuration de nginx compilé sur Ubuntu 14.04 à l'aide d'une ligne de commande.
Lancer /usr/local/nginx/sbin/nginx -V
nous donne:
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
Ce qui a du sens.
Alors maintenant, je veux couper cette ligne pour avoir juste:
--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
Après avoir regardé en ligne, il semble que soit
/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
ou
/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
ou
/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
Mais ils produisent tous la même chose que nginx -V
Qu'est-ce que je comprends mal?
Il y a :
utilisé sur chaque ligne, vous pouvez donc traiter la ligne comme plusieurs parties séparées par :
, et dans votre cas, vous voulez un deuxième champ où la chaîne configure arguments
apparaît:
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
Comme mentionné dans les commentaires sous la question, le résultat de -V
est renvoyé dans le flux d'erreur. Nous avons donc dû le faire passer dans le flux stdout
(c'est ce que 2>&1
fait)
Il est possible que la sortie passe à l'erreur standard. Vous devez le rediriger:
/usr/local/nginx/sbin/nginx -V 2>&1 | sed -n -e '/arguments/ s/.*\: *//p'
# ~~~~