#1 Le 18/07/2012, à 14:45
- Ypnose
[amixer]Obtenir status / infos avec commande[RÉSOLU]
Salut,
J'essaie d'extraire des infos de la commande 'amixer get Master | tail -1', j'obtiens:
Mono: Playback 64 [100%] [0.00dB] [on]
Avec la commande "amixer get Master | tail -1 | sed 's/.*\[\([0-9]*%\)\].*/\1/'", j'obtiens sur la valeur 100.
Je voudrais obtenir avec la commande 'amixer get Master | tail -1', la valeur du niveau (ici 100) et si le canal est mute ou pas (ici on). Cependant, je n'y arrive pas.
J'ai un peu essayé avec sed et awk (print$) mais je ne suis pas assez bon pour obtenir ces deux infos.
J'ai besoin de votre aide.
Merci.
Dernière modification par Ypnose (Le 20/07/2012, à 11:29)
#2 Le 18/07/2012, à 18:13
- nesthib
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
essaie :
amixer get Master | sed -n '$s/.*\[\([0-9]\+\)%\].*\[\(on\|off*\).*/Le canal est \2 à \1%/p'
attention, ça ne fonctionnera que si les deux paramètres sont présents (pour certains mixers le on/off est absent).
sinon, avec awk :
amixer get Master | awk -F"[][ ]+" 'END {print "Le canal est "$7" à "$5}'
(tu peux supprimer facilement le %)
Même remarque, si le nombre de champs est variable il faudra trouver une solution un peu plus robuste
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 18/07/2012, à 19:12
- Ypnose
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
Merci à toi. Tu es doué.
On s'approche beaucoup de ce que je souhaite.
Je pourrais lire le man (un peu la flemme), pourrais-tu m'expliquer un peu les commandes?
Et pour finir j'aimerais obtenir un résultat sous la forme:
Volume = 100% | Canal [ON]
J'ai modifié la première commande comme ça:
amixer get Master | sed -n '$s/.*\[\([0-9]\+\)%\].*\[\(on\|off*\).*/\1% | Canal \2/p' | tr 'a-z' 'A-Z'
Cependant je trouve ça pas super clean car tr change toutes les lettres et pas uniquement ON/OFF (ce que je veux). Une idée l'ami?
#4 Le 18/07/2012, à 19:31
- Ypnose
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
Ne t'embêtes pas! Finalement je suis passé par deux commandes distinctes:
VOL=$(amixer get Master | tail -1 | awk {'print $4'})
CAN=$(amixer get Master | tail -1 | awk {'print $6'} | tr 'a-z' 'A-Z')
#5 Le 18/07/2012, à 20:13
- nesthib
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
le tail -1 est inutile, il suffit de dire à awk de ne travailler que sur la dernière ligne :
amixer … | awk 'END {…}'
sinon pour avoir le retour que tu souhaites en une seule commande :
amixer get Master | awk -F"[][ ]+" 'END {print "Volume = "$5" | Canal ["toupper($7)"]"}'
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#6 Le 18/07/2012, à 21:42
- Ypnose
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
Tu m'a appris quelque chose. La seconde commande est costaude.
Sinon, super option pour awk, je ne connaissais pas. Et je préfère passer par deux commandes, c'est plus pratique.
VOL=$(amixer get Master | awk 'END {print $4}')
CAN=$(amixer get Master | awk 'END {print $6}' | tr 'a-z' 'A-Z')
#7 Le 19/07/2012, à 01:37
- nesthib
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
pas de soucis
mais tu peux quand même faire :
CAN=$(amixer get Master | awk 'END {print toupper($6)}')
tu économises un pipe et un processus
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 19/07/2012, à 11:33
- Ypnose
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
Je connaissais pas toupper. Je viens de jeter un coup d'œil au man. C'est pas mal du tout, cette commande.
Merci beaucoup à toi!
#9 Le 20/07/2012, à 08:00
- nesthib
Re : [amixer]Obtenir status / infos avec commande[RÉSOLU]
et sinon, un p'tit [résolu] ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne