Оповещение о завершении работы терминальной программы? [Дубликат]

15

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

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

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

    
задан becko 04.08.2015 в 20:25
источник

4 ответа

20

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

  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 !'
    
ответ дан Sergiy Kolodyazhnyy 04.08.2015 в 20:36
8

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

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

&& zenity --info --text "STRING"
    
ответ дан Bacon 04.08.2015 в 20:32
3

Я предлагаю использовать libnotify notify-send для уведомлений. Для этого я создал следующий скрипт:

#!/bin/bash
 && \
notify-send -u critical -i info 'Command execution finished' "The command '' terminated successfully" || \
notify-send -u critical 'Command execution failed' "The command '' 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 будет (по крайней мере, в моей системе, я предполагаю, что это может различаться между разными рабочими столами), отображающие уведомления, отмеченные как «критические», до тех пор, пока они не будут отклонены вручную (например, нажав на них). Как вы можете взять из кода, вы получите другое уведомление, если команда вернет ненулевой результат.

    
ответ дан s3lph 04.08.2015 в 20:42
2

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

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

sudo apt-get install undistract-me

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

sleep 11

Не забудьте изменить свое активное окно, иначе вы не увидите никаких уведомлений.

    
ответ дан MaxChinni 04.08.2015 в 21:24