Как получить уровень громкости от командной строки?

В /var/www, создайте папку public_html и реконфигурируйте это как свой корневой каталог для Apache. Файлы в /var/www может быть включен, но не получен доступ непосредственно.

15
06.09.2013, 01:39
5 ответов

Острота для парсинга amixerвывод для объема в строке состояния:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)
15
27.01.2020, 19:49
  • 1
    , что делает [][] средний? –  approximatenumber 24.05.2016, 17:44
  • 2
    @approximatenumber Это устанавливает разделителя полей как также ] или [. –  jasonwryan 24.05.2016, 21:38
  • 3
    Здорово. Я не знал, что у Вас мог быть regex для F –  mihai 15.03.2017, 19:33
  • 4
    Как Вы сохранили бы эту команду в переменной? –  mike23 16.01.2018, 23:18
  • 5
    @mike23 vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master)) –  jasonwryan 16.01.2018, 23:20

Можно использовать amixer сделать это.

Примеры

$ amixer get Master
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [off]
  Front Right: Playback 65536 [100%] [off]

Можно также изменить его и отключить звук его как так:

объем набора 75%

$ amixer set Master 75%
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 49152 [75%] [on]
  Front Right: Playback 49152 [75%] [on]

бесшумный режим/небесшумный режим

$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [on]
  Front Right: Playback 65536 [100%] [on]

Можно подавить шумы вывода, если Вы не хотите видеть какой-либо из него с --quiet переключатель.

$ amixer --quiet set Master 75%
$ 
12
27.01.2020, 19:49

Справа

amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }'
85%

Левый

amixer sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

Звуковой сервер

Если вы не используете pulseaudio по умолчанию, вы можете указать amixer, какой сервер использовать с-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%
10
27.01.2020, 19:49

На основе некоторых ответов, уже представленных здесь, но удалось избежать использования как awk, так и grepв одной команде (, потому что это было бы раздуванием ).

amixer -D pulse get Master | awk -F 'Left:|[][]' 'BEGIN {RS=""}{ print $3 }'

Пояснение:

amixer -D pulse get Master...

Довольно самостоятельный -объяснительный; просто перечисляет вещи о нашем главном элементе управления (-D pulse, потому что я использую pulse ). Для меня это печатает:

  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 52428 [80%] [on]
  Front Right: Playback 52428 [80%] [on]

... awk -F 'Left:|[][]'...

Использует регулярное выражение для определения разделителя полей, который может быть Left:или ][.

... { print $3 }'

Теперь распечатываем 3-й столбец. Получается, что, поскольку мы также разделяем Left:, значение $3для правого динамика будет пустым

... 'BEGIN {RS=""}...

Теперь мы печатаем только 80%плюс несколько новых строк. Для сценария, который я писал, мне они не нужны, поэтому я удалил большинство из них с помощью {RS=""}, а затем избавился от последнего в начале, добавив вBEGIN

1
04.04.2020, 02:51

Одно решение, которое у меня есть, это использование эха (нигде не могу его найти, поэтому я хотел бы знать, не лучший ли это способ сделать ),

echo "${$(echo "${$(amixer get Master | grep Left:)#*\[}")%%\]*}"

Я просто позволил Echo удалить как начало до первого '[', так и конец до последнего ']'.

0
22.11.2020, 15:12

Теги

Похожие вопросы