iTerm2 + zsh에서 시간이 많이 걸리는 처리가 끝나면 Growl에 알리거나 경고 대화 상자를 생성하거나 소리내는 방법

3149 단어 MacZshiTerm2

배경



최근 시간이 걸리는 명령을 자주 사용하고, 방치해 잊어버리는 경우가 많았으므로, 처리가 끝나면 통지하는 구조를 갖고 싶어 생각했다.

하는 방법



여러가지 할 수 있습니다만, 우선 Growl에 통지해 본다.
방법은
1: 얼마나 처리에 시간이 걸리면 통지할지 결정
2: .zshrc 에, 이하의 기술을 해 재읽어 들인다 (대입하고 있는 값은 1.로 정한 초수)
REPORTTIME=1

3: iTerm의 Preferences -> Profiles -> Advanced -> Triggers -> Edit 로 이하의 기술을 한다.


코피페용
# Regular Expression
^.* cpu [0-9.:]+ total

# Parameters
DONE!!!\n\0

4: 끝!

결과



시험에 시간이 걸릴 것 같은 명령을 쳐 보자.
$ find . -type f -maxdepth 8 -print > /dev/null

이것이 끝나면 이렇게 된다.



편리!

해설



먼저 zshrc에 썼다 REPORTTIME=1이 초수를 넘는 처리가 있으면 실행 시간을 표시하는 기능을 zsh가 가지고 있다 .
그래서, iTerm2에는 화면의 출력을 감시해 설정한 정규 표현에 히트하면 뭔가 액션을 일으키는 기능이 있다 그래서, zsh가 상기의 실행 시간 표시를 했는지 어떤지를 감시해, 히트 하면 Growl의 통지를 냈다, 라고 하는 느낌.

발전



타이틀 대로, Growl에 통지하는 것 외에도 iTerm2에 설정한 곳의 Action과 Parameters를 바꾸는 것으로 여러가지 할 수 있다.
예를 들어 Regular Expression은 위에서 설명한대로
  • Action에 Ring Bell을 세트하면 소리가 나온다.
  • Action에 Bounce Dock Icon을 설정하면 도크 아이콘이 바운드됩니다
  • Action에 Show Alert, Parameters를 Growl과 같게 하면 ↓ 이렇게 된다.



    라는 느낌. 임의의 커맨드를 달릴 수도 있으므로, 터미널에서 할 수 있는 것은 거의 뭐든지 할 수 있습니다.

    추가


  • 설정해도 반영되지 않으면, iTerm2를 재기동하면 반영될지도.
  • tmux/screen을 사용하면이 문자열이 들어있는 화면을 전환 할 때마다 반응하여 사용되지 않습니다 ( '· ω ·`)

  • 참고


  • 실행 시간이 긴 명령이 끝나면, zsh가 마음대로 Growl 통지해 온다 (Mac/Linux/SSH 접속처) - Qiita [키타]
  • Mac - iTerm2에서 특정 문자열을 강조 표시하거나 Growl 알림 - Qiita [Kita]
  • iTerm2의 Trigger 정규 표현식에서 후방 참조 - Qiita [Kita]
  • Zsh - 명령 실행에 일정 시간 이상 걸린 경우 처리 시간 표시 - Qiita [Kita]
  • man zshparamREPORTTIME 또는 TIMEFMT 항목
  • 좋은 웹페이지 즐겨찾기