बैश का उपयोग करके, मैं पीसी स्पीकर को बीप कैसे बना सकता हूं?
कुछ echo 'beepsound' > /dev/pcspkr
अच्छा होगा।
बैश का उपयोग करके, मैं पीसी स्पीकर को बीप कैसे बना सकता हूं?
कुछ echo 'beepsound' > /dev/pcspkr
अच्छा होगा।
जवाबों:
मैं आमतौर beep
पर कई प्रणालियों पर स्थापित छोटी उपयोगिता का उपयोग करता हूं । यह कमांड सिस्टम साउंड बनाने के लिए विभिन्न तरीकों की कोशिश करेगा।
beep
मैनपेज से ध्वनि बनाने के 3 तरीके हैं :
शेल स्क्रिप्ट में बीप के निर्माण की पारंपरिक विधि मानक उत्पादन के लिए ASCII BEL
( \007
) चरित्र लिखना है , शेल के माध्यम से जैसे
echo -ne '\007'
यह केवल तभी काम करता है जब कॉलिंग शेल का मानक आउटपुट वर्तमान में किसी प्रकार के टर्मिनल डिवाइस को निर्देशित किया जाता है; यदि नहीं, तो बीप से कोई आवाज नहीं निकलेगी और आउटपुट को निर्देशित करने वाली फ़ाइल में अवांछित भ्रष्टाचार भी हो सकता है।
बीपिंग शोर के अन्य तरीके हैं। एक और अधिक विश्वसनीय तरीका /dev/tty
वहाँ अपने बीईएल चरित्र को खोलना और भेजना है। यह आई / ओ पुनर्निर्देशन के खिलाफ मजबूत है, लेकिन अभी भी उस मामले में विफल रहता है जहां बीप उत्पन्न करने की इच्छा रखने वाले शेल स्क्रिप्ट में एक नियंत्रित टर्मिनल नहीं है, उदाहरण के लिए क्योंकि यह एक एक्स विंडो प्रबंधक से चलाया जाता है।
एक तीसरा तरीका यह है कि आप अपने एक्स डिस्प्ले से कनेक्ट करें और इसे एक घंटी कमांड भेजें। यह एक यूनिक्स टर्मिनल डिवाइस पर निर्भर नहीं करता है, लेकिन (निश्चित रूप से) एक एक्स डिस्प्ले की आवश्यकता होती है।
beep
बस इन 3 तरीकों की कोशिश करेंगे।
beep
कमांड का होमपेज है: johnath.com/beep उबंटू / डेबियन पर, आप इसे स्थापित कर सकते हैं apt-get install beep
।
pcspkr
मॉड्यूल को अनलोड करें , लोड करें snd-pcsp
और अब आपके पास एक एल्सा साउंडकार्ड है जो पुराने-स्कूल ट्रिक्स का उपयोग करता है जो वास्तव में आपके आंतरिक स्पीकर को डिजिटल ध्वनि खिलाता है। यह पीजोइलेक्ट्रिक आंतरिक वक्ताओं के साथ भद्दा परिणाम देता है, लेकिन शास्त्रीय आंतरिक वक्ताओं पर, यह जो है उसके लिए गुणवत्ता काफी अच्छी है। इस तरह, आप अपने बीप ध्वनियों के लिए बहुत अधिक रचनात्मक प्राप्त कर सकते हैं;)
pcspkr
और snd-pcsp
मॉड्यूल हैं, पैकेज नहीं। उपयोग modprobe
/ modprobe -r
/ lsmod
उन्हें हेरफेर करने के लिए। आपकी जानकारी के लिए, वे linux-image-something
पैकेज में हैं, जो उम्मीद है कि पहले से ही स्थापित है (या आपके पास कोई लिनक्स कर्नेल नहीं होगा)।
modprobe snd-pcsp
बीप अब काम कर रहा है!
बस गूंज रहा है \a
या \07
मेरे लिए काम करता है।
$ echo -e "\a"
यह संभवतः pcspkr
कर्नेल मॉड्यूल को लोड करने की आवश्यकता होगी । मैंने इसे केवल आरएचईएल पर परीक्षण किया है, इसलिए वाईएमएमवी।
जैसा कि वॉरेन ने टिप्पणियों में बताया है, एसएसएच के माध्यम से दूरस्थ रूप से लॉग इन करने पर यह काम नहीं कर सकता है। एक त्वरित समाधान टीटीवाई उपकरणों में से किसी के लिए आउटपुट को पुनर्निर्देशित करना होगा (आदर्श रूप से एक जो अप्रयुक्त है)। उदाहरण के लिए:
$ echo -en "\a" > /dev/tty5
sudo modprobe pcspkr
या तो के माध्यम से, वीटी के तहत बीप सक्षम करने के लिए पर्याप्त था printf "\a"
या beep
उपयोगिता।
Ubuntu 16.04.1 LTS
नोट: यह समाधान वक्ताओं से बीप का उत्सर्जन करता है , मदरबोर्ड से नहीं ।
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
। इस शेल स्क्रिप्ट को देखें ।
timeout ${2} speaker-test --frequency ${1} --test sine
speaker-test -t sine -f 1000 -l 1 & sleep .2 && kill -9 $!
यही काम करता है। वैसे भी, @ user569825 का तरीका अच्छा है।
tput bel
क्योंकि termfo केbel
रूप में परिभाषित करता है
Variable Cap- TCap Description
String name Code
bell bel bl audible signal
(bell) (P)
अगर साउंडकार्ड का उपयोग किया sox
जाता है और यदि पीसी स्पीकर नहीं है तो:
$ play -q -n synth 0.1 sin 880 || echo -e "\a"
sox
अधिकांश डिस्ट्रो के लिए उपलब्ध है।
then
ब्लॉक में इसका उपयोग watch
किया। यहां तक कि मुझे अपने हेडफोन को चालू रखने देता है। यह मेरे लिए बहुत उपयोगी था।
sudo -u USER play...
play
एक उपयोगकर्ता के रूप में, पल्सेडियो का उपयोग करता है। मुझे लगता है कि यह सिस्टम कॉन्फ़िगरेशन पर निर्भर करता है।
कुछ डिस्ट्रोस को इसे प्राप्त करने के लिए कमांड-लाइन उपयोगिताओं हैं। शायद आप हमें बता सकते हैं कि आप किस डिस्ट्रो पर हैं, या खोज (जैसे 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
?
printf '\007'
बजाय इसका उपयोग करना अधिक पोर्टेबल होगा echo
।
" बीप केवल तभी काम करता है जब आपके पीसी में" स्पीकर "होता है। कई आधुनिक लैपटॉप / छोटे डिवाइस में एक नहीं होता है।" - टेडेगर ।
इसके बजाय ध्वनि बजाने का प्रयास करें:
$ play xxxxx.wav
मेरे लिए काम किया, जब बाकी सब विफल रहा।
लिनक्स पर, जैसे उपकरण beep
किसी दिए गए ध्वनि का उत्सर्जन करने के लिए कंसोल डिवाइस पर एक ioctl का उपयोग कर सकते हैं। अधिक विशिष्ट होने के beep
लिए, KIOCSOUND
ioctl का उपयोग करेगा , लेकिन एक KDMKTONE
ioctl भी है जिसका उपयोग ध्वनि उत्पन्न करने के लिए किया जा सकता है।
जैसा कि मैं इसे समझता हूं, पूर्व एक ध्वनि शुरू करता है जो स्पष्ट रूप से रद्द होने तक रहता है, जबकि बाद वाला पूर्व-निर्धारित अवधि का एक बीप बनाएगा। विवरण के लिए console_ioctl
(4) मैन पेज देखें।
तो अगर आप क्या beep
करता है से नाखुश हैं , तो आप इन ioctls को सीधे एक्सेस करने के लिए कोड की कुछ लाइनें लिख सकते हैं। यह मानते हुए कि आपके पास पूरी पहुंच है /dev/console
, जिसे रूट विशेषाधिकारों की आवश्यकता हो सकती है।
एक टर्मिनल में, Ctrl+ Gऔर फिर दबाएँEnter