Как заставить ваш терминал воспроизводить звук или предлагать уведомление, когда он закончил выполнение своей команды? [Дубликат]

Этот вопрос уже имеет ответ здесь: Как добавить уведомление для завершения процесса 1 ответ Как сделать звук после завершения процесса? 8 ответов

Время от времени я делаю sudo apt-get update, и считаю неудобным проверять, когда это делается, делая свою вещь. В любом случае, я могу заставить его предложить всплывающее уведомление или воспроизвести звук, когда он закончит выполнение, поэтому я могу продолжить работу?

1
задан 21 April 2015 в 07:33

4 ответа

Звук, с которым я не могу помочь. Однако, если вы добавите что-то вроде

  && notify-send "Task complete."

после вашей команды, вы увидите уведомление, появившееся в правом верхнем углу. Если необходимый пакет не установлен по умолчанию, sudo apt-get install libnotify-bin должен получить его для вас. [F3] выполнит вторую команду, если первая успешно завершится.

16
ответ дан 23 May 2018 в 21:11

Вы хотите sudo apt-get update; alert. Ниже следует объяснение и обоснование.

С терминала вы можете перечислить множество команд, которые будут выполняться последовательно. Так что вы хотите, это сначала команда, которая занимает много времени, а вторая команда уведомления. Чтобы последовательно запускать команды, вы их разделяете либо с помощью &&, либо ;. Они имеют два разных значения: command-a && command-b означает, что команда -а будет запускаться первой, а затем, если она будет успешной, будет выполняться команда-b; command-a; command-b означает, что команда -а запускается первым, а затем запускается команда-b, была ли команда-a успешной. Вероятно, вам нужна полуколонка: вы хотите получать уведомления о том, что обновление или обновление остановлено, независимо от того, успешно ли оно прошло. Другие ответчики предоставили вам предлагаемые звуковые и экранные предупреждения. Я предпочитаю notify-send, который принимает два параметра: заголовок и содержимое: sudo apt-get update; notify-send update finished (если любой из параметров содержит пробелы, заключите их в кавычки). Гораздо быстрее и легче набрать, чем notify-send title content - alert. Этот псевдоним встроен в bash по умолчанию, по крайней мере, в некоторых версиях Ubuntu, и его легко добавить, если он отсутствует у вас (используйте type alert, чтобы проверить, присутствует ли он). Вы должны получить ответ,
alert is aliased to `notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e 's/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//')"'
Это означает, что он просто вытащит последнюю команду и отправит ее на notify-send, а сопровождающий значок будет изображением терминала (для успешной команды) или изображения с ошибкой (для неудачной команды). Жизнь стала еще проще: command; alert очень быстро и легко печататься. Он будет предупреждать, была ли команда успешной, и предупреждение будет содержать указание о том, была ли команда успешной.

Кстати, иногда меня раздражало, что я не могу выводить вывод на notify-send, поэтому я написал небольшую функцию, чтобы сделать это для меня:

notify () 
{ 
    while read input; do
        notify-send -i $(ls /usr/share/icons/gnome/32x32/emotes | sed 's/\(.*\)\..*/\1/' | shuf -n1) "message" "$input";
    done
}

Это позволяет мне нужно ввести command | notify. Однако значок в этом случае является случайным. Кроме того, вы получаете уведомление для каждой строки вывода, что, вероятно, не является хорошим выбором для apt-get update.

7
ответ дан 23 May 2018 в 21:11
  • 1
    Re pipeing input: Почему бы просто не использовать подстановку команд (т. Е. Обратные ссылки или синтаксис $())? – Kevin 21 April 2015 в 16:19
  • 2
    То, как я это делал, было самым легким для меня в то время; Я не особо разбираюсь в сценариях Bash. – TRiG 21 April 2015 в 16:24

Для совместимых с воспроизведением файлов

Чтобы воспроизвести пользовательский звук через динамики, вы можете запустить

aplay <path_to_sound_file>

* & lt; path_to_sound_file & gt; = путь к звуковому файлу

для воспроизведения выбранного звукового файла; то вы можете добавить псевдоним playsound в ~/.bashrc:

alias playsound='aplay <path_to_sound_file>'

* & lt; path_to_sound_file & gt; = путь к звуковому файлу

Таким образом, вы можете запустить sudo apt-get update && playsound, чтобы воспроизвести выбранный звук, когда sudo apt-get update завершен.

Для файлов, не совместимых с воспроизведением (например, файлы .gog) (системные звуки)

Чтобы воспроизвести пользовательский звук через динамики, вы можете запустить

pacmd list-sinks | grep -E 'index|device.product.name'

, чтобы отобразить все доступные приемники pulseaudio индексы вместе со своим соответствующим устройством; то вы можете запустить

pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null

* & lt; sink_index & gt; = pulseaudio '

для воспроизведения /usr/share/sounds/ubuntu/stereo/bell.ogg через выбранную раковину. (Конечно, вы можете воспроизводить любой звук, который вам нужен); то вы можете добавить псевдоним playsound в ~/.bashrc:

alias playsound='pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null'

* & lt; sink_index & gt; = pulseaudio.

Таким образом, вы можете запустить sudo apt-get update && playsound, чтобы воспроизвести выбранный звук, когда sudo apt-get update закончен.

2
ответ дан 23 May 2018 в 21:11

Вы можете добавить что-то вроде

&& echo -e "\007"

в конец вашей линии. Попробуйте сделать

sudo apt-get update && sudo apt-get -y upgrade && echo -e "\007"

Надеюсь, что это поможет

1
ответ дан 23 May 2018 в 21:11
  • 1
    Не работает для меня. Ubuntu 14.04, zsh. – Michael Pankov 21 April 2015 в 12:44
  • 2
    Он может работать также с echo -e "\ a" это еще одна возможность. Но это команды bash. – Terrance 21 April 2015 в 16:21

Другие вопросы по тегам:

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