मैंने एक टर्मिनल के माध्यम से एक लंबी प्रक्रिया शुरू की है। क्या प्रक्रिया पूरी होते ही उबंटू टर्मिनल को आवाज देना संभव है? इस तरह, मुझे जाँच रखने की आवश्यकता नहीं है, बल्कि एक ध्वनि के माध्यम से सूचित किया जाएगा।
मैंने एक टर्मिनल के माध्यम से एक लंबी प्रक्रिया शुरू की है। क्या प्रक्रिया पूरी होते ही उबंटू टर्मिनल को आवाज देना संभव है? इस तरह, मुझे जाँच रखने की आवश्यकता नहीं है, बल्कि एक ध्वनि के माध्यम से सूचित किया जाएगा।
जवाबों:
अपनी स्क्रिप्ट के अंत में सूटिंग कमांड डालकर इसे पूरा करने के लिए कम से कम तीन कमांड लाइन तरीके हैं जिन्हें आप अपने विवरण के लिए आमंत्रित कर सकते हैं:
"शास्त्रीय" ध्वनि बजाने का तरीका पीसी स्पीकर के माध्यम से बीप का उपयोग करना है। हालांकि यह सभी मामलों में काम नहीं करेगा (जैसे कि मेरे सिस्टम में पीसी स्पीकर पूरी तरह से अक्षम हैं) और आपको कर्नेल मॉड्यूल को pscpkr को हटाने /etc/modprobe/blacklist.conf
और लोड करने की आवश्यकता होगी pcspkr
।
sudo sed -i 's/blacklist pcspkr/#blacklist pcspkr/g' /etc/modprobe.d/blacklist.conf
sudo modprobe pcspkr
beep [optional parameters]
हम भी aplay (डिफ़ॉल्ट रूप से स्थापित) का उपयोग कर wav प्रारूप में किसी भी ध्वनि फ़ाइल खेल सकते हैं:
aplay /usr/share/sounds/alsa/Side_Right.wav
दूसरा तरीका यह है कि आपके सिस्टम में ( libsndfile
) में किसी भी ध्वनि फ़ाइलों के प्लेबैक को सक्षम करने के लिए pulseaudio कमांड लाइन इंटरफेस का उपयोग डिफ़ॉल्ट ऑडियो फिटनेस पर पहचान करता है:
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
हम डिफ़ॉल्ट ध्वनि फ़ाइलों का उपयोग कर सकते हैं /usr/share/sounds/
, या किसी अन्य ध्वनि फ़ाइल का हमारे पास एक अलग स्थान हो सकता है।
बस इसका उल्लेख करने के लिए , जासूसी का दुरुपयोग करके इसे प्राप्त करने का एक और अच्छा तरीका है , जो कि डिफ़ॉल्ट रूप से उबंटू <= 12.04 में स्थापित है। निम्न उदाहरण देखें, या सुनें:
#! /bin/bash
c=10; while [ $c -ge 0 ]; do espeak $c; let c--; done; sleep 1 ## here lengthy code
espeak "We are done with counting"
उबंटू में = = 12.10 ओरका स्पीक-डिस्पैचर का उपयोग करता है। हम तब जासूसी स्थापित कर सकते हैं , या वैकल्पिक रूप से उपयोग कर सकते हैं spd-say "Text"
।
spd-say
।
spd-say
उपयोगिता डिफ़ॉल्ट रूप से स्थापित है और यह मेरे सिस्टम पर काम करती है।
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
मैं उपयोग करता हूं
make; spd-say done
जो भी लंबे समय से चल रही कमांड का आप उपयोग करते हैं, उससे "मेक" को बदलें।
spd-say 'get back to work
'। और पहले से स्थापित के रूप में अच्छी तरह से आता है: रिलीज । और -w
अनंत छोरों के लिए while true; do spd-say -w 'get back to work you lazy bum'; done
:।
कमांड खत्म होने के बाद ध्वनि बजाने के लिए:
long-running-command; sn3
(जहां sn3
ध्वनि संख्या 3 है) इसे इसमें डालें .bashrc
:
sound() {
# plays sounds in sequence and waits for them to finish
for s in $@; do
paplay $s
done
}
sn1() {
sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
या अधिक विकल्पों के लिए नीचे पढ़ें:
यहाँ मैं वही उपयोग करता हूं जो आप पूछते हैं - एक अंतर के साथ: यह न केवल एक ध्वनि बजाता है जब कमांड पूरा होता है, लेकिन यह सफलता और त्रुटि पर एक अलग ध्वनि निभाता है । (लेकिन अगर आप इसे पसंद नहीं करते हैं तो आप इसे बदल सकते हैं।)
मेरे पास एक बैश फ़ंक्शन है जिसे oks
मैं लंबे समय तक चलने वाले कमांड के अंत में उपयोग करता हूं:
make && make test && make install; oks
यह एक ध्वनि बजाता है और पिछली कमांड के पूरा होने पर OK या ERROR (त्रुटि कोड के साथ) प्रदर्शित करता है।
यहाँ दो सहायकों के साथ कार्य किया गया है:
sound() {
# plays sounds in sequence and waits for them to finish
for s in $@; do
paplay $s
done
}
soundbg() {
# plays all sounds at the same time in the background
for s in $@; do
# you may need to change 0 to 1 or something else:
pacmd play-file $s 0 >/dev/null
done
}
oks() {
# like ok but with sounds
s=$?
sound_ok=/usr/share/sounds/ubuntu/stereo/dialog-information.ogg
sound_error=/usr/share/sounds/ubuntu/stereo/dialog-warning.ogg
if [[ $s = 0 ]]; then
echo OK
soundbg $sound_ok
else
echo ERROR: $s
soundbg $sound_error
fi
}
आप इसे सीधे अपने ~ / .bashrc में डाल सकते हैं या किसी अन्य फ़ाइल में रख सकते हैं और फिर इस लाइन को अपने ~ / .ashashrc में डाल सकते हैं:
. ~/path/to/file/with/function
बदलें sound_ok
और sound_error
कुछ अन्य ध्वनियों के लिए।
आप sound
बनाम के साथ प्रयोग कर सकते हैं soundbg
और बदल सकते हैं sound_ok
और sound_error
कई ध्वनियों के अनुक्रमों का उपयोग कर सकते हैं जो आप चाहते हैं कि परिणाम प्राप्त करना पसंद करते हैं।
अपने सिस्टम पर कुछ अच्छी आवाज़ें खोजने के लिए आप कोशिश कर सकते हैं:
for i in /usr/share/sounds/*/stereo/*; do echo $i; paplay $i; sleep 1; done
यहाँ कुछ ध्वनियाँ हैं जो मैं अक्सर उपयोग करता हूं जो डिफ़ॉल्ट रूप से उबंटू पर उपलब्ध हैं जो सूचनाओं के लिए अच्छे हैं - एसएन 1 जोर से और अच्छा है, स्न 2 बहुत जोर से है और अभी भी बहुत अच्छा है, एसएन 3 बहुत जोर से है और इतना अच्छा नहीं है:
sn1() {
sound /usr/share/sounds/ubuntu/stereo/dialog-information.ogg
}
sn2() {
sound /usr/share/sounds/freedesktop/stereo/complete.oga
}
sn3() {
sound /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
फिर से, आप बदल सकते हैं sound
करने के लिए soundbg
आप ध्वनि को समाप्त करने के लिए (उदाहरण के लिए, जब आप लगता है की एक बहुत खेलते हैं अपनी स्क्रिप्ट को धीमा नहीं करने के लिए) का इंतजार किए बिना पृष्ठभूमि में खेलने के लिए चाहते हैं।
और बस के मामले में - यहाँ एक ही कार्य है, oks
लेकिन बिना आवाज़ के:
ok() {
# prints OK or ERROR and exit status of previous command
s=$?
if [[ $s = 0 ]]; then
echo OK
else
echo ERROR: $s
fi
}
यहां बताया गया है कि आप इसका उपयोग कैसे करते हैं:
सफलता के साथ उदाहरण:
ls / && ls /bin && ls /usr; oks
त्रुटि के साथ उदाहरण:
ls / && ls /bim && ls /usr; oks
व्यवहार में निश्चित रूप से आदेश अधिक पसंद हैं:
make && make test && make install; oks
लेकिन मैंने इस्तेमाल किया ls
ताकि आप जल्दी से देख सकें कि यह कैसे काम करता है।
आप ok
इसके बजाय oks
एक मूक संस्करण के लिए उपयोग कर सकते हैं ।
या आप उपयोग कर सकते हैं जैसे:
ls / && ls /bim && ls /usr; ok; sn1
OK / ERROR प्रिंट करना
मैंने उन कार्यों को GitHub पर रखा, देखें:
स्रोत से डाउनलोड किया जा सकता है:
मैंने soundloop
उपरोक्त रेपो में एक फ़ंक्शन जोड़ा । यह एक ध्वनि बजाता है और इसे Ctrl + C द्वारा बाधित किया जा सकता है (एक साधारण के विपरीत जो while true; do paplay file.ogg; done
काम करने की उम्मीद करेगा लेकिन यह नहीं है) जैसा कि टिप्पणियों में छाया द्वारा पूछा गया है । इसे इस प्रकार लागू किया जाता है:
soundloop() {
set +m
a=`date +%s`
{ paplay $1 & } 2>/dev/null
wait
b=`date +%s`
d=$(($b-$a))
[ $d -eq 0 ] && d=1
while :; do
pacmd play-file $1 0 >/dev/null
sleep $d
done
}
यदि आपको लगता है कि यह जटिल है, तो कृपया अपनी शिकायतें PulseAudio डेवलपर्स के लिए निर्देशित करें।
while true; do paplay ...; done
ताकि मेरे हिट होने तक ध्वनि दोहराई जाए Ctrl+C
, लेकिन जब मैं करता हूं, तो यह टूटता नहीं है। मुझे यह पता लगाने के लिए कोई विशेष विकल्प नहीं मिल रहा man paplay
है कि यह कैसे काम करना है। कोई विचार?
के अनुसार इस\a
चरित्र ASCII कोड 7, जो कंप्यूटर की बीप है निकल जाता है।
इसलिए echo $'\a'
मेरे स्थानीय मशीन पर एक बीप साउंड बनाने के लिए काम करता है, तब भी जब इसे कंप्यूटर पर चलने वाले बैश शेल पर निष्पादित किया जाता है, जो कि मैं एक टर्मिनल इंटरफ़ेस के माध्यम से जुड़ा हुआ हूं जैसे कि PuTTY।
माइकल कुरीज़ के उत्तर पर विस्तार करते हुए, आप बैश प्रिंट ए BEL
( \a
) के माध्यम से चरित्र बना सकते हैं PROMPT_COMMAND
:
PROMPT_COMMAND='printf \\a'
PROMPT_COMMAND
इस तरह से स्थापित करने printf \\a
से प्रत्येक कमांड के अंत में बैश को निष्पादित किया जाएगा, जो टर्मिनल को एक साउंड प्ले करेगा (हालाँकि जैसे कि मुरू बताते हैं, बस प्रॉम्प्ट के रिड्रालेवल को चालू करने से टर्मिनल को ध्वनि बजाएगा, अर्थात ध्वनि खेली जाएगी) हर बार एक नया संकेत तैयार किया जाता है, उदाहरण के लिए जब सिर्फ मार रहा हो ENTER)।
यह एक टर्मिनल विशेषता है, इसलिए यह सभी टर्मिनलों पर काम नहीं कर सकता है; उदाहरण के लिए यह कंसोल में काम नहीं करता है (लेकिन मुझे यकीन है कि यह काम करता है gnome-terminal
और xterm
)।
आदेश
speaker-test
शोर मचाता है। सबसे सरल लेकिन कष्टप्रद समाधान। :-)
शोर सिग्नल को कॉन्फ़िगर करने केspeaker-test(1)
लिए विकल्पों के मैनुअल को देखें ।
command && (say done ; echo done) || (echo error ; say error)
उदाहरण 1: echo alik && (say done ; echo done) || (echo error ; say error)
एक किए गए शब्द में परिणाम होगा।
उदाहरण 2: non_existing_command_error && (say done ; echo done) || (echo error ; say error)
एक त्रुटि शब्द के परिणामस्वरूप होगा।
* आवश्यकताएं gnustep-gui-runtime
-
sudo apt-get install gnustep-gui-runtime
चीयर्स।
मैंने एक सरल और लगभग देशी स्क्रिप्ट बनाई जो साउंड बजाती है और उबंटू के लिए दिए गए संदेश और समय के साथ एक अधिसूचना प्रदर्शित करती है ( Gist ):
#!/bin/sh
# https://gist.github.com/John-Almardeny/04fb95eeb969aa46f031457c7815b07d
# Create a Notification With Sound with a Given Message and Time
# The Downloaded Sound is from Notification Sounds https://notificationsounds.com/
MSSG="$1"
TIME="$2"
# install wget if not found
if ! [ -x "$(command -v wget)" ]; then
echo -e "INSTALLING WGET...\n\n"
sudo apt-get install wget
echo -e "\n\n"
fi
# install at package if not found
if ! [ -x "$(command -v at)" ]; then
echo -e "INSTALLING AT...\n\n"
sudo apt-get install at
echo -e "\n\n"
fi
# install sox if not found
if ! [ -x "$(command -v sox)" ]; then
echo -e "INSTALLING SOX...\n\n"
sudo apt-get install sox
sudo apt-get install sox libsox-fmt-all
echo -e "\n\n"
fi
# download the noti sound if this is first time
# add alias to the bashrc file
if ! [ -f ~/noti/sound.mp3 ]; then
echo -e "DOWNLOADING SOUND...\n\n"
touch ~/noti/sound.mp3 | wget -O ~/noti/sound.mp3 "https://notificationsounds.com/wake-up-tones/rise-and-shine-342/download/mp3"
sudo echo "alias noti=\"sh ~/noti/noti.sh\"" >> ~/.bashrc
source ~/.bashrc
echo -e "\n\n"
fi
# notify with the sound playing and particular given message and time
echo "notify-send \""$MSSG\"" && play ~/noti/sound.mp3" | at $TIME
अपने घर पर एक नई निर्देशिका बनाएं और इसे कॉल करें noti
mkdir ~/noti
टर्मिनल खोलें और निर्देशिका को बदलें noti
cd ~/noti
जारी करने के द्वारा noti.sh निष्पादित करें:
sudo chmod +x noti.sh
इस तरह एक टेस्ट चलाएं:
sh ~/noti/noti.sh "Test" "now"
noti "Hello From Noti" "now +1 minute"
noti "Hello From Noti" "now +5 minutes"
noti "Hello From Noti" "now + 1 hour"
noti "Hello From Noti" "now + 2 days"
noti "Hello From Noti" "4 PM + 2 days"
noti "Hello From Noti" "now + 3 weeks"
noti "Hello From Noti" "now + 4 months"
noti "Hello From Noti" "4:00 PM"
noti "Hello From Noti" "2:30 AM tomorrow"
noti "Hello From Noti" "2:30 PM Fri"
noti "Hello From Noti" "2:30 PM 25.07.18"
sudo apt-get update; noti "Done" "now"
ffmpeg साइन वेव
वहां के न्यूनतम लोगों के लिए, आप 5 सेकंड के लिए 1000 हर्ट्ज साइन खेल सकते हैं:
sudo apt-get install ffmpeg
ffplay -f lavfi -i "sine=frequency=1000:duration=5" -autoexit -nodisp
या हमेशा के लिए जब तक आप Ctrl-C नहीं करते:
ffplay -f lavfi -i "sine=frequency=1000" -nodisp
अधिक जानकारी: https://stackoverflow.com/questions/5109038/linux-sine-wave-audio-generator/57610684#57610684
उबंटू 18.04 में परीक्षण किया गया, ffmpeg 3.4.6।