Как показать графический диалог из шелл-скрипта на маке
Если вы запускаете шелл-скрипт из графической среды (например, из форкфлоу Альфреда), то сообщать пользователю об ошибках и задавать ему вопросы удобно с помощью графических диалогов. Поможет в этом Эплскрипт.
Показываем сообщение об ошибке:
#!/usr/bin/env bash
# error "Сообщение"
function error() {
osascript <<EOT
tell app "System Events"
display dialog "$1" buttons {"OK"} default button 1 with icon caution with title "$(basename $0)"
return -- Suppress result
end tell
EOT
}
error "Not enough cheese!"
(Кроме caution
можно использовать иконки note
и stop
.)
Спрашиваем что-нибудь:
#!/usr/bin/env bash
# prompt "Вопрос" "Ответ по умолчанию"
function prompt() {
osascript <<EOT
tell app "System Events"
text returned of (display dialog "$1" default answer "$2" buttons {"OK"} default button 1 with title "$(basename $0)")
end tell
EOT
}
value="$(prompt 'Enter:' '42')"
Или просто скачайте dlg-error и dlg-prompt, и положите их куда-нибудь в $PATH
.
#!/usr/bin/env bash
dlg-error "Not enough cheese!"
value="$(dlg-prompt 'Enter:' '42')"
P. S. Показать уведомление в Центре уведомлений можно с помощью terminal-notifier.