스크립트 실행이 준비되면 어떻게 소리를 재생할 수 있습니까?


44

나는 매번 실행하고 실행하는 데 오랜 시간이 걸리는 일부 파이썬 스크립트를 실행하고 있습니다.

나는 이것을 다음과 같이 실행한다. $ time python MyScript.py

스크립트 실행이 완료 되 자마자 소리를 재생하려면 어떻게해야합니까?

Ubuntu 10.10 (Gnome 데스크탑)을 사용합니다.


또는를 사용 bash하고 zsh있습니까? 실제로 자동으로이 작업을 수행하는 몇 가지 방법이 있지만, 관련이 있으며 사용중인 쉘에 따라 다릅니다.
Mikel

$ echo $ SHELL은 "/ bin / bash"를 반환합니다
Martin Thoma

답변:


39

소리를 재생하는 명령을 추가하십시오. 이만큼 간단 할 수 있습니다

$ time mycommand; printf '\7'

또는 복잡한

$ time mycommand && paplay itworked.ogg || paplay bombed.ogg

(명령은 pulseaudio가 설치되어 있다고 가정합니다. 데스크탑 환경에 따라 사운드 플레이어를 대체하십시오.)


6
+1 paplay은 아마도 "현대"Linux 시스템에서 사운드를 재생하는 데 가장 적합한 명령 일 것입니다.
Mikel

4
printf '\ 7'은 저에게는 효과가 없지만이 명령은 제가 원했던대로 작동했습니다time python MyScript.py -n 40 && paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg || paplay /usr/share/sounds/ubuntu/stereo/phone-outgoing-busy.ogg
Martin Thoma

printf '\7'나를 위해 작동합니다 (paplay는하지 않습니다 (git shell)). 그러나 그것은 아주 작은 bip 입니다. 다른 소리를내는 코드가 더 있습니까? 나는 시도했다 \6, \8그러나 그들은 몇 가지 문자입니다.
laggingreflex

2
@laggingreflex 아니오, \7(BEL)은 일반적으로 소리를 유발할 수있는 유일한 문자입니다 (Wikipedia article Control character 참조 ). 항상 소리가 나지는 않을 수도 있습니다.
musiphil

3
@laggingreflex 아마도 더 이상 필요하지 않지만 웃음을 위해서만 가능합니다.)for i in {1..30}; do for j in {1..3}; do printf '\7'; sleep 0.12; done; sleep 0.4; done
cprn

16

spd-say

sleep 2; spd-say 'get back to work'

-w추가 동기 부여가 필요한 경우 무한 루프 :

sleep 2; while true; do spd-say -w 'get back to work'; done

패키지를 통해 14.04에 사전 설치 speech-dispatcher: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest에 대한 맹인을위한 것?

팝업 추가

이 콤보는 생명의 은인입니다 (의 b약자 beep).

b() ( spd-say 'done'; zenity --info --text "$(date);$(pwd)" & )

그리고:

super-slow-command;b

내가 방 어딘가에 있다면, 나는 그것을 듣고 긴 일이 끝났다는 것을 알게 될 것이다.

그렇지 않으면 컴퓨터로 돌아올 때 팝업이 표시됩니다.

관련 : https://stackoverflow.com/questions/7035/how-to-show-a-gui-message-box-from-a-bash-script-in-linux


spd-say와 관련된 도구 를 얻으려면 (Fedora 24) speech-dispatcher와 같은 하위 패키지를 설치해야 할 수도 있습니다 speech-dispatcher-utils.
dfarrell07

9

하드 드라이브에서 소리를 선택하고 대기중인 명령 바로 다음에 명령을 내려 놓으십시오. 그들은 순차적으로 일어날 것입니다 :

$ time python MyScript.py; mplayer ~/ScriptDone.wav

(자연스럽게 모든 플레이어를 사용할 수 있습니다). 나는 alertdone소리를 내고 실행할 때 libnotify 경고를 보여주는 스크립트를 가지고 있습니다. 나는이 경우에 그것을 정확하게 사용한다 :

$ time python MyScript.py; alertdone "Done timing"

그것은 당신이 (내 필요한이 그것을 기반으로 할 수 있습니다 자신 만들고 싶어 그렇다면, 정말 간단합니다 notify-more, mplayer그리고 ~/tones/alert_1.wav비록) :

#!/bin/bash
message=${1:-"Finished working"}
notify-more -t 10000 -i /usr/share/icons/gnome/32x32/actions/insert-object.png "Process Finished" "$message"
mplayer ~/tones/alert_1.wav

2
notify-more또는 notify-send실제로 사운드를 재생하는 데 유용한 대안이 될 수 있습니다.
Mikel

@Mikel 나는 완전히 libnotify에 중독되었습니다; 내 시스템의 모든 것이 알림을 뜹니다
Michael Mrozek

8
time python MyScript.py; play /path/so/sound.ogg

playsox Install sox http://bit.ly/software-small 패키지 의 매우 기본적인 (UI 없음) 사운드 플레이어입니다 . 다른 명령 줄 기반 사운드 플레이어로 교체 할 수 있습니다.


네, play, aplay, 또는 paplay. (내 우분투 시스템이 aplaypaplay기본적으로.)
미켈

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.ogg고마워요
마틴 토마

5

개인적으로을 사용 my-script && notify-send "done"합니다. 그러면 Linux Mint (Cinnamon)에서 다음과 같은 데스크탑 알림이 전송됩니다.

여기에 이미지 설명을 입력하십시오


3

이 작업을 자동으로 수행 할 수도 있습니다.

에 방법을 보여주고 zsh에 대한 정보를 추가하겠습니다 bash.

본질은 다음과 같습니다.

preexec()
{
    starttime=$SECONDS
}

precmd()
{
    if ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

프로그램이 Python 인 경우에만 수행 할 수도 있습니다. 예 :

preexec()
{
    starttime=$SECONDS
    case $3 in python*)
        command_is_python=true;;
    *)
        command_is_python=false;;
    esac
}

precmd()
{
    if $command_is_python && ((SECONDS - starttime >= 5)); then
        aplay "sound.wav"
        # or printf "\b", or notify-send, or whatever
    fi
}

에서 bash, 가장 좋은 방법은 다운로드이다 preexec.bash.txt 소스 그것 (예를 들어, . ~/preexec.bash.txt당신의 상단에 ~/.bashrc, 그 이상 (또는 뭔가 가까이가) 작동합니다. (하지 있는지에 대해 $3명령이 파이썬의 경우 비트 확인하려면 .)

그놈 터미널을 사용하고 있다면, 그놈 터미널을 깜박이 는 것도 가리 킵니다 . 내가 작성한 패치로 명령이 완료되면 터미널이 깜박이므로 Alt-Tab을 다른 것으로 옮길 수 있으며 완료되면 알려줍니다.


1

모든 것에 명령을 추가 할 필요는 없습니다. 실제로 스크립트를 사용하면 자동으로 처리됩니다. undistract-me 라고 하며 Github에서 사용할 수 있습니다.

sudo apt install undistract-me    #installs the script (on Debian)
echo 'source /etc/profile.d/undistract-me.sh' >> ~/.bashrc #adds auto-enable to your console
echo 'export LONG_RUNNING_COMMAND_TIMEOUT=XXX' >> ~/.bashrc #where XXX is number of seconds when the command is long enough to alert you
echo 'export UDM_PLAY_SOUND=1' >> ~/.bashrc #to enable sound alert

이제 새로운 bash를 시작하면 설정됩니다. 스크립트를 수정하여 소리와 경고를 변경할 수 있습니다.


-1

모든 플레이어를 사용할 수 있습니다. cvlc완전성을 위해 추가 하고 있습니다.

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