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

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

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

5 ответов

Я записал небольшие сценарии для создания его. Сценарий расположен в github.

Вот руководство по инсталляции:

Установка

Загрузка или просто клонируется, repo

 $ git clone git@github.com:c0rp-aubakirov/notify_after_command_executed.git

Затем добавляют определение источника сценария postexec_notify к Вашему .bashrc.

Вот git clone пример установки:

 $ cd ~
 $ git clone git@github.com:c0rp-aubakirov/notify_after_command_executed.git
 $ cd ~/notify_after_command_executed
 $ echo "source $(pwd)/postexec_notify" >> ~/.bashrc

Теперь перезапускают Ваш терминал. После перезапуска необходимо видеть, что это обменивается сообщениями:

preexec.sh is not exist
Trying to download it from github

Теперь попытка протестировать, если уведомление появляется:

$ sleep 6

сообщите мне, неясно ли что-то, или у Вас есть любые проблемы.

2
ответ дан 21 April 2015 в 17:33

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

  && notify-send "Task complete."

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

16
ответ дан 21 April 2015 в 17:33

Для aplay совместимых файлов

Для проигрывания пользовательского звука через динамики можно работать

aplay <path_to_sound_file>

* <path_to_sound_file> = соединяют каналом к звуковому файлу

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

alias playsound='aplay <path_to_sound_file>'

* <path_to_sound_file> = соединяют каналом к звуковому файлу

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

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

Для проигрывания пользовательского звука через динамики можно работать

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

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

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

* <sink_index> = pulseaudioиндекс приемника

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

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

* <sink_index> = pulseaudioиндекс приемника

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

4
ответ дан 21 April 2015 в 17:33

То, что Вы хотите, sudo apt-get update; alert. То, что следует, является объяснением и объяснением.


  • От терминала можно перечислить много команд, которые будут выполнены в последовательности. Таким образом, то, что Вы хотите, является первым команда, которая занимает много времени, и второй команда уведомления.
  • К командам выполнения в последовательности Вы разделяете их с также && или ;. Они имеют два отличных значения: command-a && command-b средства, которые команда-a выполнит сначала, и затем, если это было успешно, команда-b, будут работать; command-a; command-b средства, которые команда-a будет выполнять сначала и затем управлять-b, будут работать, была ли команда-a успешна. Вы, вероятно, хотите точку с запятой: Вы хотите быть уведомленными, когда обновление или обновление прекратили работать, вышло ли оно успешно.
  • Другие отвечающие стороны дали Вам предложенный аудио и экранные предупреждения. Мое собственное предпочтение для notify-send, который берет два параметра: заголовок и содержание: sudo apt-get update; notify-send update finished (если любой параметр содержит пробелы, включите их в кавычки).
  • Намного более быстрый и легче ввести, чем notify-send title content alert. Этот псевдоним встроен в удар по умолчанию по крайней мере в некоторых версиях 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.

8
ответ дан 21 April 2015 в 17:33

Можно добавить что-то как

&& echo -e "\007"

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

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

Hope, которая помогает

1
ответ дан 21 April 2015 в 17:33

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

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