शेल स्क्रिप्ट में काम नहीं कर रहा?


87

मैं एक शेल स्क्रिप्ट में बीप साउंड का उपयोग करना चाहता हूं। दुर्भाग्य से मेरे द्वारा Google के माध्यम से प्राप्त कोई भी विधि मेरे लिए काम नहीं करती है।

मैंने कोशिश की

echo -e '\a'

echo -ne '\007'

और कमांड के beepबाद मैंने इसे apt के माध्यम से स्थापित किया।

क्या कारण हो सकता है?


इस बग रिपोर्ट को देखें: bugs.launchpad.net/ubuntu/+source/unity/+bug/769314
23

जवाबों:


93

पहले दौड़ो sudo modprobe pcspkrऔर फिर beepकाम करना चाहिए।

इसका कारण यह नहीं है क्योंकि डिफ़ॉल्ट रूप से उबंटू अब बीप उत्पन्न करने वाले हार्डवेयर ड्राइवर को लोड नहीं करता है।

यदि यह आपके लिए काम करता है, तो pcspkr को लोड करने में सक्षम करने के लिए /etc/modprobe.d/blacklist.confफ़ाइल को स्थायी रूप से संपादित करें ( gksudo geditशायद का उपयोग करके ) और टिप्पणी लाइन कहती है blacklist pcspkrजिससे ऐसा लगता है:

# बदसूरत और जोर से शोर, हर किसी की नसों पर हो रही; यह एक द्वारा किया जाना चाहिए
# अच्छा पल्सीडियो बिंग (उबंटू: # 77010)
# ब्लैकलिस्ट PCspkr

3
अगर मैं टिप्पणी करता blacklist pcspkrहूं कि मुझे modprobe -r pcspkr && modprobe pcspkrइसे काम करने के लिए करना होगा। इसके अलावा काम करने के लिए बीप हो रही है नहीं काम करने के लिए श्रव्य घंटी है और इस तरह हो रही है के रूप में ही askubuntu.com/questions/22168/how-do-i-enable-the-terminal-bell अभी भी खुला होना चाहिए।
daithib8

3
यह मेरे लिए Ubuntu 14. में काम नहीं करता है
Cerin

90

Pcspkr बीप का प्रशंसक नहीं होने के कारण, मैं सिस्टम पल्स में से एक बीप का उपयोग स्थापित पल्सेडियो सर्वर के पपीले कमांड के साथ करता हूं।

पहले अपनी पसंद की ध्वनि ढूंढें (आप उदाहरण के लिए कुछ उपलब्ध लोगों के लिए ब्राउज़ / साझा कर सकते हैं / साझा कर सकते हैं) और इसके लिए एक संदर्भ बना सकते हैं

export BEEP=/usr/share/sounds/ubuntu/ringtones/Harmonics.ogg

फिर यह एक कमांड के रूप में उपलब्ध है

alias beep='paplay $BEEP'

अब beepजब भी जरूरत हो बस चलाएं । उदाहरण के लिए, कमांड समाप्त होने पर आपको अलर्ट करने के लिए:

find . | grep treasure ; beep

1
क्या आप इस ध्वनि को चलाने के लिए इसे प्राप्त कर सकते हैं जब कोई चलाता हैecho -e '\a'
फ्लिम्म डिक

आपको लूप या कुछ अन्य लाइब्रेरी में कुछ रीड कमांड की आवश्यकता हो सकती है जो कि कीस्ट्रोक्स को मोनिटोर कर सकती है।
युवीलियो

2
यह एक महान उपाय है! अब मैं run-my-long-test-suite.sh; beepस्टैकओवरफ्लो कर सकता हूं और तब तक पढ़ सकता हूं जब तक कि सिस्टम तैयार न हो जाए।
jamesc

3
अच्छा! मैं उपयोग करता हूं export BEEP=/usr/share/sounds/ubuntu/stereo/dialog-information.oggऔर alias beep='paplay $BEEP --volume=32768'अब, यह मेरे लिए अच्छा है। (ध्यान दें कि आप के साथ मात्रा ओवरराइड कर सकते हैं beepउर्फ, जैसे beep --volume=15000-12 db की मात्रा में खेलता है।)
leftaroundabout

3
इन ओग फाइलों को खेलने से आंतरिक पीसी स्पीकर बीप की तुलना में अधिक परिमाण के विलंब आदेश हो सकते हैं। इतना ही नहीं कि विलंबता अत्यधिक परिवर्तनशील है। मैं स्वीकार करता हूं कि ज्यादातर लोग परवाह नहीं करते हैं, लेकिन जब आपको वास्तविक समय या वास्तविक समय की जवाबदेही के पास की आवश्यकता होती है, तो पीसी स्पीकर शायद श्रव्य प्रतिक्रिया के लिए सबसे अच्छा विकल्प होता है।
H2ONaCl

21

इस समस्या को लगातार ठीक करने के लिए:

  • भागो gconf-editorऔर अगर desktop | gnome | peripherals | keyboard | bell_modeसेटिंग मौजूद है तब से इसे बदलने offके लिएon
  • भागो dconf-editorऔर अगर org | gnome | settings-daemon | peripherals | keyboard | bell-modeसेटिंग मौजूद है तब से इसे बदलने offके लिएon
  • pactl upload-sample /usr/share/sounds/gnome/default/alerts/glass.ogg bell.oggफ़ाइल में जोड़ें ~/.xprofile(आपको इसकी आवश्यकता gnome-control-center-dataहै glass.ogg)
  • [ "$DISPLAY" ] && xset b 100फ़ाइल में जोड़ें~/.bashrc

इस समाधान को सक्रिय करने का सबसे सरल तरीका रीबूट करना है।

इसके अलावा, इस समाधान को तुरंत लागू करने के लिए एक टर्मिनल विंडो के लिए जो पहले से खुली है, pactlकमांड चलाएं और xsetविचाराधीन टर्मिनल विंडो में कमांड चलाएं ।


मैंने pactl upload-sampleकमांड को शेल स्क्रिप्ट में रखा है , लेकिन आपका तरीका अधिक व्यवस्थित है। धन्यवाद!
JoBu1324

यदि आप इसमें pactlकमांड डालते ~/.xprofileहैं तो GUI सत्र की शुरुआत में निष्पादित हो जाता है।
jdthood

सेटिंग का dconf-editorसंस्करण bell-modeलगता है org.gnome.settings-daemon.peripherals.keyboard
लार्जो

@lgarzo: टिप के लिए धन्यवाद। मैं जवाब अपडेट कर दूंगा।
jdthood

1
@ Hibou57: सुनिश्चित करें कि आपके पास glass.oggस्थापित पैकेज है
Janus Troelsen

21

चूंकि यह Google पर बहुत उच्च श्रेणी का प्रश्न है, इसलिए मैं कंसोल और X11 में बीप को फिर से सक्षम करने के लिए किए गए कदमों को जोड़ूंगा:


लिनक्स कंसोल ( CTRL+ ALT+ F1... F6) के लिए:

यह डिफ़ॉल्ट रूप से क्यों काम नहीं करता है

जैसा कि पहले ही उत्तर दिया गया है , pcspkrपीसी स्पीकर के लिए कर्नेल ड्राइवर को उबंटू में ब्लैकलिस्ट किया गया है।

रिबूट तक अस्थायी रूप से सक्षम करें:

sudo modprobe pcspkr

स्वचालित रूप से बूट पर सक्षम करें:

sudo nano /etc/modprobe.d/blacklist.conf

( pcspkrइसे मिटाकर टिप्पणी लाइन को #)


X11 टर्मिनलों के लिए (जैसे डिफ़ॉल्ट gnome-terminal)

यह डिफ़ॉल्ट रूप से क्यों काम नहीं करता है

X के तहत, जैसे कि यूनिटी, केडीई, गनोम शेल का उपयोग करते समय, बीप की घटनाओं को पल्सएडियो द्वारा धन्यवाद पर कब्जा कर लिया जाता है module-x11-bell, जिसे डिफ़ॉल्ट रूप से लोड किया जाता है /usr/bin/start-pulseaudio-x11। और ध्वनि नमूना पल्सएडियो बीप पर बजाता है bell.ogg, डिफ़ॉल्ट रूप से रिक्त है। इसके अतिरिक्त, घंटी की मात्रा म्यूट की जा सकती है।

वर्तमान सत्र के लिए अस्थायी रूप से सक्षम करने के लिए,

xset b 100  # perhaps not needed, on my system it was 40 by default
pactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg

अन्य उपयुक्त नमूने हैं /usr/share/soundsजिन पर आप प्रयास कर सकते हैं , उदाहरण के लिए लोगों की जाँच करें/usr/share/sounds/gnome/default/alerts/

ध्यान दें कि beepकार्यक्रम वास्तव में आवश्यक नहीं है। लेकिन अगर स्थापित है, यह पीसी अध्यक्ष का उपयोग करता है। यह एकमात्र तरीका था जो मुझे एक्स के तहत बजर को सक्षम करने के लिए मिल सकता था:

sudo apt-get install beep

बूट पर स्वचालित रूप से सक्षम करने के लिए, उपरोक्त पंक्तियों को अपने ~/.profileया सिस्टम-वाइड पर जोड़ें/etc/profile


इसका परीक्षण करने के लिए:

printf '\a'

बीप!

beep

बज़!


स्वचालित रूप से आप वास्तव में करने के लिए है बूट पर एक पीसी स्पीकर बीप सक्षम करने के लिए टिप्पणी कहा में लाइन /etc/modprobe.d/blacklist.conf यह uncomment नहीं (आप, काली सूची में डाले अक्षम करना चाहते आसपास नहीं दूसरी तरह)।
z33k

1
दोनों समाधान Ubuntu 16.04 नोट पर काम करते हैं : pcspkrऔर bell.oggस्वतंत्र दृष्टिकोण हैं। beepविभिन्न दृष्टिकोणों का उपयोग करके बीप करने की कोशिश करता है, ioctl(console_fd, KIOCSOUND, period)उपयोग करें pcspkr(मदरबोर्ड पर पीसी स्पीकर से ध्वनि आ रही है), जबकि- printf '\a'आधारित विधि केवल इसका उपयोग किए बिना काम कर सकती है bell.ogg(ध्वनि सामान्य वक्ताओं से है)। दूसरी विधि तब तकxset b on
jfs

pactl upload-sample ...मेरे लिए सुनहरा था। फिर से नमूना लोड करने को स्थायी रूप से कॉन्फ़िगर करने का तरीका क्या है?
२०:१५ पर ulidtko

@ulidtko: बस उन पंक्तियों की पंक्तियों को अपने में ~/.profile, या सिस्टम-वाइड में जोड़ें/etc/profile
MestreLion

@MestreLion गलत है। load-sample bell.ogg /usr/share/sounds/ubuntu/stereo/bell.oggमें है /etc/pulseaudio/default.pa
ulidtko

15

मैंने पहले भी इस समस्या का सामना किया है। मुझे जो याद है, उससे समस्या यह है कि टर्मिनल घंटी एक आंतरिक कंप्यूटर स्पीकर (एक पुराने स्कूल के डेस्कटॉप के रूप में) को बजाने की कोशिश करती है, लेकिन लैपटॉप और कुछ नए कंप्यूटर ऐसी चीज को याद कर रहे हैं।

एकमात्र समाधान जो मुझे उस समय मिला sudo apt-get install soxऔर था

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>

जैसे

 play -n synth 0.1 sine 880 vol 0.5

मेरे समाधान का प्रयास करें - मुझे यह जानना अच्छा लगेगा कि क्या यह आपके लिए काम करता है!
JoBu1324

आप इसके लिए स्पीकर-टेस्ट का भी इस्तेमाल कर सकते हैं
जानुस ट्रॉल्सन

1
आप एक अच्छा गिटार प्लक टोन भी कर सकते हैं play -q -n synth 2 pluck C5:। C5 नोट है।
पाब्लो ए

3

मुझे आखिरकार एक समाधान मिला, जिसके alsamixerलिए पीसी बीप विकल्प की आवश्यकता नहीं है । मुझे लगता है कि मुझे अपने सभी बदलाव याद हैं:

निम्नलिखित में असुविधा /etc/pulse/default.pa:

load-sample-lazy x11-bell /usr/share/sounds/ubuntu/stereo/bell.ogg
load-module module-x11-bell sample=bell-windowing-system

इस बग के अनुसार , दौड़ेंpactl upload-sample /usr/share/sounds/ubuntu/stereo/bell.ogg bell.ogg


इस की कोशिश की, मुझे संधि दी Connection failure: Connection refused pa_context_connect() failed: Connection refused
योद्दा कोडा

शायद यह धागा मदद करेगा - यदि आपने कभी मूल के रूप में पल्सेडियो को चलाया है।
JoBu1324

मुझे वास्तव में एक अलग समस्या हो रही है। Pulseaudio फेंकता है Failed to open module "module-esound-protocol-unix": file not found। 13.04 चल रहा है, शायद यहाँ चर्चा के लायक नहीं है, हालांकि मैं आपके समाधान को सत्यापित करने में सक्षम होना पसंद करूंगा।
YodaDaCoda

अच्छा, 15.04 के लिए बस थोड़ी अलग लाइनें।
वीआरआर

2

यदि आपके पास कंप्यूटर से जुड़े वास्तविक स्पीकर हैं और आपको बीप नहीं मिल रहा है, तो इसकी संभावना है क्योंकि आप कंपिज़ का उपयोग कर रहे हैं। Compiz बीप्स को पकड़ने के लिए पल्सीडियो पर भरोसा कर रहा है और उन्हें प्ले कर रहा है जबकि मेटिनेस सामान्य सेटअप को बायपास करता है और बीप साउंड बजाने के लिए libcanberra का उपयोग करता है। अगर यह मेटासिटी के साथ काम करता है और यह नहीं समझ पाता है कि आपकी समस्या है, अन्यथा दिया गया जवाब हिस्टोरिक है।


2

3
"डिफ़ॉल्ट रूप से सक्षम नहीं" का मतलब टूटा हुआ नहीं है, और कोई "वीरतापूर्ण प्रयास" की आवश्यकता नहीं है: बस modprobe pcsprk(कंसोल में) या pactl upload-sample ...X11 में और कष्टप्रद बीप वापस आ गया है :)
MestreLion

2

" बीप केवल तभी काम करता है जब आपके पीसी में एक 'स्पीकर' हो। कई आधुनिक लैपटॉप / छोटे डिवाइस में एक नहीं है"।

इस तरह से एक ध्वनि बजाने की कोशिश करें: play xxxxx.wav मुझे एक अच्छी wav फ़ाइल मिली जो छोटी और प्यारी लगती है, लेकिन आप अपना खुद का भी चुन सकते हैं। मेरे लिए काम करता है जब बाकी सब विफल हो गया।


इसके लिए धन्यवाद: tredegar & hk_centos


1

एक वैकल्पिक दृष्टिकोण - अपने xterm / कंसोल को "विज़ुअल बेल" पर सेट करें ताकि जब यह बीप हो जाए, तो विंडो थोड़े समय के लिए अपने रंगों को निष्क्रिय कर देती है।

एक आदेश समाप्त होने के बाद मेरा ध्यान आकर्षित करने के लिए मेरे पास बीप फ़ंक्शन है जिसे बीप कहा जाता है।

beep ()  { while true; do  echo -en '\a'; sleep 1; done }

और यह इस तरह से उपयोग किया जाता है

longrun-command ; beep

0

यह भविष्य के लड़के के लिए देर से BUT हो सकता है, इसके लिए देख रहे हैं:

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