2013-01-30 6 views
9

मैं यूनिक्स कमांड (संयोजन, शायद) को अपनी आखिरी कई पंक्तियों की एक फ़ाइल को लगातार प्रदर्शित करने के तरीके पर खोजने का प्रयास कर रहा हूं। लेकिन इस प्रदर्शन के दौरान, मैं चाहता हूं कि रोलिंग सामग्री स्क्रीन टॉप तक पहुंचने पर कुछ शीर्ष रेखाएं स्क्रीन टॉप पर हमेशा प्रदर्शित हों।सामग्री की अपनी पिछली कई पंक्तियों की एक फ़ाइल को लगातार प्रदर्शित करने के लिए कैसे करें

क्या यह संभव है?

(1) मान लीजिए मैं फ़ाइल है, "job.sta", पहले 2 पंक्तियां हैं: काम का नाम, पर 2013-जनवरी-30, ... जॉन की नौकरी tab1, Tab2, Tab3 0, 1 , 2, 1, 90, 89 2, 89, 23 ...

(2) इस फ़ाइल में इसकी सामग्री बढ़ रहे हैं अपनी चल रहा है, और मैं नहीं जानता कि क्या लाइन इसे समाप्त करने जा रहा है ।

(3) तो मैं पूंछ कमांड का उपयोग करते समय पहली बार 2 बार प्रदर्शित करना चाहता हूं, जब अद्यतन सामग्री यूनिक्स शैल स्क्रीन शीर्ष तक पहुंच जाती है। मैं फिलहाल पुटी का उपयोग कर रहा हूं।

संदर्भ: http://www.unix.com/unix-dummies-questions-answers/172000-head-tail-how-display-middle-lines.html

+0

मुझे नहीं लगता कि यह सरल खोल आदेशों द्वारा किया जा सकता है। अगर मैं ग़लत हूं तो मेरी गलती सुझाएं। आप स्क्रीन को दो हिस्सों में विभाजित करने के लिए कह रहे हैं, भाग के ऊपर निश्चित 2 लाइनें दिखाती हैं (उस सत्र में पहली बार पहली बार 2 पंक्तियां शामिल होती हैं), और नीचे भाग पूंछ-एफ की तरह sth दिखाता है ... यह शीर्ष कमांड की तरह दिखता है .. बदले में नहीं बल्कि स्क्रॉलिंग में। – Kent

उत्तर

10

यह हर 2 सेकंड बल्कि जब भी डेटा फ़ाइल के लिए लिखा है की तुलना में अपडेट करेगा, लेकिन शायद यह है कि पर्याप्त है:

watch 'head -n 2 job.sta; tail job.sta' 
+0

मैंने कोशिश की और परीक्षण किया कि यह मेरे उद्देश्य के अनुरूप सबसे अच्छा जवाब है। बहुत धन्यवाद। अन्य सभी प्रतिक्रियाओं के लिए भी धन्यवाद। मैं आपकी मदद की भी सराहना करता हूं। –

+0

हाय, ब्रो, मुझे आपके सर्वोत्तम उत्तर के आधार पर एक नया प्रश्न मिला है। मैं एक अनुकूलित आदेश कैसे लिख सकता हूं, जैसे watch2। यह निम्नानुसार चलता है: $> watch2 job.sta तो, यह कमांड लाइन तर्क से फ़ाइल नाम प्राप्त करेगा। मैंने बहुत कोशिश की है। लेकिन मैं उद्धरण प्रतीकों से बहुत परेशान हूँ। क्या आपके पास शेड करने के लिए कोई प्रकाश है? –

+1

'watch2() {head -n 2" $ 1 "; पूंछ "$ 1"; } ' –

0

आप निम्न संयोजन पूंछ -f फ़ाइल नाम की कोशिश | सिर -2

+0

नहीं, ओपी चाहता है कि नहीं, "मैं चाहता हूं कि रोलिंग सामग्री स्क्रीन टॉप तक पहुंचने पर कुछ शीर्ष रेखाएं स्क्रीन टॉप पर हमेशा प्रदर्शित हों।" – Kent

1

मैं प्रभाव को प्राप्त करने के लिए इस स्क्रिप्ट का उपयोग आप का वर्णन

!#/bin/bash 
while [ 1 ]; do ls -lt data | head -n 30; sleep 3; echo -en "$(tput cuu 30; tput ed)"; done 

यह एक पाश में एक कमांड चलाता है, और प्रत्येक यात्रा से पहले स्क्रीन से उत्पादन के अंतिम लाइनों को हटा देता है।

आपके मामले में ऐसा

!#/bin/bash 

while [ 1 ] ;# loop forever 
do 
    head -n 2 job.sta ;# display first 2 lines 
    tail -n 30 job.sta ;# display last 30 lines from file 
    sleep 3 ;# wait a bit 
    echo -en "$(tput cuu 32; tput ed)" ;# delete last 32 lines from screen 
done 

कुछ बेशक यह थोड़ा बदसूरत है लगेगा से पहले अपने फ़ाइल 30 लाइनों

आशा है कि मदद करता है

4

आप screen उपयोग कर सकते हैं अनुकरण करने के लिए पहुंचता है अपेक्षित व्यवहार:

  1. रन screen, स्पेस दबाएं।

  2. प्रेस Ctrl +एक स्क्रीन विभाजित करने के लिए एस द्वारा पीछा किया।

  3. Ctrl +एक:resize 4 के बाद दबाने से शीर्ष विंडो का आकार बदलें।

  4. शीर्ष विंडो में प्रॉम्प्ट में, head -n2 file दर्ज करें।

  5. Ctrl +एकटैब के बाद दबाने से नीचे विंडो पर जाएं।

  6. Ctrl +एक के बाद दबाने से एक नए स्क्रीन सत्र प्रारंभ करें।

  7. नए प्रॉम्प्ट में, tail -f file दर्ज करें।

+0

यह विधि भी एक समाधान प्रतीत होता है हालांकि कई सारे कदम हैं। मैं भी इसे पसंद करता हूं! धन्यवाद! –

1

आप multitail कार्यक्रम है, जो न केवल विभाजित स्क्रीन सामान करता चाहते हैं, लेकिन रंग कोडिंग भी करेगा।

http://www.vanheusden.com/multitail/

20

मैं इस समारोह में हर समय का उपयोग एक और टर्मिनल विंडो में एक लॉग फ़ाइल की निगरानी के लिए।

tail -f <filename> 

मैं लॉग में विशेष पाठ देखने के लिए इसे एक कदम आगे बढ़ाने की सलाह देता हूं। बढ़िया है अगर आप फ़ाइल में लिखी गई कुछ विशेष प्रविष्टि को देखने में रुचि रखते हैं।

tail -f <filename> | grep <keyword or pattern> 
संबंधित मुद्दे

 संबंधित मुद्दे