Shell Task Completion에 대한 Growl 알림


12

(OSX 특정)

나 자신 외에 다른 많은 사람들처럼 종종 자신을 완료하는 데 1-2 분이 걸리는 쉘에서 프로세스를 시작합니다 (예 : 큰 svn 커밋). 그 동안 나는 종종 reddit / slashdot / wikipedia / 무엇이든 Alt-Tab하고 새로 고칩니다. 쉘 프로세스가 끝나면 으르렁 거리는 알림을 게시하는 것을 설정하는 것이 좋습니다.

이상적으로는 터미널에서 열린 탭에서 프로세스가 종료 된 경우 으르렁 거리는 알림을 게시하면됩니다.

다른 사람이 이와 같은 설정을 가지고 있습니까?


1
growl은 여전히 ​​화면에 앉아있는 경우에만 알려줍니다. 더 긴 프로그램의 경우 "say"명령을 사용하여 완료된 오디오 힌트를 얻습니다.

@mankoff : 오디오 알림 소리를 포함 하도록 growlnotify응용 프로그램 알림 설정을 구성 할 수 있습니다 Growl.prefPane. 그러나 실행 명령에 따라 변경 say될 수는 없습니다. 그러나 덜 오싹합니다.
Daniel Beck

답변:


11

growlnotify 를 설치 하여 이를 수행 할 수 있습니다 .

$ ./some_program && growlnotify Title -m Message

물론 명령을 수행하기 전에이 점을 고려해야합니다. 대안 (나는 이것을 달성하는 방법을 모른다)은 모든 단일 명령에 대한 Growl 알림이 될 것이다.


유스 케이스에 growlnotify 사용을 단순화하려면 ~/bash_profile다음을 편집 하고 추가하십시오.

function long {
    $@
    /usr/local/bin/growlnotify Finished -m 'Done'
}

이제 간단하게 long your_command(와 유사 sudo) 할 수 있습니다 . Ctrl-A(나처럼) 항상 실제 명령을 먼저 입력하고 나중에 접두사를 추가 해야하는 경우 커서를 줄의 시작 부분에 놓습니다.

내 bash-fu는 불행히도 growlnotify메시지에 명령을 추가 할 수 없습니다.


이 답변에 대한 @mankoff의 의견에 따라 :

명령이 실행되는 동안 간단히 입력하면 나중에 실행됩니다. 나를 위해 다음 기능을 만들었습니다.

function gn {
    /usr/local/bin/growlnotify Finished -m "$@"
}

로 사용하십시오 gn svn.


2
당신은 명령 전에 그것을 생각할 필요가 없습니다. 실행 중에 알림을 받으려면 "gn foo"(또는 오디오 힌트의 경우 "say done")를 입력하고 Enter 키를 누르면 현재 명령이 완료 될 때 해당 명령이 실행됩니다. .

이 작업을 자동으로 수행하는 것에 대해 다시 한 번 말씀드립니다. PS1 또는 타임 스탬프를 터치하는 데 사용합니다. PS2를 사용하여 PS1이 터치 한 시간을 확인하십시오. > n 초인 경우 growlnotify를 실행하십시오. 이제 모든 명령에 대해 발생하지 않기 때문에 성 가시지 않습니다.

@mankoff True. 따라서 타이핑을 줄이는 간단한 기능으로 충분합니다.
다니엘 벡

@mankoff PS2? 이것이 단지 계속 프롬프트가 아닙니까? 모든 출력 라인의 접두사가 아닙니다 ..?
다니엘 벡

PS1 / PS2는 이것을 구현하고 싶을 때 내가 찾기 시작한 곳으로 추측되었습니다. 아마도 모든 것이 PS1에 내장 될 수 있습니다. 그리고 모든 명령에 대한 일반적인 으르렁 거리는 방법은 완전히 다릅니다.

2

growlnotify으르렁 거리는 알림을 트리거하는 CLI 프로그램이 필요합니다 . 다음과 같이 사용할 수 있습니다.

./script.sh;; growlnotify -m "done"

그것은 몇 가지 더는 사용하여 재생할 수 있습니다 노브 한 growlnotify -h추가 정보를 원하시면


감사. 나도 그것을 발견했을 때 나는 단지 논평했다. 세미콜론은 &&보다 더 의미가 있습니다.
ezrock

1
@ ezrock 나는 성공과 실패 상태 사이에 다른 메시지를 사용 &&하고 ||가질 수 있다고 생각 하지만, 명령이 실행 된 후에 표시되는 메시지에만 관심이 있다면, 그것은 무방비 ;;입니다. =)
roguesys

2

이 약간의 변경을 수행하면 Daniel Beck의 답변을 수정하면 매우 좋습니다.

function long {
    command=$@
    $command
    /usr/local/bin/growlnotify Finished -m "$command completed."
}

그런 다음 'long svn up'을 실행하면 'svn up completed'메시지가 표시됩니다.

많은 시간이 소요되는 쉘 스크립트를 동시에 실행하면 매우 좋습니다.


2

OSX 10.8 이상에는 기본 알림이 있으므로 터미널 알림을 통해 동일한 목표를 달성하는 방법입니다 .

  1. 추출 설치
  2. $ brew install terminal-notifier
  3. 이것을 다음에 추가하십시오 ~/.bash_profile:

    function gn {
        terminal-notifier  -message ' ' -title 'Finished'
    }

. ~/.bash_profile세션을 만들 때 프로필이 자동으로 제공되므로 향후 터미널 세션에 필요하지 않은 프로필을 제공했는지 확인하십시오 .

자주 사용하는 명령으로 테스트하고 함수 호출을 수행하십시오.

ls ; gn

터미널 알리미에 대한 인수는 약간의 개선을 견딜 수 있지만 이전 명령을 가져와 함수에 전달하려는 빠른 시도는 성공하지 못했으며 필요한 기능을 모두 얻습니다. 즉, ;gn장기 실행 프로세스가 끝날 때 알림을 받기 위해 추가 합니다.



1

"장기 실행"프로세스를 위해 자동으로 호출하는 방법입니다. http://hints.macworld.com/article.php?story=20071009124425468

그것은에 후크 $PROMPT_COMMAND완료하는 데 10 초보다 오래 복용 프로세스 및 통지 완료. 자신의 환경과 워크 플로에 맞게 조정해야 할 수도 있지만 (예 : 완료 less또는 편집기 호출 무시 ) 즉시 사용할 수 있습니다.


나는 그것을 직접 시도하지는 않았지만 완전히 자동화 된 접근 방식은 정말 매력적입니다. 여기의 다른 모든 솔루션은 명령이 오래 실행되고 스크립트를 트리거해야한다는 것을 미리 알고 있어야합니다 (예 : ls; growlnotify). 수동으로 실행할 필요가 없다는 아이디어가 마음에 듭니다.
ezrock

0

방금 좀 더 찔 렀고 간단한 방법을 찾았습니다. 내가 원하는 것보다 조금 더 수동적이지만 여기에갑니다.

  1. growlnotify를 설치하십시오 (Growl 설치 다운로드의 extras 폴더에 있음)
  2. && growlnotify -m "Message"긴 프로세스에 < >를 추가하십시오 .

그것은 지금 저에게 효과적이지만, 나는 더 잘 할 수 있습니다.


0

타사 소프트웨어가없는 OSX 10.9+ 솔루션 :

OSX 10.9 이상에서 AppleScript 명령 display notification을 사용하여 다음과 같이 터미널에서 으르렁 소리를 표시 할 수 있습니다 .

osascript -e 'display notification with title "Process Completed."'

매번 모든 것을 입력하고 싶지 않으면 alias:를 사용할 수 있습니다 .

alias growl='osascript -e "display notification with title \"Process Completed.\""'

예:

long-running-script.sh; growl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.