आपकी स्क्रिप्ट less
के साथ पाइप के माध्यम से संचार कर रही है। पाइप बाइट्स की एक इन-मेमोरी स्ट्रीम है जो दो एंडपॉइंट्स को जोड़ती है: आपकी स्क्रिप्ट और less
प्रोग्राम, इसके लिए पूर्व लेखन आउटपुट, बाद में इसे पढ़ना।
जैसे-जैसे पाइप इन-मेमोरी हैं, अगर वे मनमाने ढंग से बड़े होते हैं तो यह सुखद नहीं होगा। इसलिए, डिफ़ॉल्ट रूप से, किसी भी पल में पाइप के अंदर हो सकता है (लिखित, लेकिन अभी तक नहीं पढ़ा गया) डेटा की एक सीमा है। डिफ़ॉल्ट रूप से यह लिनक्स पर 64k है। यदि पाइप भरा हुआ है, और आपकी स्क्रिप्ट इसे लिखने की कोशिश करती है, तो लिखने वाले ब्लॉक। तो आपकी स्क्रिप्ट वास्तव में काम नहीं कर रही है, यह किसी बिंदु पर रुक गई है जब write()
कॉल पर कॉल करें।
इसे कैसे दूर करें? डिफ़ॉल्ट समायोजन एक बुरा विकल्प है; इसका उपयोग पाठक में एक बफर आवंटित करने के बजाय किया जाता है, ताकि यह बफर में पढ़ सके, पाइप को मुक्त कर दे और इस प्रकार लेखन कार्यक्रम को काम करने दे, लेकिन आउटपुट का केवल एक हिस्सा आपको (या हैंडल) दिखाता है। less
में ऐसा बफर है, और, डिफ़ॉल्ट रूप से, इसे स्वचालित रूप से फैलाता है, हालांकि, यह पृष्ठभूमि में इसे भरता नहीं है, यह केवल इनपुट को पढ़ते ही इसे भरता है।
तो क्या आपकी समस्या को अंत तक फ़ाइल पढ़ रहा है (जैसा आप आमतौर पर जी प्रेस होगा), और फिर शुरुआत के लिए वापस जा (जैसा आप आमतौर पर जी प्रेस होगा) का समाधान होगा।
./script | less +Gg
आप को ध्यान देना चाहिए तथापि, कि आप पूरी स्क्रिप्ट की स्मृति में उत्पादन भार तक इंतजार करना होगा, ताकि आप में सक्षम नहीं होगा: बात यह है कि आप इस तरह कमांड लाइन के माध्यम से इन आदेशों को निर्दिष्ट कर सकता है इसे एक बार में देखने के लिए। less
इसके लिए अपर्याप्त रूप से परिष्कृत है।लेकिन अगर है कि तुम सच (ब्राउज़ कर उत्पादन की शुरुआत ./script
अभी भी अपने अंत की गणना है, जबकि) की आवश्यकता है, तो आप एक अस्थायी फ़ाइल का उपयोग करना चाहें:
./script >x & less x ; rm x
स्रोत
2011-05-08 10:22:41
शायद आउटपुट के उस विशेष पृष्ठ में टेक्स्ट की एक बड़ी मात्रा है, उदाहरण के लिए यदि एक बहुत लंबी क्षैतिज रेखा है। – ninjagecko