Komut dosyası yürütme hazır olduğunda nasıl ses çalabilirim?


44

Her şimdi ve sonra yürütmek için oldukça uzun süren bazı python komut dosyaları yürütüyorum.

Onları böyle yürütüyorum: $ time python MyScript.py

Komut dosyası yürütüldüğü anda bir sesi nasıl çalabilirim?

Ubuntu 10.10 (Gnome masaüstü) kullanıyorum.


Kullandığınız bashveya zsh? Bunun otomatik olarak gerçekleşmesini sağlamanın bazı yolları var, ancak bunlar oldukça ilgili ve hangi kabuğu kullandığınıza bağlı.
Mikel

$ echo $ SHELL "/ bin / bash" döndürür
Martin Thoma

Yanıtlar:


39

Ses çalan herhangi bir komutu ekleyin; bu kadar basit olabilir

$ time mycommand; printf '\7'

veya olduğu kadar karmaşık

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

(Komutlar pulseaudio'nun kurulu olduğunu varsayar; masaüstü ortamınıza bağlı olarak ses çalarınızı değiştirin.)


6
+1 paplaymuhtemelen "modern" bir Linux sisteminde ses çalmak için kullanılacak en iyi komuttur.
Mikel

4
printf '\ 7' benim için çalışmıyor, ama bu komut istediğim gibi çalıştı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'benim için çalışıyor (paplay değil; (git shell)) ama sadece çok küçük bir bip . Başka sesler çıkaran daha fazla kod var mı? Denedim \6, \8ancak bazı karakterlerdir.
lagingreflex

2
@ laggingreflex Hayır, \7(BEL) genellikle bir sesi tetikleyebilecek tek karakterdir (Wikipedia makalesi Kontrol karakterine bakın ); Ayrıca her zaman bir ses çıkarmayabileceğini unutmayın.
musiphil

3
@ laggingreflex Muhtemelen buna artık ihtiyacın yok ama sadece kahkahalar için;)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'

-wEk motivasyona ihtiyacınız varsa sonsuz döngü :

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

Paket üzerinden 14.04 tarihinde önceden yüklenmiş speech-dispatcher: http://releases.ubuntu.com/trusty/ubuntu-14.04.4-desktop-amd64.manifest , sanırım kör insanlar için?

Ayrıca bir açılır pencere ekle

Bu açılan bir hayat kurtarıcı ( bkısaltmasıdır beep):

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

ve sonra:

super-slow-command;b

Odada bir yerdeysem, duyacağım ve uzun işin bittiğini bileceğim.

Yoksa bilgisayarıma döndüğümde pop-up’ı göreceğim.

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


Almak için spd-sayilişkili aracı speech-dispatcher, şöyle bir alt paketin yüklemeniz gerekebilir speech-dispatcher-utils(Fedora 24).
dfarrell07

9

Sadece sabit sürücünüzden bir ses seçin ve beklediğiniz komuttan hemen sonra çalması için bir komut koyun; sırayla olurlar:

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

(Doğal olarak herhangi bir oyuncuyu kullanabilirsiniz). alertdoneBir ton çalar ve çalıştırıldığında libnotify uyarısı gösteren bir komut dosyası var ; Tam olarak bu vesileyle kullanıyorum:

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

Bu size (benim gerektiren bu onu dayandırabilirsiniz kendi yapmak istiyorum eğer öyleyse, gerçekten basit notify-more, mplayerve ~/tones/alert_1.wavolsa da):

#!/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-moreya notify-sendda gerçekten bir ses çalmak için alternatifler olabilir.
Mikel

@Mikel Ben tamamen serbestleştirmek için bağımlısıyım; sistemimdeki her şey bildirimleri
açar

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

playBir çok temel (hayır UI) ses oynatıcı Sox Sox http://bit.ly/software-small yükleyin paketine. Başka bir komut satırı güdümlü ses çalar ile değiştirebilirsiniz.


Evet, play, aplay, veya paplay. (Ubuntu sistemimde var aplayve paplayvarsayılan olarak.)
Mikel

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.oggçalıştı, teşekkürler.
Martin Thoma

5

Şahsen ben kullanırım my-script && notify-send "done". Bu, Linux Mint'te (Tarçın) şunun gibi görünen bir masaüstü bildirimi gönderir:

görüntü tanımını buraya girin


3

Bunu otomatik olarak da yapabilirsiniz.

Size nasıl girileceğini göstereceğim zsh, sonra hakkında bilgi ekleyeceğim bash.

Özü şuna benziyor:

preexec()
{
    starttime=$SECONDS
}

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

Ayrıca, yalnızca program Python ise, örneğin yapabilirsiniz.

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
}

Olarak bash, en iyi yolu indir etmektir preexec.bash.txt ve kaynak de (örneğin . ~/preexec.bash.txt, aramalarınızdan üstündeki ~/.bashrc, sonra yukarıda (veya kendisine bir şey yakın) çalışmalıdır. (Emin değilim yaklaşık $3komut Python ise biraz kontrol etmek .)

GNOME Terminalini kullanıyorsanız, sizi Yanıp Sönen GNOME Terminaline de işaret ederim . Bir komut yapıldığında terminalin yanıp sönmesini sağlayan bir yama, bu yüzden başka bir şeye Alt-Tab yazabilirsin, sonra ne zaman yapıldığını bilmeni sağlar.


1

Her şeye bir komut eklemeniz gerekmez, aslında bunu sizin için otomatik olarak yapan bir script kullanabilirsiniz. Buna meçhul denir ve Github'da bulunur.

örnek

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

şimdi yeni bash'a başla ve hazırsın. Ses ve alarm, betiği değiştirerek değiştirilebilir.


-1

Herhangi bir oyuncu kullanılabilir. Bütünlüğünü ekliyorum cvlc.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.