Я запускаю ряд команд в командной строке, выполнение которых занимает около двадцати минут. Я хотел бы видеть какое-то уведомление на моем Mac, когда они закончены, поэтому мне не нужно следить за терминалом, когда он заканчивается. Есть ли способ сделать это?
$ svn update . && ant clean build start && *notify_me_somehow*
Редактировать :
Я мог бы использовать, xclock
но это похоже на взлом. В идеале я мог бы отправить уведомление куда угодно, например, на телефон, экран и т. Д.
grownlnotify
.Ответы:
(svn update . && ant clean build start && say done) || say error
источник
&&
для объединения нескольких команд и заключения их в коллектив||
или оператор для возникновения ошибки. +1 действительноalias -g sd='; say done'
. Это означает, что мне нужно только добавитьsd
любую команду, и я получу уведомление.(echo alik && echo Orly && say done) || say error
say -v Zarvox
что заставляет всех в непосредственной близости прыгать, это чуть менее тревожное уведомление.В Mac OS 10.8 вы можете отправлять себе сообщения Центра уведомлений (аналогично Growl, но встроенные в Mac OS).
Проверьте « Отправка оповещений в центр уведомлений из командной строки в OS X », чтобы увидеть, как установить гем Ruby, который позволит вам отправлять уведомления из командной строки. Чтобы упростить общий случай использования просто заботы о факте выполнения чего-либо в терминале, добавьте псевдоним в ваш .bash_profile:
Тогда вы можете просто сделать:
Как только долгосрочное задание завершится, вы получите красивое модальное всплывающее окно, которое сохраняется, пока вы не нажмете на него:
источник
brew install terminal-notifier
. Тогда вы можете просто написатьmyCommand && terminal-notifier -message 'finished'
. Протестировано на OS X Yosemite (10.10.1).myCommand; terminal-notifier -message 'finished'
противном случае уведомление не будет отображаться в случаеmyCommand
сбоя.say
команду, напримерmy command ; terminal-notifier -message 'finished' ; say finished
Используйте Growl .
В
.dmg
файле ищите дополнения, есть бинарный файл Growlnotify. Установите его, что-то вроде в/usr/local/bin
. Тогда вы можете использовать эту командучтобы показать всплывающее окно, вот так:
источник
Начиная с Mac OS X Lion 10.7, в Terminal есть несколько новых индикаторов состояния, помогающих справиться с такими проблемами:
Во вкладках:
Активность: индикатор активности (индикатор хода вращения) отображается, когда недавно был выведен на терминал. Это позволяет увидеть, занят ли он в данный момент или завершил длительный процесс. (Или, конечно, вы можете использовать его, чтобы сказать, когда он начал производить вывод после тихого выполнения работы некоторое время.)
Непрочитанные: многоточие "…" отображается для обозначения нового непрочитанного текста на фоновых вкладках. При выборе вкладки индикатор очищается.
Оповещение: отображается «звонок», указывающий, когда BEL был записан на фоновые вкладки или фоновые окна. Кроме того, Терминал отображает красный значок на значке приложения, указывающий количество «непрочитанных» оповещений / звонков во всех терминалах. Если сам терминал находится в фоновом режиме, он также отскакивает значок Dock при воспроизведении звонка.
В свернутом окне иконки Dock:
Активность: активность указывается отображением имени процесса переднего плана.
Непрочитанный: непрочитанный текст помечен многоточием.
Свернутые окна терминала показывают живой контент в значках Dock. Это можно использовать, чтобы увидеть, есть ли активность, или даже определить, что делает терминал, если искомый вывод идентифицируем (например, «верхний» дисплей довольно легко распознать даже при небольших размерах). Это особенно полезно, когда увеличение док-станции включено или у вас есть место для большого дока.
Кроме того, вы можете отобразить что-то в терминале, чтобы привлечь ваше внимание (что было бы видно даже в свернутых окнах). Например:
Показать большую звездочку:
banner \*
Инвертировать дисплей:
printf '\e[?5h'
Покрасьте дисплей в красный цвет:
tput setab 1; tput clear
Сядьте в петлю, мигая экраном:
while true; do printf '\e[?5h'; sleep 1; printf '\e[?5l'; sleep 1; done
Есть также управляющие коды для управления окнами (перемещение, установка размера, масштабирование, сворачивание и т. Д.). Вы можете увеличить окно терминала, например:
Смотрите "манипулирование окнами" на http://invisible-island.net/xterm/ctlseqs/ctlseqs.html для деталей.
Другой подход заключается в использовании AppleScript для отображения предупреждения в отдельном окне:
источник
Я знаю, что опоздал на вопрос, но я думаю, что есть небольшая недостающая часть, которая может быть полезной. Я обнаружил, что хотя ваш терминал общается с вами, он не совсем функционален. Что лучше, это нечто более тонкое, как это:
Как указал Крис, Лев добавил небольшие значки уведомлений, когда выбрасывают BEL. Вы можете бросить это сами с помощью команды:
Итак, если вы выполняете какую-то работу в фоновом режиме и хотите получить уведомление, когда она заканчивается, вы можете попробовать что-то вроде:
Это запускает команду ping в качестве фоновой задачи (зависание и выполняет это), и она выдает простое предупреждение, когда завершается. Исторически BEL использовался, чтобы издавать этот [ужасный] аппаратный звуковой сигнал, однако Lion со вкусом заменил его звуковым эффектом «недопустимая команда», значком уведомления и значком терминала, отскакивающим дважды в доке.
источник
printf '\a'
будет эквивалентноtput bel
. Обратите внимание, что терминал не отображает значок Dock, если в данный момент активна вкладка, вызвавшая предупреждение.Я представляю в этом ответе две вещи:
afplay
, которая воспроизводит звуковые файлы , для уведомления.У меня есть этот скрипт
~/bin/donebeep
:Это играет другой звук в зависимости от того, равен ли аргумент 0. Тогда у меня есть псевдоним:
(То, что у них одинаковое имя, не имеет значения и, вероятно, плохая идея.)
Чтобы использовать это в вашем примере
svn update . && ant clean build start; donebeep
. Обратите внимание, что я использую,;
а не&&
, чтобы он мог уведомить меня о неудаче, а также об успехе.Прежде чем я узнал о
afplay
, яsay
вместо этого говорил сообщения. Рольdonebeep
сыграл этот сценарий:Этот сценарий говорит код выхода напрямую, вместо двух разных сообщений. В нем также упоминается имя текущего каталога (чтобы уточнить, какая задача выполнена), и может быть дан дополнительный текст для передачи, передавая параметры псевдониму (поэтому псевдоним
"$@"
в нем есть). Обратите внимание на трейлинг,&
чтобы вам не нужно было ждать окончания речи, прежде чем получать подсказку.Страница людей для
afplay
неполно;afplay -h
перечисляет все варианты:источник
Вы также можете использовать команду build in say для уведомления, например: say «ant: build: done». Смотри: мужик скажи в терминале.
источник
Я создаю простой инструмент, который делает именно это. https://github.com/vikfroberg/brb
Монтаж
Нужно установить Node.js: http://nodejs.org
инструкции
источник
Я написал
ntfy
именно для этой цели. Он кроссплатформенный и может автоматически отправлять уведомления по окончании длительных команд.Если у вас есть Python
pip
(в большинстве дистрибутивов Linux и MacOS он есть), вот как его установить и включить автоматические уведомления:Проверьте это на http://ntfy.rtfd.io
В дополнение к этому, он также может:
источник
iTerm2 имеет встроенный механизм для получения уведомлений, но вы должны установить Shell Integration .
При запуске длительной команды выберите: «
Правка»> «Метки и аннотации»> «Предупреждения»> «Предупреждение о следующей отметке» (
⌥Option
+⌘Command
+A
)Когда командная строка вернется, вы можете выбрать между:
источник
Ubuntu поставляет следующий псевдоним в ~ / .bashrc:
С этим вы можете делать такие вещи, как:
Возможно, есть эквивалент
notify-send
в Mac OSX? Я видел похожие всплывающие окна в Mac и Ubuntu.источник
notify-send
в Mac OS X.Моя проблема со звуками и модальными окнами в том, что я не могу сказать, откуда они берутся. В настоящее время я работаю с кучей пробелов, а иногда и более 20 окон терминала.
Мое решение переносимо на сторону Unix и должно работать со всем, что поддерживает escape-последовательности ANSI. Это решение работает со Snow Leopard и, вероятно, будет работать с более древними версиями терминала.
Одна строка в .bash_profile
Разбивая это:
Если вам не нравится красный, используйте цвет фона google ascii escape. Обратите внимание, что это не меняет весь экран на красный, а просто выводит все данные после завершения команды.
источник
Я сделал сценарий, чтобы решить это, которое здесь . Вам не нужно никакого дополнительного программного обеспечения для этого. Установка:
brew install akashaggarwal7/tools/tsay
Использование:
sleep 5; tsay
Не стесняйтесь вносить свой вклад!
источник
Вот моя функция bash (просто поместите ее где-нибудь в вашем
~/.bashrc
или~/.zshrc
:Чтобы использовать это:
watch echo 'hi there'
Вы также можете настроить звук уведомления, как описано здесь: https://apple.stackexchange.com/a/115373/9622
источник
Я делаю такие вещи все время. Моя командная строка может выглядеть так
Если
bin/setup
иbundle install
команда завершится успешно, я буду слышать систему / диктант голос : «Все сделано». Если&&
произойдет какая-либо из первых двух ошибок, цепочка не будет отслеживаться, и все, что я услышу, это «Готово»источник
Вы можете использовать встроенную
osascript
команду для запуска скрипта Apple, который показывает уведомление, напримерВы можете связать это вместе с простой точкой с запятой, например
источник