मैं पूरी फ़ाइल कैसे देख सकता हूं और उस फ़ाइल में अधिक डेटा जोड़े जाने की प्रतीक्षा कर सकता हूं?


21

मैं पूरी फाइल पढ़ना चाहता हूं और इसे इनपुट की प्रतीक्षा कर रहा हूं, ठीक उसी तरह, tail -f लेकिन पूरी फाइल प्रदर्शित की गई है।

इस फ़ाइल की लंबाई हमेशा बदल जाएगी, क्योंकि यह एक .logफ़ाइल है।

यदि मैं फ़ाइल की लंबाई नहीं जानता, तो मैं इसे कैसे कर सकता हूं?


2
आप पहले से ही जानते हैं कि पूंछ जो आप चाहते हैं उसके करीब है। क्या आपने इसके लिए मैन पेज पढ़ा?
njzk2

1
less"F" कुंजी है। यदि आपको सहभागिता की आवश्यकता है तो उपयोगी है।
Thorbjørn Ravn Andersen

जवाबों:


33

tailआपको -nअंत से प्रदर्शित करने के लिए लाइनों की संख्या निर्दिष्ट करने की अनुमति देता है , जिसका उपयोग संयोजन के साथ किया जा सकता है -f। यदि इसके -nसाथ शुरू होने वाला तर्क +शुरुआत से लाइनों की गिनती है ( 0और 1पूरी फ़ाइल को प्रदर्शित करते हुए, 2पहली पंक्ति को छोड़ें, जैसा कि @Ben द्वारा इंगित किया गया है)। तो बस करो:

tail -f -n +0 filename

यदि आपकी लॉग फाइलें सड़ जाती हैं, तो आप जोड़ सकते हैं --retry(या @ बताए -f and --retryगए अनुसार जोड़ सकते हैं -F)

यह भी ध्यान दें कि एक ग्राफिकल टर्मिनल में, आप माउस का उपयोग कर सकते हैं और PageUp/ PageDownया इतिहास में वापस स्क्रॉल करने के लिए (मान लीजिए कि आपका बफर काफी बड़ा है), यह जानकारी वहां भी रहती है, भले ही आप बाहर निकलने के लिए Ctrl+ Cका उपयोग करते हों tail। यदि आप इसका उपयोग lessकरते हैं तो यह बहुत कम सुविधाजनक है और AFAIK के लिए आपको स्क्रॉलिंग के लिए कीबोर्ड का उपयोग करना होगा और lessयदि आप इसे शुरू करना भूल जाते हैं तो मुझे डीइन्टिशिएंटिंग टर्मकैप से रखने का कोई मतलब नहीं है -X


1
+1 आपका जवाब जैसे ही मैंने पोस्ट किया मेरा और यद्यपि मेरा काम करता है, आपका बेहतर है।
जूली पेलेटियर

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

1
+1मुझे सिखाने के बारे में +0। आप लॉगफ़ाइल्स को घुमाने के -Fबजाय चाहते हैं-f
हेगन वॉन एटिज़ेन

मुझे लगता है कि यहां एक बंद है। tail -n +1मेरे लिए फ़ाइल की शुरुआत दिखाता है, और tail -n +2एक पंक्ति को छोड़ देता है। मुझे लगता है कि संख्या पहले प्रदर्शित लाइन की लाइन संख्या है।
बेन मिलवुड 20

1
@ धन्यवाद धन्यवाद! यह ठीक वैसा ही है जैसा मुझे चाहिए!
मलवा

37

इसे प्राप्त करने का एक बेहतर तरीका है:

less +F <file>

यह आपको पूरी फ़ाइल दिखाएगा, इसमें पूरी शक्ति है lessऔर नए इनपुट की प्रतीक्षा करेगा। यदि आप इनपुट की प्रतीक्षा करना बंद करना चाहते हैं, और एक विशिष्ट भाग को पढ़ना चाहते हैं, तो आप इसे रोक सकते हैं ^Cऔर फिर से शुरू कर सकते हैं F

Fआदेश हमेशा में उपलब्ध है lessअगर आप, जबकि एक फ़ाइल खुले में होने परिवर्तन के लिए देखने के लिए निर्णय लेते हैं, less, मार Fपर यह हो जाएगा। यह इंगित करने के लिए hiergiltdiestfu और वाइल्डकार्ड के लिए धन्यवाद ।


2
यह वास्तव में की तुलना में बहुत बेहतर है tail। पारितोषिक के लिए धन्यवाद; मैंने इसके lessलिए उपयोग करने के बारे में कभी नहीं सोचा होगा । दूसरों के लिए ध्यान दें: आप बस चला सकते हैं less <file>और फिर टाइप कर सकते हैं F
वाइल्डकार्ड

3

/ यू / एंथन के जवाब के अलावा, आप कुछ ऐसा कर सकते हैं:

{ cat filename; tail -0f filename; }

-0पूंछ का वह विकल्प इसके बराबर है -n 0, जिसका अर्थ है: फैलाव 0 लाइनें। लेकिन -fनई लाइनें प्रदर्शित करेगा।

आपको ब्रेसिज़ की आवश्यकता नहीं है { }। मैंने उनका उपयोग किया क्योंकि कभी-कभी आप किसी तरह से फ़ाइलस्क्रिप्ट को पुनर्निर्देशित करना चाहते हैं। उदाहरण के लिए:

{ cat ; tail -0f -; } < /var/log/messages

बेन मिलवुड द्वारा प्रसिद्ध: आपके पास एक दौड़ की स्थिति हो सकती है जहां फ़ाइल catऑपरेशन के अंत और ऑपरेशन की शुरुआत के बीच बढ़ती है tail। लेकिन फिर, यह एक शैक्षणिक समाधान के लिए "अकादमिक" समस्या है।


3
यदि फ़ाइल catखत्म होने और tailशुरू होने के बीच बढ़ती है , तो आप उन पंक्तियों को नहीं देखेंगे। अनजाने में एक बड़ी बात है, लेकिन एक कारण शुद्ध tailसमाधान पसंद करते हैं।
बेन मिलवुड

मुझे लगता है कि { cat; tail -n +0 -f; } < fileदौड़ को ठीक कर दिया जाएगा, क्योंकि पूंछ किसी भी नए डेटा को प्रिंट करेगी जो कि catबाहर निकलने और tailस्टार्टअप के बीच दिखाई देती है । बेशक, यह catबेमानी बना देता है । पुनर्निर्देशन केवल एक बार होता है, और tailस्टडिन फाइल डिस्क्रिप्टर है जो catपहले से ईओएफ के लिए पढ़ा जाता है, इसलिए इसकी वर्तमान स्थिति को catरोक दिया जाता है। हर बार रेस बनाने के लिए आप echo foo >> fileअंदर ही अंदर इसे टेस्ट कर सकते हैं {}
पीटर कॉर्डेस

2

watch कमांड आपके लिए वह करना चाहिए।

आप भी आजमा सकते हैं

less +FG 

आपके पास lessअपनी फ़ाइल के माध्यम से स्क्रॉल करने के लिए कमांड के साथ अधिक विकल्प होंगे क्योंकि आप कहते हैं कि यह एक बड़ी फ़ाइल है।


कम भी एक बढ़ती फाइल का पालन नहीं करता है।
शादुर

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