명령줄에서 볼륨 레벨을 얻는 방법은 무엇입니까?

명령줄에서 볼륨 레벨을 얻는 방법은 무엇입니까?

타일식 창 관리자에 텍스트 상태 표시줄이 있고 여기에 정보를 제공하기 위해 tcl을 사용하고 있습니다. 현재 볼륨을 0%에서 100%까지 출력하는 명령줄이 필요합니다. 저는 아치 리눅스를 사용하고 있습니다.

답변1

amixer상태 표시줄의 볼륨 ​​출력을 구문 분석하는 코드 한 줄 :

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)

편집하다: 2020년 11월 현재 업데이트된 Arch Linux용 amixer는 1.2.4이며 출력에 "dB"가 없습니다. 따라서 명령을 다음으로 바꿔야 합니다.

awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)

답변2

이 작업을 수행 하는 데 사용할 수 있습니다 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%
$ 

답변3

옳은

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%

답변4

내가 가진 한 가지 해결책은 echo를 사용하는 것이었습니다(어디에서도 찾을 수 없으므로 이것이 최선의 방법이 아닌지 알고 싶습니다).

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

방금 Echo에게 첫 번째 "["의 시작과 마지막 "]"의 끝을 삭제하도록 요청했습니다.

관련 정보