(OSX Specific)
Я, как и многие другие, кроме себя, часто запускаю процесс в оболочке, выполнение которого занимает минуту или две (например, большой коммит svn). В течение этого времени я часто alt-tab и обновляю reddit / slashdot / wikipedia / что угодно. Было бы здорово настроить что-то, что будет публиковать уведомление о рычании, когда процесс оболочки завершится.
В моем идеальном мире это работало бы так: «Если процесс только что вышел из вкладки, открытой в Терминале, отправьте уведомление о рычании».
У кого-нибудь еще есть что-то подобное?
growlnotify
параметры уведомлений приложения,Growl.prefPane
чтобы включить звук звукового уведомления. Это, однако, не может быть изменено в зависимости от команды, которую вы выполняете, какsay
было бы. Но это менее жутко.Ответы:
Вы можете установить growlnotify, чтобы сделать это.
$ ./some_program && growlnotify Title -m Message
Конечно, вам нужно подумать об этом перед выполнением команды. Альтернативой (хотя я не знаю, как этого добиться) было бы уведомление Growl для каждой команды, что было бы безумно раздражающим.
Чтобы упростить использование growlnotify для вашего варианта использования, отредактируйте
~/bash_profile
и добавьте следующее:теперь вы можете просто
long your_command
(похожеsudo
).Ctrl-A
позиционирует курсор в начале строки, если вы (как и я) всегда сначала набираете фактическую команду, а потом должны добавить префикс.К сожалению, моего bash-fu недостаточно для добавления команды к
growlnotify
сообщениюза комментарий @ mankoff к этому ответу:
Вы можете просто напечатать во время выполнения команды, она будет выполнена позже. Я создал для меня следующую функцию:
Используйте как
gn svn
.источник
Что вам нужно, так это то,
growlnotify
что CLI-программа запускает уведомления о рычании. Вы можете использовать его как:Он имеет еще несколько ручек, с которыми вы можете играть, используйте
growlnotify -h
для получения дополнительной информацииисточник
&&
и||
иметь разные сообщения между состояниями успеха и сбоя, но если кто-то заинтересован только в том, чтобы сообщение отображалось после выполнения команды, то;;
это защита от ошибок. =)Изменение ответа Даниэля Бека, если вы сделаете это небольшое изменение, сделает его очень приятным.
Затем, когда вы запустите 'long svn up', вы увидите сообщение 'svn up complete'.
Очень хорошо, если вы запускаете много трудоемких сценариев оболочки одновременно.
источник
Теперь, когда OSX 10.8 и более поздние версии имеют собственные уведомления, вот как я могу достичь той же цели через терминал-уведомитель :
$ brew install terminal-notifier
Добавьте это к
~/.bash_profile
:Убедитесь, что ваш источник снабжен вашим профилем
. ~/.bash_profile
(не обязательно для будущих терминальных сеансов), поскольку ваш профиль создается автоматически при создании сеанса.Проверьте с вашей любимой командой, а затем вызов функции.
Аргументы для терминала-уведомителя могут несколько улучшиться, но быстрая попытка получить предыдущую команду для передачи функции не удалась, и это дает мне всю необходимую функциональность. А именно, добавление,
;gn
чтобы получить уведомление в конце любого длительного процесса.источник
Используйте Growlnotify .
источник
Это способ его автоматического вызова для «долго выполняющихся» процессов: http://hints.macworld.com/article.php?story=20071009124425468
Он подключается
$PROMPT_COMMAND
и уведомляет о завершении процессов, которые занимают более 10 секунд. Возможно, вам придется настроить его в соответствии с вашей собственной средой и рабочим процессом (например, игнорируя завершениеless
или вызов редактора), но, похоже, он работает достаточно хорошо из коробки.источник
Я просто еще немного покопался и нашел для этого простой метод. Это немного больше руководства, чем мне бы хотелось, но здесь все.
&& growlnotify -m "Message"
> к длинному процессу.Это работает для меня прямо сейчас, но я мог бы сделать лучше, я думаю.
источник
Решение OSX 10.9+ без стороннего программного обеспечения:
В OSX 10.9 и выше вы можете использовать команду AppleScript,
display notification
чтобы отобразить рычание с терминала, например:Если вы не хотите вводить все это каждый раз, вы можете использовать
alias
:Пример:
источник