작업 / 프로세스가 완료 될 때 iTerm 터미널에서 알림을 받으려면 어떻게해야합니까?


106

알림 센터 알림은 이상적이지만 으르렁 거림, 바운스 독, 소리 등도 괜찮습니다 (또는 Terminal.app에서만 가능하다면 다시 전환 할 것입니다). iTerm 어딘가에 알림을 켜는 옵션이 있습니까? 아니면 터미널에서 명령 끝에 입력해야하는 옵션입니까? 후자의 경우 프로세스가 시작된 후 경고를 추가 할 수 있습니까 (예를 들어 처음에 예상했던 것보다 오래 걸릴 것이라는 것을 알게되면 추측이 나쁩니다).

답변:


198

이미 실행중인 프로세스에 대해 알림

바로 가기 : A또는 :

Edit -> Marks and Annotations -> Alerts -> Alert on next mark

으스스한 눈!: iTerm말 그대로 터미널의 오른쪽 상단을 주시합니다. 명령이 완료되면 Notification Center.

왜?

우리는 이미 명령을 시작했습니다. 우리는 완료에 필요한 시간을 과소 평가했고 취소하고 싶지 않으며 앉아서 시청하기를 거부합니다. 예 : brew update오랜만에!

요구 사항

iTerm : 쉘 통합 :

iTerm2 -> Install Shell Integration

통합은 iTerm2가 다시 시작될 때까지 알림을 표시하지 않습니다.


11
셸 통합을 설치 한 후 iTerm2-> 환경 설정-> 프로필-> 터미널로 이동하여 아래로 스크롤하여 "표시 표시기 표시"를 선택 취소 할 수 있습니다.이 셸 통합이 마음에 들지 않았습니다. 경고 스타일 팝업 대신 OS 알림을 원하는 경우 편집-> 표시 및 주석-> 경고-> 알림 게시를 원할 수도 있습니다.
Charles L.

내가 트리거 (사용하는 것이 좋습니다 @simonhamp iterm2.com/documentation-triggers.html을 묻혀 세션)
phirschybar

3
@dwanderson tmux와 함께 일한 적이 있습니까? 이것은 매우 도움이 될 것입니다
루카스

@Lucas 문서에 쉘 통합이 tmux 또는 화면에서 작동하지 않는다는 내용이 있습니다. iterm2.com/documentation-shell-integration.html
Rich Stone

2
이 눈이 무섭다 !! (╯ ‵ □ ′) ╯︵┻━┻
WTIFS

42

명령과 명령 사이에 세미콜론을 사용하여 명령 뒤에 다음 중 하나를 추가 할 수 있습니다.

afplay /System/Library/Sounds/Ping.aiff -v 2

osascript -e 'beep 3'

tput bel

또는 알림 센터가 마음에 들면

osascript -e 'display notification "Lorem ipsum dolor sit amet" with title "Title"'

프로필에서 별칭을 만들어 notify명령 끝에 추가 할 수도 있습니다 . 따라서 로그인 프로필에서

alias notify="tput bel"

그때

sleep 10; notify

또는 명령을 시작 했는데 "중단"된 경우 입력 notify하고 누르기 만하면 명령이 완료되면 마지막에 별칭 Enter이 실행됩니다 notify. 예 :

sleep 20

# wait 5 seconds before realising this will take 20 seconds
notify<Enter>

흠,이 명령을 사용하면 osascript -e 'display notification "Task finished" with title "Terminal"'이 오류가 발생하는 것 같습니다2015-05-04 12:34:23.227 osascript[30467:1130887] Error loading /Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools: dlopen(/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools, 262): no suitable image found. Did find:
truth1ness

2 부 오류/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax/Contents/MacOS/List & Record Tools: no matching architecture in universal wrapper osascript: OpenScripting.framework - scripting addition "/Users/mmarotta/Library/ScriptingAdditions/List & Record Tools.osax" declares no loadable handlers.
truth1ness

Mavericks 또는 Yosemite보다 오래된 시스템을 사용하고 있습니까?
Mark Setchell

아니요, 요세미티 10.10.3
truth1ness

오, 이상하네요. osascript -e 'display notification "Hello"'여기에서 특별히 복사하여 붙여 넣는 등 더 간단한 방법을 시도해 볼 수 있습니다 .
Mark Setchell

33

그리고 항상 say명령을 사용할 수 있습니다 .

일반적으로 터미널 내부에서 긴 프로세스를 실행 중이고 업데이트를 원할 때이 명령을 사용하여 done또는 error또는 같은 것을 말할 수 있습니다 bazinga.

mvn clean install; say done 

이 명령은 자바 스프링 앱을 빌드하며 시간이 오래 걸리며 done프로세스가 완료된 후 음성으로 표시됩니다.


16

iTerm2Growl알림을 지원합니다 . 각 프로필 설정에서 켤 수 있습니다.

Preferences…-> 에서 프로필을 선택합니다 Profiles. 그런 다음 Terminal탭에 옵션이 Enable Growl Notifications있습니다.

환경 설정 에서도 iTerm알림을 활성화해야합니다 Growl.

주어진 프로세스에 대한 알림을 받고 싶다면 Triggers. Advanced프로필 설정의 탭에서 트리거를 정의합니다 . 이런 식으로 프로세스의 특정 출력 (regexp)에 Growl 알림을 할당 할 수 있습니다.

예를 들어 다음과 같이 할 수 있습니다.

$ mycommand; echo "end-of-my-process"

그리고 "end-of-my-process"메시지에 트리거를 연결합니다.

최신 정보

iTerm2.com에서 트리거에 대해 자세히 알아보십시오 .


따라서 프로세스가 끝날 때 작성되는 내용을 알기 위해 스크립트를 한 번 실행해야하기 때문에 완료된 프로세스에 대한 경고를받을 수있는 글로벌 방법이 없다는 것이 맞습니까? (그리고 실행하는 모든 스크립트에 대해 하나씩 만들어야합니다. )? 예를 들어 youtube-dl 프로세스의 마지막 줄은 [download] 100% of 40.13MiB in 00:13이지만 완료되는 모든 파일에 대해이 줄이 반복됩니다. '내 프로세스 종료'문자열에 무엇을 입력해야합니까? 기본 셸 프롬프트가 ~ >다시 나타날 때 트리거를 만들 수 있습니까?
truth1ness 2005 년

@ truth1ness 완료된 프로세스에 대해 알리는 일반적인 방법이 있다고 생각하지 않습니다. iTerm터미널 출력의 끝을 위해 새 터미널 출력에 대한 알림을 보냅니다. 이것은 일부 프로세스에서 작동 할 수 있습니다. 모든 프로세스에서 작업하는 방법은 제가 제안한 것입니다. "end-of-my-process"메시지는 고유 한 문자열 일 수 있습니다. 프로세스에 의해 인쇄되지 않도록 고유합니다. 말 그대로 "내 프로세스의 끝"텍스트 일 ​​수 있습니다. 트리거 정의에 정확히 동일한 문자열을 입력하고 알림을 첨부해야합니다. 쉘 프롬프트에서 작동하는지 모르겠습니다. 직접 시도해야합니다.
baf

아, 오해 했어, 이제 알았다. 에코 출력 "end-of-my-process"와 함께 팝업 경고를받을 수있었습니다. 그러나 프로세스가 시작되기 전에 실제로 echo 명령을 실행하면 경고가 표시됩니다. 실제로 명령을 실행하고 에코 된 문자열 만 볼 때 문자열을 무시하도록 iTerm에 어떻게 지시합니까? 도움말 파일에서 트리거 정규식 앞에 \ 0 ( "정규식과 일치하는 전체 값")을 추가하려고했지만 여전히 트리거를 두 번 실행합니다.
truth1ness

@ truth1ness 창의력을 발휘하십시오 echo "end-of-""my-process" . 예를 들어 내부에 따옴표 를 사용하십시오 . 프로세스가 완료된 경우에만 "내 프로세스 종료"텍스트와 일치합니다.
baf

9

noti 라는 OSS 도구가 있습니다 .

쉽게 설치할 수 있으며 brew install noti명령 앞에 notilike를 붙이기 만하면 사용할 수 있습니다 noti sleep 3.


3

terminal-notifierMac OS 시스템 알림을 사용 하는 것을 사용할 수도 있습니다 . 홈 브루를 통해 설치하려면 :

$ brew install terminal-notifier

그런 다음 작업 / 프로세스가 완료 될 때 알림을 표시하려면 다음과 같이 사용하십시오.

$ <your job/process command> && echo 'Completed' | terminal-notifier -sound default

그리고이 디스플레이는 다음과 같습니다.

여기에 이미지 설명 입력

알림 소리 및 아이콘을 변경할 수도 있습니다. github repo의 추가 정보 : https://github.com/julienXX/terminal-notifier


1

iTerm2 셸 통합 설치

curl -L https://iterm2.com/shell_integration/install_shell_integration_and_utilities.sh | bash

명령을 실행하고주의 앱을 연결합니다. 예 :

./task && ~/.iterm2/it2attention once

작업이 완료되면 iTerm 앱이 아이콘으로 바운스됩니다.

다른주의 옵션도 있습니다.

$ .iterm2/it2attention -h
Usage:
  it2attention start
    Begin bouncing the dock icon if another app is active
  it2attention stop
    Stop bouncing the dock icon if another app is active
  it2attention once
    Bounce the dock icon once if another app is active
  it2attention fireworks
    Show an explosion animation at the cursor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.