명령이 완료 될 때 알림을받는 방법 명령 줄에서 완료하는

명령 줄에서 완료하는 데 약 20 분이 소요되는 일련의 명령을 실행하고 있습니다. 이 작업이 완료되면 Mac에서 일종의 알림을보고 싶습니다. 터미널이 끝날 때 모니터 할 필요가 없습니다. 이것을 할 수있는 방법이 있습니까?

$ svn update . && ant clean build start && *notify_me_somehow*

편집 :

사용할 수는 xclock있지만 이것은 해킹처럼 보입니다. 전화, 화면 등 어디에서나 알림을 보낼 수있는 것이 이상적입니다.



답변

(svn update . && ant clean build start && say done) || say error


답변

Mac OS 10.8에서는 Growl과 비슷하지만 Mac OS에 내장 된 Notification Center 메시지를 자신에게 보낼 수 있습니다.

OS X의 명령 행에서 알림 센터에 알림 보내기 “를 확인 하여 명령 행에서 알림을 보낼 수있는 Ruby gem을 설치하는 방법을 확인하십시오. 터미널에서 수행되는 작업에 대한 사실을 걱정하는 일반적인 사용 사례를 단순화하려면 .bash_profile에 별칭을 추가하십시오.

alias notifyDone='terminal-notifier -title "Terminal" -message "Done with task!"'

그런 다음 간단하게 수행 할 수 있습니다.

$ <long-running task> ; notifyDone

장시간 실행되는 작업이 완료되면 클릭 할 때까지 지속되는 멋진 모달 팝업이 나타납니다.

알림 센터 팝업


답변

Growl을 사용하십시오 .

에서 .dmg파일, 엑스트라를 들어, growlnotify 진있어 보인다. 와 같이 설치하십시오 /usr/local/bin. 그런 다음이 명령을 사용할 수 있습니다

growlnotify --sticky --appIcon <icon> --message <message> -t <title>

팝업을 표시하려면 다음과 같이하십시오.

으르렁


답변

Mac OS X Lion 10.7부터 터미널에는 다음과 같은 문제를 해결하기위한 새로운 상태 표시기가 있습니다.

탭에서 :

  • 활동 : 터미널에 최근에 출력 된 활동 표시기 (회전 진행 표시기)가 표시됩니다. 이를 통해 현재 통화 중이거나 긴 프로세스를 완료했는지 확인할 수 있습니다. (물론, 잠시 동안 작업을 자동으로 수행 한 후 출력을 시작한 시점을 알 수 있습니다.)

  • 읽지 않음 : 배경 탭에 읽지 않은 새 텍스트를 나타 내기 위해 줄임표 “…”가 표시됩니다. 탭을 선택하면 표시기가 지워집니다.

  • 경고 : “벨”이 표시되어 BEL이 백그라운드 탭이나 백그라운드 창에 쓰여진시기를 나타냅니다. 또한 터미널은 응용 프로그램 아이콘에 빨간색 배지를 표시하여 모든 터미널에서 “읽지 않은”경고 / 벨 수를 나타냅니다. 터미널 자체가 백그라운드에 있으면 벨을 연주 할 때 Dock 아이콘도 튀어 오릅니다.

최소화 된 창 도크 아이콘에서 :

  • 활동 : 활동은 포 그라운드 프로세스의 이름을 표시하여 표시됩니다.

  • 읽지 않음 : 읽지 않은 텍스트는 줄임표로 표시됩니다.

  • 최소화 된 터미널 창은 Dock 아이콘에 라이브 컨텐츠를 표시합니다. 찾고있는 출력을 식별 할 수있는 경우 (예 : “상단”디스플레이는 작은 크기에서도 상당히 쉽게 인식 할 수있는 경우) 활동이 있는지 여부를 확인하거나 터미널에서 수행중인 작업을 확인하는 데 사용할 수 있습니다. Dock 배율이 켜져 있거나 큰 Dock을위한 공간이있을 때 특히 유용합니다.

또한 터미널에 무언가를 표시하여주의를 끌 수 있습니다 (최소 창에서도 볼 수 있음). 예를 들면 다음과 같습니다.

  • 큰 별표를 표시하십시오. banner \*

  • 디스플레이를 반전시킵니다. printf '\e[?5h'

  • 디스플레이를 빨간색으로 페인트하십시오. tput setab 1; tput clear

  • 화면을 깜박이는 루프에 앉아 : while true; do printf '\e[?5h'; sleep 1; printf '\e[?5l'; sleep 1; done

창 조작을위한 이스케이프 코드도 ​​있습니다 (이동, 크기 설정, 확대 / 축소, 최소화 등). 예를 들어 터미널 창을 확대 / 축소 할 수 있습니다.

printf '\e[9;1t'

자세한 내용은 http://invisible-island.net/xterm/ctlseqs/ctlseqs.html의 “창 조작” 을 참조하십시오.

다른 방법은 AppleScript를 사용하여 별도의 창에 경고를 표시하는 것입니다.

osascript -e 'tell app "System Events" to display alert "Build Completed" message "The checkout and build have completed."'


답변

나는 질문에 늦었다는 것을 알고 있지만 도움이 될만한 누락 된 부분이 있다고 생각합니다. 나는 그것이 깔끔하지만 터미널이 당신과 대화하는 것이 정확하게 기능하지는 않는다는 것을 알았습니다. 더 좋은 것은 다음과 같이 더 미묘한 것입니다.

http://i.stack.imgur.com/FaZmF.png

Chris가 지적했듯이 Lion은 BEL이 발생했을 때 알림 배지를 거의 추가하지 않았습니다. 다음 명령으로 이것을 스스로 던질 수 있습니다.

tput bel

따라서 백그라운드에서 작업을 수행하고 완료되었을 때 알림을 받으려면 다음과 같이 시도하십시오.

ping -c 5 www.google.com && tput bel &

이것은 ping 명령을 백그라운드 작업으로 실행하고 (매달리고 이것을 달성) 완료되면 간단한 경고를 발생시킵니다. 역사적으로 BEL은 [끔찍한] 하드웨어 경고음을내는 데 사용되었지만 Lion은이를 “잘못된 명령”사운드 효과, 알림 배지 및 터미널 아이콘이 도크에서 두 번 튀는 것으로 대체했습니다.


답변

이 답변에는 두 가지가 있습니다.

  • 알림을 위해 afplay사운드 파일을 재생하는 을 사용하는 옵션입니다 .
  • 알림과 함께 종료 상태보고 하기위한 도구 .

나는이 스크립트를 가지고있다 ~/bin/donebeep:

#!/bin/bash
if [ "$@" = 0 ]; then
  afplay -v 2 /System/Library/Sounds/Blow.aiff &
else
  afplay -v 2 /System/Library/Sounds/Sosumi.aiff &
fi

이것은 인수가 0인지 여부에 따라 다른 소리를 재생합니다. 그런 다음 별칭이 있습니다.

alias donebeep='(savestatus=$?; ~/bin/donebeep $savestatus "$@"; exit $savestatus)'

(같은 이름을 가진 것은 관련이 없으며 아마도 나쁜 생각 일 것입니다.)

귀하의 예에서 사용하려면 svn update . && ant clean build start; donebeep. 내가 아니라 실패와 성공에 대해 알릴 수 있도록 내가 ;아닌을 사용 &&하고 있습니다.

전에 내가 대해 배웠다afplay , 내가 사용 say하는 대신 메시지를 말할 수 있습니다. donebeep이 스크립트 의 역할은 다음과 같습니다.

#!/bin/bash
say -v Bruce "Done $(basename "$(pwd)"), $@." &

이 스크립트는 두 개의 서로 다른 메시지가 아닌 종료 코드를 직접 말합니다. 또한 현재 디렉토리의 이름에 대해 언급하고 (어떤 작업이 수행되었는지를 명확하게하는 데 도움이 됨) 매개 변수를 별명에 전달하여 말할 추가 텍스트를 제공 할 수 있습니다 (그러면 별명이 "$@"있는 이유). &프롬프트가 표시되기 전에 음성이 끝날 때까지 기다릴 필요가 없도록 후행에 유의하십시오 .


매뉴얼 페이지afplay 가 불완전합니다. afplay -h모든 옵션을 나열합니다.

Usage:
afplay [option...] audio_file

Options: (may appear before or after arguments)
  {-v | --volume} VOLUME
    set the volume for playback of the file
  {-h | --help}
    print help
  { --leaks}
    run leaks analysis  {-t | --time} TIME
    play for TIME seconds
  {-r | --rate} RATE
    play at playback rate
  {-q | --rQuality} QUALITY
    set the quality used for rate-scaled playback (default is 0 - low quality, 1 - high quality)
  {-d | --debug}
    debug print output


답변

알림에 build in say 명령을 사용할 수도 있습니다 (예 : “ant : build : done”). 터미널에서 사람의 말을 참조하십시오.