J'essaie d'obtenir uniquement les arguments de configuration de nginx compilé sur Ubuntu 14.04 à l'aide d'une ligne de commande.
Exécution de /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 est logique.
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 sortent tous la même chose que nginx -V
Qu'est-ce que j'ai mal compris ?
Réponse acceptée :
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 2ème champ où configure arguments
chaîne apparaît :
/usr/local/nginx/sbin/nginx -V 2>&1 | awk -F ':' '/configure arguments/{print $2}'
Comme mentionné dans les commentaires sous la question, la sortie de -V
va au flux d'erreurs, nous avons donc dû le faire aller à la stdout
flux (qui est ce que 2>&1
fait)