मैं ग्नू स्क्रीन के नीचे चलने वाली बैश स्क्रिप्ट के भीतर ऑडियो घंटी कैसे बजा सकता हूं?


19

स्क्रीन के बाहर एक कंसोल कंसोल विंडो में अगर मैं टाइप कर रहा हूं, तो कंसोल-256color पर सेट के साथ बैश शेल चला रहा हूं:

इको-एन $ 'ए' या
ईको-एन $ or \
ईजी ’या ./ringbell जहां / .ring की सामग्री है।

#! / Bin / bash
इको-एन $ '\ ईजी'; इको-एन $ '\ ए ’

वे सभी कॉन्फ़िगर ऑडियो घंटी बंद होने का परिणाम है। अगर मैं एक स्क्रीन सेशन दर्ज करता हूं (मेरा .screenrc भी konsole-256color के लिए टर्म सेट करता है) उपरोक्त 3 कमांडों में से केवल दूसरा (echo -n $ '\ eg') ऑडियो घंटी सुनाई देती है। क्या मुझे स्क्रिप्ट को संशोधित करना होगा या यह स्क्रीन के साथ एक समस्या है?

मेरे पास स्क्रीन पैकेज का ubuntu संस्करण 4.1.0 ~ 20120320gitdb59704-9 है।


1
इस प्रश्न का भी संदर्भ लें , हालांकि मैं वास्तव में कीथ के उत्तर को पसंद करता हूं।
फ्रेंकलिन यू

जवाबों:


25

मेमोरी से, Ctrl-G बेल कैरेक्टर है, इसलिए मुझे लगता है कि इसीलिए दूसरा काम किया। लेकिन स्क्रीन को इस बात पर चुना जा सकता है कि वह कौन-सा वर्ण स्वीकार करता है क्योंकि वह कमांड कोड के रूप में Ctrl-A लेता है।

इसे इस्तेमाल करे

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

मुझे यह rosettacode पर मिला , उम्मीद है कि यह आपको कुछ विकल्प देगा


यह स्क्रीन के अंदर या बाहर काम नहीं करता है। अगर मैं infocmp का उपयोग करता हूं तो यह मुझे दिखाता है कि TERM konsole-256color के लिए बेल क्षमता परिभाषित नहीं है, इसलिए यह समझ में आता है। हालाँकि स्क्रीन टर्मो एंट्री बेल को एक tput -T स्क्रीन बेल्ट को परिभाषित करती है लेकिन यह भी काम नहीं करता है।
बॉब

1
अधिक परीक्षण के बाद यह प्रतीत होता है कि tput -T स्क्रीन बेल आखिरकार काम करता है। मेरा प्रारंभिक परीक्षण विफल हो गया क्योंकि मैं एक स्क्रीन के भीतर एक स्क्रीन चला रहा था और बाहरी स्क्रीन को बंद नहीं किया था। टिप के लिए धन्यवाद।
बॉब

0

सबसे अच्छा उपाय: printf '\a'

ऐसा इसलिए है क्योंकि printfअधिकांश गोले में निर्मित अच्छी तरह से काम करता है, और printfलिनक्स / मैक सिस्टम के साथ स्थापित एक समान निष्पादन योग्य संस्करण भी है।

अन्य विकल्प: यदि आपके पास शाप स्थापित है, तो आप भी उपयोग कर सकते हैं: tput bel यदि आप बैश के हाल के संस्करण का उपयोग करते हैं, तो आप इसका उपयोग कर सकते हैं:echo -n '\a'

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