LINUX.ORG.RU

amixer — получить громкость

 , ,


0

1

Хочу получить громкость (для вывода в панельку):

amixer get Master
Simple mixer control 'Master',0
  Capabilities: pvolume cvolume penum
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: Playback 0 - 256 Capture 0 - 256
  Front Left: Playback 27 [11%] [-57.25dB] Capture 0 [0%] [-99999.99dB]
  Front Right: Playback 27 [11%] [-57.25dB] Capture 0 [0%] [-99999.99dB]

Делаю так:

amixer get Master | grep 'Front Left: Playback' | awk '{ print $5 }' | grep -Eo '[0-9]+%'

Получаю 11%. А как проще можно сделать? Уж слишком громоздко моя команда выглядит.

amixer get Master | awk '/Front Left: Playback/ { gsub(/]|\[/, "", $5) ; print($5) }'

dexpl ★★★★★ ()
amixer get Master | sed -rn 's/.*Left.*Playback [0-9]+ \[([0-9%]+)\].*/\1/p'
AITap ★★★★★ ()

Омг, спасибо 2-м людям выше, а то у меня было сделано так: amixer get Master|grep 'Front Left:'|cut -c28-29. Естественно, работало только при громкости (x > 9 && x < 100).

z00ke ()
Ответ на: комментарий от imul

Вообще-то при <10% не показывает ничего, а при 100% — последние два ноля и процент. Вот пофикшенная версия:

amixer get Master | sed -rn '$s/[^[]+\[([0-9]+%).*/\1/p'

Deleted ()
Ответ на: комментарий от Deleted

Вообще-то при <10% не показывает ничего, а при 100% — последние два ноля и процент.

Будет показывать галиматью при <10% и при 100%

Не вижу противоречия.

Вот пофикшенная версия:

Круто :)

imul ★★★★★ ()
| awk -F'[][]' '/Front Right/ {print $2}'
sdio ★★★★★ ()
Ответ на: комментарий от Deleted

Спасибо всем за решения, особенно @fargred, его исправленный вариант самый быстрый (0.003-0.004с) и достаточно короткий.

ksevelyar ()
Ответ на: комментарий от imul

Не вижу противоречия.

Странно видеть что-то там, где ничего нет.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.