Вопрос или проблема
Как отключить звук из командной строки?
Предполагая, что вы используете драйвер ALSA, выполните:
amixer set Master mute
amixer set Master unmute
Или вы можете просто использовать:
amixer set Master toggle
чтобы переключать отключение звука.
Это сработало для меня, когда другие не сработали:
amixer -q -D pulse sset Master toggle
Это из комментария nutty about natty к первому ответу:
Я использую pactl
в своих скриптах. Из страницы руководства:
set-sink-mute SINK 1|0|toggle
: Установить статус отключения звука для указанного выхода (определяется по его символическому имени или числовому индексу)
Чтобы отключить звук:
pactl set-sink-mute @DEFAULT_SINK@ true
Чтобы включить звук:
pactl set-sink-mute @DEFAULT_SINK@ false
Чтобы переключить:
pactl set-sink-mute @DEFAULT_SINK@ toggle
Используйте 0
вместо @DEFAULT_SINK@
, чтобы установить выход с числовым индексом 0. true==”1″, false==”0″.
Тестировалось на Ubuntu 12.10.
В моей настройке иногда amixer unmute не срабатывает по какой-то причине.
В терминале введите это, чтобы отключить звук
amixer set Master mute
введите
amixer set Master unmute
Тестировалось на моем Ubuntu 10.10.
Если вы используете alsa
, следуйте ответу goric.
PulseAudio лучше, но не так просто: pactl set-sink-mute 0 1
сработает для первого устройства, но не если вы используете наушники другого выхода.
Лучший способ – проверить с помощью pactl info
и получить Default Sink
для использования.
DEFAULT_SINK=$(pactl info | grep "Default Sink" | cut -d " " -f3)
Затем, чтобы отключить звук:
pactl set-sink-mute "$DEFAULT_SINK" "1"
Или включить звук:
pactl set-sink-mute "$DEFAULT_SINK" "0"
Я написал скрипт для управления pulseaudio в своих заметках. Если хотите использовать, сохраните его как volume
, предоставьте разрешение на выполнение chmod +x volume
и добавьте его в ваш путь ln -sv $PWD/volume /usr/local/bin/
. Вот мой скрипт:
#!/bin/bash
# имя скрипта: volume
# Автор: glaudistong at gmail.com
# зависит от: yad, coreutils, pulseaudio
ps -ef | grep "yad" | grep -E "Volume [^+\-]" | tr -s " " | cut -d " " -f2 | xargs -i kill "{}" 2>/dev/null
DEFAULT_SINK=$(pactl info | grep "Default Sink" | cut -d " " -f3)
DEFAULT_SOURCE=$(pactl info | grep "Default Source" | cut -d " " -f3)
case "$1" in
init)
{
ps -fe | grep yad | grep -q volume ||
{
yad --notification --command "volume up" --text "+ Volume +" --image ~/Pictures/volume-up-dark.png &
yad --notification --command "volume down" --text "- Volume -" --image ~/Pictures/volume-down-dark.png &
}
};;
up)
{
pactl set-sink-volume "$DEFAULT_SINK" +5%
P=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
iconl="$(echo -ne "\U1F50A")"
iconr="$(echo -ne "\U1F56A")"
timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$iconl Volume $P% $iconr" --no-focus --center --skip-taskbar --on-top &
};;
down)
{
pactl set-sink-volume "$DEFAULT_SINK" -5%
P=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
iconl="$(echo -ne "\U1F509")"
iconr="$(echo -ne "\U1F569")"
timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$iconl Volume $P% $iconr" --no-focus --center --skip-taskbar --on-top &
};;
mute)
{
ismute=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Mute" | grep "Name:" -A1 | tail -1 |cut -d: -f2| tr -d " ")
if [ "$ismute" == no ]; then
s=1
P=0
icon="$(echo -ne "\U1F507")"
else
P=$(pactl list | grep -E "Name: $DEFAULT_SINK$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
icon="🔊"
s=0
fi
pactl set-sink-mute "$DEFAULT_SINK" "$s"
echo $s > /sys/devices/platform/thinkpad_acpi/leds/platform::mute/brightness
timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume $P%" --no-focus --center --skip-taskbar --on-top &
};;
mic-up)
{
pactl set-source-volume "$DEFAULT_SOURCE" +5%
P=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
icon="$(echo -en "\U1F3A4")"
timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume Mic $P%" --no-focus --center --skip-taskbar --on-top &
};;
mic-down)
{
pactl set-source-volume "$DEFAULT_SOURCE" -5%
icon="$(echo -en "\U1F3A4")"
P=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume Mic $P%" --no-focus --center --skip-taskbar --on-top &
};;
mic-mute)
{
ismute=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Mute" | grep "Name:" -A1 | tail -1 |cut -d: -f2| tr -d " ")
if [ "$ismute" == no ]; then
s=1
P=0
icon="$(echo -en "\U1F507\U1F3A4")"
else
P=$(pactl list | grep -E "Name: $DEFAULT_SOURCE$|Volume" | grep "Name:" -A1 | tail -1 | cut -d% -f1 | cut -d/ -f2 | tr -d " ")
s=0
icon="$(echo -en "\U1F3A4")"
fi
pactl set-source-mute "$DEFAULT_SOURCE" "$s"
echo $s > /sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness
timeout .6 yad --progress --percentage "$P" --timeout 1 --no-buttons --undecorated --text="$icon Volume Mic $P%" --no-focus --center --skip-taskbar --on-top &
};;
*)
echo неверный параметр;;
esac;
если вы используете pulseaudio в качестве звукового сервера, то сделайте так
pactl -- set-sink-mute @DEFAULT_SINK@ toggle # Также true/false для отключения/включения звука
чтобы отключить и включить звук
если используете alsa, то используйте это
amixer sset 'Master' toggle
чтобы отключить и включить звук
xset b off
просто сработало как часы для меня.
Команда xset b off используется для отключения слышимого “пика” звука при работе в системе X Window (например, GNOME, KDE).
Вот разбивка:
- xset – это утилита для настройки различных пользовательских предпочтений.
- b обозначает “колокол”, который контролирует звук системного звонка.
- off указывает xset отключить звуковой сигнал.
Когда вы запускаете xset b off, системный звонок больше не будет издавать звук в ответ на определенные действия (например, нажатие клавиши backspace в пустом текстовом поле).
Ответ или решение
Для управления звуком через командную строку в Linux, необходимо учитывать использование различных звуковых систем, таких как ALSA (Advanced Linux Sound Architecture) и PulseAudio. Рассмотрим, как можно заблокировать (отключить) звук, используя указанные системы.
Управление звуком с помощью ALSA
Если ваша система использует драйвер ALSA, можно воспользоваться утилитой amixer
для управления громкостью и состоянием звука. Вот основные команды:
-
Чтобы заглушить звук:
amixer set Master mute
-
Чтобы включить звук:
amixer set Master unmute
-
Чтобы переключать состояние звука (подавить/включить):
amixer set Master toggle
Эти команды работают в большинстве дистрибутивов Linux, включая Ubuntu, и обеспечивают простой способ управления звуком.
Управление звуком с помощью PulseAudio
Для систем с PulseAudio более предпочтительными инструментами являются pactl
и pacmd
. PulseAudio позволяет более гибко управлять несколькими звуковыми устройствами, а также предоставляет способ получения информации о текущем состоянии звука.
-
Чтобы заглушить звук на стандартном выходе:
pactl set-sink-mute @DEFAULT_SINK@ true
-
Чтобы включить звук:
pactl set-sink-mute @DEFAULT_SINK@ false
-
Чтобы переключать состояние звука:
pactl set-sink-mute @DEFAULT_SINK@ toggle
Получение информации о выходах
Если вы хотите узнать, какой выход является вашим стандартным, воспользуйтесь следующей командой:
DEFAULT_SINK=$(pactl info | grep "Default Sink" | cut -d " " -f3)
После чего вы сможете использовать переменную $DEFAULT_SINK
в командах для управления звуком.
Примечания
-
Управление системным звуком: Использование команды
xset b off
позволяет отключить звуковой сигнал при нажатии клавиш. Эта команда полезна, если вы хотите отключить громкий сигнал при ошибках ввода.xset b off
-
Создание скриптов: Если вам нужно часто управлять уровнем громкости или состоянием звука, вы можете создать Bash-скрипт, который будет включать функции, описанные выше. Это повысит удобство и автоматизацию процессов управления звуком.
Заключение
Управление звуком из командной строки в Linux не только возможно, но и относительно легко для выполнения. Используя amixer
для ALSA и pactl
для PulseAudio, вы можете быстро включать и выключать звук, а также адаптировать свою систему под собственные предпочтения. Это особенно полезно для администраторов системы и профессионалов в области IT, которые часто работают в средах без графического интерфейса.