जब स्क्रिप्ट निष्पादन तैयार हो जाता है तो मैं एक ध्वनि कैसे खेल सकता हूं?


44

मैं हर अब और फिर कुछ अजगर स्क्रिप्ट्स को अंजाम दे रहा हूं, जिन्हें अंजाम देने में काफी समय लगता है।

मैं उन्हें इस तरह निष्पादित करता हूं: $ time python MyScript.py

जैसे ही स्क्रिप्ट का निष्पादन हो जाता है, मैं एक ध्वनि कैसे खेल सकता हूं?

मैं Ubuntu 10.10 (सूक्ति डेस्कटॉप) का उपयोग करता हूं।


आप उपयोग कर रहे हैं bashया zsh? वास्तव में इसे बनाने के कुछ तरीके अपने आप होते हैं, लेकिन वे काफी शामिल होते हैं और निर्भर करते हैं कि आप किस शेल का उपयोग कर रहे हैं।
मिकेल

$ इको $ शेल रिटर्न "/ बिन / बैश"
मार्टिन थोमा

जवाबों:


39

ध्वनि चलाने वाले किसी भी आदेश को लागू करें; यह उतना ही सरल हो सकता है

$ time mycommand; printf '\7'

या के रूप में के रूप में जटिल

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

(पंडेसिओ स्थापित होने का अनुमान लगाता है, अपने ध्वनि प्लेयर को प्रतिस्थापित करें, जो आपके डेस्कटॉप वातावरण पर निर्भर करेगा।)


6
+1 paplayसंभवतः "आधुनिक" लिनक्स सिस्टम पर ध्वनि चलाने के लिए उपयोग करने के लिए सबसे अच्छा कमांड है।
मिकेल

4
प्रिंटफ \ _ '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
मार्टिन थोमा

printf '\7'मेरे लिए काम करता है (पैपेल नहीं करता है; (गिट शेल)) लेकिन यह सिर्फ एक बहुत छोटा बीप है । क्या अधिक कोड हैं जो अन्य ध्वनियाँ बनाते हैं? मैंने कोशिश की \6, \8लेकिन वे कुछ पात्र हैं।
लैगिंगसर्प्लेक्स

2
@laggingreflex नहीं, \7(बीईएल) आमतौर पर एकमात्र चरित्र है जो संभवतः एक ध्वनि चलाता है (विकिपीडिया लेख नियंत्रण चरित्र देखें ); ध्यान दें कि यह हमेशा एक ध्वनि नहीं बना सकता है, या तो।
मुशीफिल

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के साथ जुड़े उपकरण speech-dispatcher, आप की तरह किसी सबपैकेज स्थापित करने के लिए आवश्यकता हो सकती है speech-dispatcher-utils(फेडोरा 24)।
dfarrell07

9

बस अपनी हार्ड ड्राइव पर एक आवाज़ उठाओ, और जिस कमांड पर आप प्रतीक्षा कर रहे हैं, उसके ठीक बाद इसे खेलने के लिए एक कमांड डालें; वे क्रमिक रूप से घटित होंगे:

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

(आप किसी भी खिलाड़ी का उपयोग कर सकते हैं, स्वाभाविक रूप से)। मेरे पास एक स्क्रिप्ट है, alertdoneजो एक स्वर बजाती है और जब चलती है तो एक लिबरनोट अलर्ट दिखाती है; मैं इस अवसर के लिए इसका उपयोग करता हूं:

$ 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वास्तव में एक ध्वनि खेलने के लिए उपयोगी विकल्प हो सकता है।
मिकेल

@ मिकेल मैं पूरी तरह से नशे में हूं; अपने सिस्टम पर सब कुछ सूचनाएं पॉप अप होता है
माइकल Mrozek

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

playएक बहुत ही बुनियादी (कोई यूआई) ध्वनि से खिलाड़ी है सॉक्स स्थापित सॉक्स http://bit.ly/software-small पैकेज। आप इसे किसी अन्य कमांड-लाइन-संचालित साउंड प्लेयर द्वारा प्रतिस्थापित कर सकते हैं।


हां, play, aplay, या paplay। (मेरे Ubuntu प्रणाली है aplayऔर paplayडिफ़ॉल्ट रूप से।)
मिकेल

1
time python MyScript.py -n 40; paplay /usr/share/sounds/ubuntu/stereo/desktop-login.oggकाम किया, धन्यवाद।
मार्टिन थोमा

5

व्यक्तिगत रूप से, मैं उपयोग करता हूं my-script && notify-send "done"। यह एक डेस्कटॉप सूचना भेजता है, जो लिनक्स मिंट (दालचीनी) पर इस तरह दिखता है:

यहाँ छवि विवरण दर्ज करें


3

आप इसे स्वचालित रूप से भी कर सकते हैं।

मैं आपको दिखाऊंगा कि किस तरह से zsh, फिर जानकारी जोड़ें bash

सार इस तरह दिखता है:

preexec()
{
    starttime=$SECONDS
}

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

आप इसे केवल तभी कर सकते हैं यदि प्रोग्राम पायथन, उदाहरण के लिए

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

अब नए बैश शुरू करें और आप सेट हैं। स्क्रिप्ट को संशोधित करके ध्वनि और चेतावनी को बदला जा सकता है।


-1

किसी भी खिलाड़ी का इस्तेमाल किया जा सकता है। मैं cvlcपूर्णता के लिए जोड़ रहा हूँ ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.