필자는 AppleScript 및 필자가 작성한 쉘 스크립트에서 10.8의 알림 센터 기능을 활용할 수 있기를 바랍니다.
AppleScript 또는 쉘 스크립트에서 사용할 수있는 내장 명령 또는 타사 라이브러리가 있습니까?
이상적으로 알림의 유형과 아이콘을 제어 할 수 있지만 스톡 아이콘 (그러나 사용자 정의 텍스트)이있는 기본 배너를 트리거하는 기능조차도 높이 평가 될 것입니다.
필자는 AppleScript 및 필자가 작성한 쉘 스크립트에서 10.8의 알림 센터 기능을 활용할 수 있기를 바랍니다.
AppleScript 또는 쉘 스크립트에서 사용할 수있는 내장 명령 또는 타사 라이브러리가 있습니까?
이상적으로 알림의 유형과 아이콘을 제어 할 수 있지만 스톡 아이콘 (그러나 사용자 정의 텍스트)이있는 기본 배너를 트리거하는 기능조차도 높이 평가 될 것입니다.
답변:
Mavericks 이상에서는 AppleScript의 '디스플레이 알림'을 사용하여이를 수행 할 수 있습니다.
display notification "Lorem ipsum dolor sit amet" with title "Title"
문자 그대로 간단합니다! 아니 3 번째의 -party 라이브러리 나 앱이 필요하지 다른 시스템에서 사용하기 위해 완전히 휴대용입니다. 상단에 10.9 알림, 중간에 10.10 DP, 하단에 10.10
AppleScript는 / usr / bin / osascript를 사용하여 쉘에서 실행할 수 있습니다.
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
다음을 추가하여 경고를 추가로 사용자 지정할 수도 있습니다.
자막
'자막'다음에 자막이 포함 된 문자열 또는 변수를 추가하십시오.
display notification "message" with title "title" subtitle "subtitle"
위의 예는 다음과 같은 알림을 생성합니다.
소리
'소리 이름'다음에 알림과 함께 재생 될 소리 이름을 추가하십시오.
display notification "message" sound name "Sound Name"
유효한 사운드 이름은 ...에있는 사운드 이름입니다.
~/Library/Sounds
/System/Library/Sounds
게시 알림은 명령 줄 스크립트로 래핑 될 수 있습니다. 다음 코드는 터미널에서 실행할 수 있으며 / usr / local / bin에 스크립트를 추가합니다 (존재해야하며 $ PATH에 추가) notify
.
cd /usr/local/bin && echo -e "#!/bin/bash\n/usr/bin/osascript -e \"display notification \\\"\$*\\\"\"" > notify && chmod +x notify;cd -
위의 내용을 알리기 위해 추가 할 스크립트입니다.
#!/bin/bash
/usr/bin/osascript -e "display notification \"$*\""
이제 알림을 표시하려면
notify Lorem ipsum dolor sit amet
sleep 5; notify Slow command finished
display notification
는 클릭하면 열린 파일 대화 상자가 나타납니다.
"display ... '$mytext' ..."
필요한 경우을 쓸 수 없지만 큰 따옴표는 이스케이프해야합니다 "display notification \"$mytext\" ..."
.
읽어보기에서 :
terminal-notifier는 Mac OS X 10.8에서 사용할 수있는 Mac OS X 사용자 알림을 보내는 명령 줄 도구입니다.
NSUserNotification
'Foundation tool'에서 작동하지 않기 때문에 현재 애플리케이션 번들로 패키지되어 있습니다. 레이더 : // 11956694이 도구는 파일 시스템 변경으로 인해 실행되는 명령의 상태를 표시하기 위해 Kicker 에서 사용됩니다 . (v3.0.0)
다운로드
코드 서명되고 사용할 준비가 된 사전 빌드 된 바이너리는 다운로드 섹션 에서 사용할 수 있습니다 .
용법
$ ./terminal-notifier.app/Contents/MacOS/terminal-notifier group-ID sender-name message [bundle-ID]
터미널 알리미를 사용 하려면 앱 번들 내 에서 바이너리를 호출해야 합니다.
첫 번째 인수는 알림이 속한 '그룹'을 지정합니다. '그룹'의 경우 이전에 게시 된 알림을 대체하여 하나의 알림 만 표시됩니다. 고유 한 프로세스로 알림 범위를 지정하는 송신자의 프로세스 ID 또는 프로젝트 별 알림 범위를 지정하는 현재 작업 디렉토리.
두 번째 및 세 번째 인수는 알림 자체를 설명하며 각각 '제목'과 '메시지'입니다. 예를 들어, 알림을 보낸 사람에게 사용자에게 알리기 위해 보낸 사람의 이름을 제목으로 지정할 수 있습니다.
네 번째 및 마지막 인수는 선택 사항입니다. 사용자가 알림을 클릭 할 때 활성화해야하는 응용 프로그램을 지정합니다. 기본적으로 이것은 다른 응용 프로그램을 시작하기 위해 Terminal.app을 활성화하고 대신 응용 프로그램의 번들 식별자를 지정합니다. 예를 들어 Safari.app을 시작하려면 다음을 사용하십시오
com.apple.Safari
.
많은 사람들이 버튼 클릭으로 만 해제 할 수있는 알림 팝업을 원하기 때문에 @grgarside의 답변에 메모를 추가하고 싶습니다.
나는 당신을위한 해결책을 찾았습니다.
실제로 작성된 스크립트의 일부 매개 변수가 아닌 시스템 환경 설정의 설정에 의해 제어되었습니다. 이 두 이미지는 모두 설명해야합니다
훌륭한 답변을 위해 @grgarside에게 감사드립니다.
Script Editor
만입니다 . 서비스 워크 플로에서는 입니다. 때 내부 , 그것은이다 . Script Editor.app
osascript
Automator Runner
Automator.app
Automator
이제 앱 스토어에서 제공되는 Growl2를 사용하여이 작업을 수행 할 수 있습니다 . Growl을 설치하고 "OS X 알림"(스크린 샷)을 활성화하십시오.
또한 명령 줄 도구로 Growl 알림을 보내려면 GrowlNotify를 설치해야합니다. 이 도구는 다운로드 페이지 에서 무료로 다운로드 할 수 있습니다 .
이제 명령 행에서 Growl 알림을 생성 할 수 있으며이 알림은 알림 센터로 전달됩니다. 예를 들면 다음과 같습니다.
growlnotify -n "My App" -m "Hello world"
현재는 응용 프로그램 아이콘을 변경할 수 없습니다.
--icon path/to/icon.png
아이콘 옵션을 사용할 수 있다고 생각합니다 .
최근에 터미널 알림을 분기하여 알림 알림 (작업 포함) 및 응답 유형 알림을 표시하는 명령 줄 도구를 작성했습니다.
쉘 스크립트 및 golang 앱과 함께 사용하여 사용자의 대화 형 답변을 얻습니다.
@grgarside 의 솔루션 은 훌륭하지만 스크립트 삽입에 취약하여 로그 파일 내용 또는 이와 유사한 것을 표시하는 데 사용될 때 주요 보안 문제가 될 수 있습니다.
이것은 더 안전해야합니다.
#!/bin/bash
X="$*" /usr/bin/osascript -e 'display notification system attribute "X"'
I have a "laser"
당신은 "단어"를 인용하여 구문 오류가 있다고 들리지 않고 같은 것을 말하고 싶을 것 입니다. 탈출하면 다음을 수행 할 수 있습니다.script 'I have a "laser"'
Growl은 무료가 아니며 10.8 이전 시스템에서는 터미널 알림을 사용할 수 없으므로 cocoaDialog 를 사용하는 경향이 있습니다 . 무료이며 오픈 소스이므로 스크립트와 함께 배포 할 수도 있습니다.
많은 사용자 화가 필요하지 않은 경우, display notification
다른 사람들이 이미 언급했듯이 쉘에서 호출 할 수있는 AppleScript를 사용할 수도 있습니다 .
그러나 AppleScript에는 큰 따옴표가 필요한 것 같습니다. 따라서 변수가 필요한 경우 작동하지 않습니다 .
osascript -e "display notification '$text' with title '$title'" #WRONG
이스케이프 된 큰 따옴표를 사용해야합니다. 이것은 추악 하지만 작동합니다 .
osascript -e "display notification \"$text\" with title \"$title\""
osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'
(@grgarside의 훌륭한 답변을 기반으로 한 대체 구현입니다.)
AppleScript는 osascript
shebang 라인을 입력하여 직접 해석 할 수 있습니다 .
#!/usr/bin/osascript
on run argv
if length of argv = 1 then
display notification (item 1 of argv) with title "Notification"
else if length of argv > 1 then
display notification (item 1 of argv) with title (item 2 of argv)
else
return "<message> is required\nUsage: notify <message> [<title>]"
end if
end run
notify
예를 들어 경로의 어딘가에 저장 /usr/local/bin/notify
하고 실행 가능하게 만드십시오 ( chmod +x notify
). 메시지와 제목 (선택 사항)을 허용합니다. 공백이 있으면 따옴표로 묶어 쉘이 단일 인수로 해석합니다.
$ notify "Lorem ipsum dolor sit amet" "Testing Notifications"
다음은 OS X의 루비 스크립트에서 사용하는 멋진 것입니다 (그래서 창을 토글 한 후에도 스크립트를 시작하고 업데이트 할 수 있습니다).
cmd = %Q|osascript -e 'display notification "Server was reset" with title "Posted Update"'|
system ( cmd )
에서 .bash_profile
:
function _sys_notify() {
local notification_command="display notification \"$2\" with title \"$1\""
osascript -e "$notification_command"
}
alias sys-notify="_sys_notify $1 $2"
사용 명령 : sys-notify "title" "message"
공식 문서
문서가 이동되거나 제거 된 경우를 위해 여기에 텍스트를 복사합니다.
알림을 표시하려면 표시 할 명령을 표시 알림 명령에 제공하십시오. 선택적으로 with title, subtitle 및 sound name 매개 변수의 값을 제공하여 알림이 표시 될 때 추가 정보 및 가청 경고를 제공합니다
display notification "All graphics have been converted." with title "My Graphic Processing Script" subtitle "Processing is complete." sound name "Frog"
노트
스크립트를 사용하여 알림을 표시 한 후 스크립트 또는 스크립트 편집기 (스크립트가 스크립트 편집기 내에서 스크립트를 실행하는 경우)가 시스템 환경 설정> 알림의 알림 앱 목록에 추가됩니다. 여기에서 알림을 경고 또는 배너로 표시할지 여부와 같은 옵션을 구성 할 수 있습니다.
경고 스타일 알림에서 표시 버튼을 클릭하면 알림을 표시 한 앱이 열립니다. 스크립트 앱의 경우 앱을 다시 열면 스크립트의 실행 핸들러가 트리거되어 스크립트가 두 번째 처리를 시작할 수 있습니다. 이를 염두에두고 스크립트에 코드를 추가하여 해당되는 경우이 시나리오를 처리하십시오.
감사합니다. 이것은 일부 사용자 스크립트에 필요한 것입니다. 자막과 소리를 추가하기 위해 약간 수정했습니다. 값이 제공되지 않으면 무시됩니다.
function _sys_notify() {
local notification_command="display notification \"$2\" with title \"$1\" subtitle \"$3\" sound name \"$4\""
osascript -e "$notification_command"
}
alias sys-notify="_sys_notify $1 $2 $3 $4"
사운드의 경우 / System / Library / Sounds의 확장자가없는 사운드 파일 이름을 사용하십시오. 예를 들어, Ping.aiff 파일을 사용하려면 $ 4에 Ping을 사용하십시오.