मैं अपने पीसी स्पीकर को बीप कैसे बना सकता हूं


171

बैश का उपयोग करके, मैं पीसी स्पीकर को बीप कैसे बना सकता हूं?

कुछ echo 'beepsound' > /dev/pcspkrअच्छा होगा।



जवाबों:


124

मैं आमतौर beepपर कई प्रणालियों पर स्थापित छोटी उपयोगिता का उपयोग करता हूं । यह कमांड सिस्टम साउंड बनाने के लिए विभिन्न तरीकों की कोशिश करेगा।

beepमैनपेज से ध्वनि बनाने के 3 तरीके हैं :

  1. शेल स्क्रिप्ट में बीप के निर्माण की पारंपरिक विधि मानक उत्पादन के लिए ASCII BEL( \007) चरित्र लिखना है , शेल के माध्यम से जैसे

    echo -ne '\007'
    

    यह केवल तभी काम करता है जब कॉलिंग शेल का मानक आउटपुट वर्तमान में किसी प्रकार के टर्मिनल डिवाइस को निर्देशित किया जाता है; यदि नहीं, तो बीप से कोई आवाज नहीं निकलेगी और आउटपुट को निर्देशित करने वाली फ़ाइल में अवांछित भ्रष्टाचार भी हो सकता है।

  2. बीपिंग शोर के अन्य तरीके हैं। एक और अधिक विश्वसनीय तरीका /dev/ttyवहाँ अपने बीईएल चरित्र को खोलना और भेजना है। यह आई / ओ पुनर्निर्देशन के खिलाफ मजबूत है, लेकिन अभी भी उस मामले में विफल रहता है जहां बीप उत्पन्न करने की इच्छा रखने वाले शेल स्क्रिप्ट में एक नियंत्रित टर्मिनल नहीं है, उदाहरण के लिए क्योंकि यह एक एक्स विंडो प्रबंधक से चलाया जाता है।

  3. एक तीसरा तरीका यह है कि आप अपने एक्स डिस्प्ले से कनेक्ट करें और इसे एक घंटी कमांड भेजें। यह एक यूनिक्स टर्मिनल डिवाइस पर निर्भर नहीं करता है, लेकिन (निश्चित रूप से) एक एक्स डिस्प्ले की आवश्यकता होती है।

beep बस इन 3 तरीकों की कोशिश करेंगे।


9
beepकमांड का होमपेज है: johnath.com/beep उबंटू / डेबियन पर, आप इसे स्थापित कर सकते हैं apt-get install beep
रिक्कार्डो मुर्री

14
लाइनक्स पर, बीपिंग के लिए एक चौथा बदमाश विधि है: pcspkrमॉड्यूल को अनलोड करें , लोड करें snd-pcspऔर अब आपके पास एक एल्सा साउंडकार्ड है जो पुराने-स्कूल ट्रिक्स का उपयोग करता है जो वास्तव में आपके आंतरिक स्पीकर को डिजिटल ध्वनि खिलाता है। यह पीजोइलेक्ट्रिक आंतरिक वक्ताओं के साथ भद्दा परिणाम देता है, लेकिन शास्त्रीय आंतरिक वक्ताओं पर, यह जो है उसके लिए गुणवत्ता काफी अच्छी है। इस तरह, आप अपने बीप ध्वनियों के लिए बहुत अधिक रचनात्मक प्राप्त कर सकते हैं;)
बैच

8
@isomorphismes: pcspkrऔर snd-pcspमॉड्यूल हैं, पैकेज नहीं। उपयोग modprobe/ modprobe -r/ lsmodउन्हें हेरफेर करने के लिए। आपकी जानकारी के लिए, वे linux-image-somethingपैकेज में हैं, जो उम्मीद है कि पहले से ही स्थापित है (या आपके पास कोई लिनक्स कर्नेल नहीं होगा)।
बैच 17

3
बीप आमतौर पर डेबियन के लिए बॉक्स का काम करता है, लेकिन मुझे ubuntu
mchid

4
जैसा कि mchid ने कहा, मॉड्यूल को जोड़ने के बाद: modprobe snd-pcspबीप अब काम कर रहा है!
लेप

72

बस गूंज रहा है \aया \07मेरे लिए काम करता है।

$ echo -e "\a"

यह संभवतः pcspkrकर्नेल मॉड्यूल को लोड करने की आवश्यकता होगी । मैंने इसे केवल आरएचईएल पर परीक्षण किया है, इसलिए वाईएमएमवी।

अपडेट करें

जैसा कि वॉरेन ने टिप्पणियों में बताया है, एसएसएच के माध्यम से दूरस्थ रूप से लॉग इन करने पर यह काम नहीं कर सकता है। एक त्वरित समाधान टीटीवाई उपकरणों में से किसी के लिए आउटपुट को पुनर्निर्देशित करना होगा (आदर्श रूप से एक जो अप्रयुक्त है)। उदाहरण के लिए:

$ echo -en "\a" > /dev/tty5

5
यदि आप X टर्मिनल का उपयोग कर रहे हैं या मशीन में ssh'd हैं, तो यह टर्मिनल को फ्लैश करने का कारण बन सकता है, क्योंकि कई xterm / vt100 प्रकार के प्रोग्राम को BEL अक्षरों के लिए करने के लिए कॉन्फ़िगर किया गया है।
वॉरेन यंग

2
यह समझ में आता है, लेकिन यह मेरे लिए Ubuntu 12.04 पर काम नहीं करता था।
isomorphismes 16

2
@isomorphismes: यह कन्सोल के लिए है, X11 टर्मिनलों के लिए नहीं। एक्स के तहत
बीप्स के लिए

1
@isomorphismes: मैं भी Ubuntu 12.04 का उपयोग कर रहा है, और के लिए मुझे sudo modprobe pcspkrया तो के माध्यम से, वीटी के तहत बीप सक्षम करने के लिए पर्याप्त था printf "\a"या beepउपयोगिता।
MestreLion

3
मेरे लिए कोई भी तरीका काम नहीं करता है। Ubuntu 16.04.1 LTS
ar2015

67

नोट: यह समाधान वक्ताओं से बीप का उत्सर्जन करता है , मदरबोर्ड से नहीं ।

ALSA स्पीकर-टेस्ट , एक कमांड-लाइन स्पीकर टेस्ट टोन जनरेटर के साथ आता है , जिसका उपयोग बीप उत्पन्न करने के लिए किया जा सकता है:

$ speaker-test -t sine -f 1000 -l 1

इस आर्क लाइनक्स फोरम थ्रेड को देखें ।

हालाँकि, बीप अवधि मनमानी होगी, लेकिन इसे निम्नानुसार नियंत्रित किया जा सकता है:

$ ( speaker-test -t sine -f 1000 )& pid=$! ; sleep 0.1s ; kill -9 $pid

हम इसे एक कदम आगे ले जा सकते हैं और इस फ़ंक्शन के साथ बीप का उत्पादन कर सकते हैं:

_alarm() {
  ( \speaker-test --frequency $1 --test sine )&
  pid=$!
  \sleep 0.${2}s
  \kill -9 $pid
}

जिसे आवृत्ति और अवधि के तर्कों के साथ कहा जाता है:

$ _alarm 400 200

इसे ध्यान में रखते हुए, सरल संगीत बनाना संभव है speaker-testइस शेल स्क्रिप्ट को देखें ।


1
एक-लाइनर (और Ctrl-C संगत) के रूप में आपका कार्य:timeout ${2} speaker-test --frequency ${1} --test sine
user569825

1
पीआईडी ​​को बचाने के लिए कोई वास्तविक आवश्यकता नहीं है, बस speaker-test -t sine -f 1000 -l 1 & sleep .2 && kill -9 $! यही काम करता है। वैसे भी, @ user569825 का तरीका अच्छा है।
erm3nda


17

अगर साउंडकार्ड का उपयोग किया soxजाता है और यदि पीसी स्पीकर नहीं है तो:

$ play -q -n synth 0.1 sin 880 || echo -e "\a"

sox अधिकांश डिस्ट्रो के लिए उपलब्ध है।


2
+1 मुझे नहीं पता था कि नाटक में यह सुविधा थी। एक निश्चित शर्त पूरी होने पर मुझे सूचित करने के लिए मैंने एक thenब्लॉक में इसका उपयोग watchकिया। यहां तक ​​कि मुझे अपने हेडफोन को चालू रखने देता है। यह मेरे लिए बहुत उपयोगी था।
andyortlieb

एक पार्टी श खेलने से शायद की आवश्यकता होगीsudo -u USER play...
intika

मेरे सिस्टम पर, playएक उपयोगकर्ता के रूप में, पल्सेडियो का उपयोग करता है। मुझे लगता है कि यह सिस्टम कॉन्फ़िगरेशन पर निर्भर करता है।
अलेक्जेंडर

13

कुछ डिस्ट्रोस को इसे प्राप्त करने के लिए कमांड-लाइन उपयोगिताओं हैं। शायद आप हमें बता सकते हैं कि आप किस डिस्ट्रो पर हैं, या खोज (जैसे emerge -s beepजेंटू में)।

"उपलब्ध" बर्तनों से परे जाकर, आप एक पर्ल स्क्रिप्ट भी बना सकते हैं जो बीप का उत्सर्जन करती है, आपको केवल इतना करना है:

<SomeCodeBefore>
print "\007";
<SomeCodeAfter>  

यदि आप 'बीप' को समाप्त करते हैं, तो निम्नलिखित प्रयास करें:

#! /bin/sh 

beep -f 500 -l 700 
beep -f 480 -l 400 
beep -f 470 -l 250 
beep -f 530 -l 300 -D 100 
beep -f 500 -l 300 -D 100 
beep -f 500 -l 300 
beep -f 400 -l 600 
beep -f 300 -l 500 
beep -f 350 -l 700 
beep -f 250 -l 600

मैं अपने सवालों को डिस्ट्रो-अज्ञेय बने रहना पसंद करता हूं, क्या पर्ल के echo -e "\007"बजाय बैश में काम करेंगे print "\007?
स्टीफन

1
@ सत्तेफान - बीप बहुत ज्यादा 'यूनिवर्सल' है। हालाँकि, आप 'इको-ई "\" ए "या' इको-ई" \ "07" का उपयोग करके डिस्ट्रो एग्नोस्टिक बने रह सकते हैं। चीयर्स!
वर्मिंट्रूड

2
इसके printf '\007'बजाय इसका उपयोग करना अधिक पोर्टेबल होगा echo
डेनिस विलियमसन

3

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

इसके बजाय ध्वनि बजाने का प्रयास करें:

$ play xxxxx.wav

मेरे लिए काम किया, जब बाकी सब विफल रहा।

संदर्भ


2

प्रयत्न, कोशिश

इको-एन Ctrl+ V Ctrl+G

नकारात्मक पक्ष यह है कि यह केवल तब काम करेगा जब आउटपुट डिवाइस एक टर्मिनल है, इसलिए यह क्रॉन जॉब के अंदर काम नहीं कर सकता है, उदाहरण के लिए। (लेकिन अगर आप जड़ हैं तो आप /dev/consoleतत्काल बीपिंग के लिए पुनर्निर्देशित कर सकते हैं ।)


1

लिनक्स पर, जैसे उपकरण beepकिसी दिए गए ध्वनि का उत्सर्जन करने के लिए कंसोल डिवाइस पर एक ioctl का उपयोग कर सकते हैं। अधिक विशिष्ट होने के beepलिए, KIOCSOUNDioctl का उपयोग करेगा , लेकिन एक KDMKTONEioctl भी है जिसका उपयोग ध्वनि उत्पन्न करने के लिए किया जा सकता है।

जैसा कि मैं इसे समझता हूं, पूर्व एक ध्वनि शुरू करता है जो स्पष्ट रूप से रद्द होने तक रहता है, जबकि बाद वाला पूर्व-निर्धारित अवधि का एक बीप बनाएगा। विवरण के लिए console_ioctl(4) मैन पेज देखें।

तो अगर आप क्या beepकरता है से नाखुश हैं , तो आप इन ioctls को सीधे एक्सेस करने के लिए कोड की कुछ लाइनें लिख सकते हैं। यह मानते हुए कि आपके पास पूरी पहुंच है /dev/console, जिसे रूट विशेषाधिकारों की आवश्यकता हो सकती है।


-1

एक टर्मिनल में, Ctrl+ Gऔर फिर दबाएँEnter


1
मेरे टर्मिनल (सूक्ति-टर्मिनल) में, यह एंटर के बिना काम करता है। पीसी स्पीकर के परीक्षण के रूप में, यह मुझे ठीक लगता है। यह लिपियों में बिल्कुल बेकार है, यद्यपि।
पलक

हैरान कर देने वाला डाउनवोट्स। यह कुछ पीसी पर काम करता है, यह सभी पर काम नहीं कर सकता है।
ज़ज़च ...

यह rxvt, urxvt, xterm, lxterm या lxterminal पर काम नहीं करता है, क्या मेरा टर्मिनल कम से कम फ्लैश नहीं होना चाहिए अगर इसमें विजुअल बेल है?
विलेम

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