क्या पूंछ-बी बीप बनाने का कोई तरीका है?


23

क्या नया डेटा आने पर (एक टर्मिनल में घंटी बजती है) बीप बनाने tail -Fया lessबीप करने का एक तरीका है (फ़ाइल में एक नई लाइन जोड़ी जाती है)। या वहाँ एक लिनक्स या मैक पर ऐसा करने के लिए कोई अन्य यूनिक्स उपयोगिता है।

जवाबों:


13

एक विचार माइग्रेशन के tailमाध्यम से आउटपुट को पाइप करने sedऔर घंटी / न्यूलाइन के साथ नई लाइन को बदलने के लिए होना चाहिए ।

लेकिन अगर आप tailएक x- विंडो के भीतर उपयोग करते हैं तो एक आसान समाधान है । जब खिड़की की सामग्री बदल जाती है, तो कोई कार्रवाई निष्पादित कर सकता है (झिलमिलाहट, घंटी, जो भी हो)।


4
नई पंक्ति को प्रतिस्थापित न करें, इसे पंक्ति के अंत में जोड़ें।
केविन

@ निल्स, यह sedआइडिया शानदार है, लेकिन मैं इसे काम करने के लिए पर्याप्त ' सेड ' नहीं जानता, ऐसा लग रहा है कि मैं सामान्य तरीके से rexxpt में न्यूलाइन को कैप्चर कर सकता हूं (जिसका मैं उपयोग कर रहा हूं), मुझे लगता है कि मुझे सेड बताने की जरूरत है आने वाली धारा को रेखा द्वारा व्याख्या न करें।
अली

5
@ वास्तव में, sed लाइन द्वारा लाइन कार्य करता है और आप सीधे newlines नहीं देखते हैं। प्रत्येक पंक्ति के अंत में (ksh / bash / zsh वाक्य रचना में बेल वर्ण) sed -e $'s/$/\a/'जोड़ता है $'\a'
गाइल्स का एसओ- बुराई पर रोक '23

धन्यवाद @Gilles, एक आकर्षण की तरह काम किया (एक मैक पर भी)! sedregexpt मेरी भोली आँखों के लिए थोड़ा अजीब है।
अली

1
@ गिल्स: ध्यान दें कि $'...'वाक्यविन्यास सार्वभौमिक नहीं है। उदाहरण के लिए, [t] csh इसका समर्थन नहीं करता है।
कीथ थॉम्पसन

13

यदि आप GNU का उपयोग करते हैं screen, तो आप इसे पूंछ के साथ विंडो को "देखने" के लिए सेट कर सकते हैं, और यह आपको अपने स्टेटस बार में, या आपके टर्मकैप के परिभाषित बेल द्वारा सूचित करेगा, कि उस विंडो में नया आउटपुट है।

http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor


संपादित करें: जब आप मैक ओएस एक्स का उल्लेख करते हैं, तो बस इसे जोड़ना था

सिर्फ मनोरंजन के लिए, यदि आप विशेष रूप से कुछ खोज रहे थे, तो sayआप जिस फ़ाइल को देख रहे हैं, उसे पढ़ने के लिए आप मैक ओएस एक्स के कमांड का उपयोग कर सकते हैं । बस logtailआज्ञा प्राप्त करें , से:

http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/

और इसे स्क्रिप्ट में उपयोग करें जैसे:

#!/bin/bash

file=$1
offset=$(basename "$1")

# while true... let this thing run until it's killed...
while true; do
    output=$(/usr/local/bin/logtail $file .${offset}.offset)
    if [ ! -z "$output" ]; then

        # print the output and say ding
        echo "$output" && say ding
        # to have the file read aloud to you, uncomment the following:
        say "$output"

        fi
    # recheck every 5 seconds
    sleep 5
done

धन्यवाद @ टिम, screenशो और अलर्ट (मुझे लगता है कि मैं इसे घंटी भी बजा सकता हूं) केवल ONCE। हर होने वाली नई घटना के लिए नहीं (उपलब्ध होने वाली हर नई पंक्ति के लिए नहीं)
अली

1
मैंने मैक के लिए एक उदाहरण जोड़ा है जो आपको फ़ाइल पढ़ सकता है। आप लॉगऑन के लिनक्स संस्करण को स्थापित करके और beepइसके बजाय कमांड का उपयोग करके लिनक्स के लिए काम कर सकते हैं say
टिम कैनेडी

ठंडा! यह रचनात्मक है, हालांकि मेरे मामले में मैं स्क्रीन को देखे बिना लॉग फ़ाइल की निगरानी करने में सक्षम होने के लिए बीप का उपयोग कर रहा हूं। और वास्तविक बीप एक आवाज से बेहतर हो सकती है।
अली

1
execइसे करने के लिए स्क्रीन कमांड का भी उपयोग कर सकते हैं । मैनपेज में उदाहरण वह है !:sed -n s/.*Error.*/\007/pजो हर बार घंटी भेजेगा "त्रुटि" उस विंडो में प्रदर्शित होता है।
Arcege

Tmux पर भी यही लागू होता है।
0xC0000022L

10

आप मल्टीटैल का उपयोग कर सकते हैं । यह एक बढ़ी हुई पूंछ है जो नियमित अभिव्यक्ति मैच पर कमांड निष्पादन का समर्थन करती है।

उदाहरण के लिए, निम्न कमांड एक साउंड बजाता है और हर बार एक मार्टियन सोर्स पैकेट लॉग होने पर xmessage विंडो खोलता है।

multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages

4

सिर्फ रिकॉर्ड के लिए, जैसा कि @ निल्स ने सुझाव दिया है कि मैं प्रत्येक पंक्ति में sedएक जोड़ने के लिए उपयोग कर रहा हूं bell

sed@Gilles द्वारा प्रदान की लाइन

sed -e $'s/$/\a/' 

मेरे मैक पर काम करता है (मैं अपने टर्मिनल \ वरीयताओं \ उन्नत में "श्रव्य घंटी" और "दृश्य घंटी" सक्षम)।


ध्यान दें कि $'...'बच अनुक्रम एक बैश-केवल एक चीज है।
एम्फ़ैटेमाचिन

@amphetamachine धन्यवाद, जबकि मैं खुद बैश उपयोगकर्ता हूं, यह अच्छा होगा यदि आप या अन्य ऐसे संस्करण जोड़ सकते हैं जो अन्य गोले पर भी काम करेंगे।
अली

मैं भी एक बैश उपयोगकर्ता हूं , लेकिन मैं धीरे-धीरे सीख रहा हूं कि अन्य गोले में क्या काम करेगा और क्या नहीं।
एम्फेटामैचिन

1

किसी और को जो इस पृष्ठ को पाता है, मैं tcsh का उपयोग कर रहा हूं और यह काम करने लगता है:

tail -f changingfile | sed -e 's/.*/& \a/'

मुझसे मत पूछिए कि sed वाक्यविन्यास का अर्थ क्या है ...


1
मैं खुद की मदद नहीं कर सकता, मैं पूछना चाहता हूं, क्या आप sed अभिव्यक्ति की व्याख्या कर सकते हैं?
अश्वनी अग्रवाल

0

आप konsoleकिसी भी टैब में नई गतिविधि (या मौन) पर सतर्क रहने की कोशिश कर सकते हैं ।


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