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

Я использую Xubuntu 15.04, но, возможно, у этого вопроса есть общее решение для всех разновидностей Ubuntu.

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

Есть ли способ настроить что-то подобное? В идеале окно терминала могло бы мигать или, может быть, отображалось уведомление.

23
задан 4 August 2015 в 13:25

4 ответа

Существует несколько путей, и с && (логичны И) оператор (который работает только когда последняя команда, за которой следуют). Если Вы хотите выполнить уведомление независимо от того, ли команда, за которой следуют или неудавшийся, используйте точку с запятой ; вместо &&.

  1. Графический

    myscript.sh && notify-send 'DONE'
    
  2. Аудио:

    myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav
    

    Примечание, можно использовать любой звуковой файл вместо того, который я использовал здесь.

  3. Оба:

     myscript.sh && aplay /usr/share/sounds/speech-dispatcher/test.wav && notify-send 'DONE !'
    
30
ответ дан 23 November 2019 в 01:25

Вы можете использовать zenity для отображения всплывающего окна.

После команды оболочки добавьте

&& zenity --info --text "STRING"
12
ответ дан 23 November 2019 в 01:25

Я предлагаю использовать libnotify's notify-send для уведомлений. Я создал следующий сценарий, чтобы сделать это:

#!/bin/bash
$1 && \
notify-send -u critical -i info 'Command execution finished' "The command '$1' terminated successfully" || \
notify-send -u critical 'Command execution failed' "The command '$1' exited with errors"

, Если Вы сохраняете выше сценария в названном файле, например, nexec и делаете его исполняемым файлом с помощью chmod +x nexec, и перемещают программу в каталог в оболочках PATH переменная, (например, /usr/local/bin/), можно выполнить любую команду с

nexec 'long-time-command some arguments'

, Например,

nexec 'sudo apt-get update && apt-get dist-upgrade'

, libnotify будет (по крайней мере, он делает так в моей системе, я предполагаю, что это может отличаться между различными рабочими столами), уведомления о дисплее, отмеченные как 'очень важный', пока они не отклоняются вручную (например, путем нажатия на них). Поскольку можно взять из кода, Вы получите другое уведомление, если команда возвратит ненулевой результат.

4
ответ дан 23 November 2019 в 01:25

Вы когда-либо слышали о , не отвлекают - меня ? Кажется, что это соответствует Вашим потребностям и его коду, это находится на github.

я думаю, что пакет находится в официальной Ubuntu repos, так должен быть достаточен

sudo apt-get install undistract-me

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

sleep 11

, Не забывают изменять активное окно, иначе Вы не будете видеть уведомления.

4
ответ дан 23 November 2019 в 01:25

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

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