कम का उपयोग कर एक पाइप का पालन करें?


25

कम (एफ दबाकर) एक पाइप्ड इनपुट (एक फाइल के समान) का पालन कर सकते हैं? उस फ़ाइल के लिए जिसे कमांड लिखा जा रहा है

less <file>

एफ दबाने पर फ़ाइल का पालन करेंगे।

लेकिन अगर मेरे पास एक कमांड है जो सीधे आउटपुट को कम करता है, तो इस तरह

command | less

F दबाने से कुछ नहीं होगा।

तो ऐसा लगता है कि पाइपों की तरह फ़ाइलों का पालन नहीं किया जा सकता है? या शायद यह एसटीडीआरआर को कमांड लिखने के साथ भी करना है? मैं जो प्रभाव हासिल करने की कोशिश कर रहा हूं वह हमेशा कमांड के नवीनतम आउटपुट को देखता है: जैसे पेजडाउन को दबाए रखना!

संबंधित टिप्पणी G के लिए है (अंत तक जाएं): जब सीधे पाइपिंग कम होती है, तो यह काम नहीं करेगा।


जवाबों:


21

इनपुट EOF तक पहुंचने के लिए दबाने Fया करने की कोशिश Gकरता है less। यदि इनपुट एक पाइप है, lessतब तक लटका रहता है जब तक पाइप दूसरी तरफ से बंद नहीं हो जाता है (और "कुछ नहीं करता है")।

यह कमांड आउटपुट को बैकग्राउंड में एक अस्थायी फाइल में सेव करके, और फिर इसके लिए इनपुट के रूप में उपयोग करके काम किया जा सकता है less:

command > /tmp/x &
less +F /tmp/x; kill %; rm /tmp/x

केवल इसमें ऐसा करने का कोई विकल्प नहीं है less; हालाँकि, मैं मानता हूँ कि यह उपयोगी होगा।


यदि इनपुट एक पाइप है, lessतो दूसरी तरफ पाइप बंद होने तक लटका रहता है । यह एक तरह का भ्रामक बयान है। क्या होता है कि कम कॉल है readएक अवरुद्ध मोड में, नए डेटा के लिए इंतज़ार कर या या पाइप की क्लोजर।
पायोत्र डोब्रोगोस्ट

3
पाइप इनपुट पर एफ या जी दबाने के बाद lessन केवल एक अवरुद्ध रीड करता है, बल्कि ईओएफ के इंतजार में लूप में करता है। और एक पाइप पर एक ईओएफ केवल तभी होता है जब उसका दूसरा पक्ष बंद होता है।
मिक

3
अगर lessउस लूप में स्क्रीन अपडेट होती, तो समस्या नहीं होती। ब्लॉकिंग रीड का इस मुद्दे से बहुत कम लेना-देना है।
मिक

1
@ यह एक लटका हुआ प्रश्न नहीं था, लेकिन इस स्थिति में जो अपेक्षित है, केवल एक प्रतीक्षा - EOF के पहुंचने पर फ़ाइल में अधिक डेटा की प्रतीक्षा (जो बंद पाइप के लिए नहीं होगी, वैसे), या व्यवधान पालन मोड से बाहर निकलने के लिए
mik

1
@PiotrDobrogost अवरुद्ध डेटा के साथ lessस्क्रीन को अपडेट करने में सक्षम नहीं होगा, अगर कोई डेटा नहीं है; जब कुछ डेटा दिखाई देते हैं, तो less
रीडिंग

6

कम (एफ दबाकर) एक पाइप्ड इनपुट (एक फाइल के समान) का पालन कर सकते हैं?

हां, संस्करण 474 से शुरू होता है। हालांकि किसी भी संस्करण के रिलीज नोट में इसका उल्लेख नहीं किया गया है, क्योंकि वर्तमान में इस सुविधा के साथ एक शेष मुद्दा है। नीचे कम के अनुचर से एक टिप्पणी है - मार्क न्यूडेलमैन:

पाइपों पर एफ कमांड के बारे में, यह भी कम -474 में तय किया गया है। ईओएफ की मांग करने के बजाय, एफ कमांड बफर इनपुट के अंत की तलाश करता है और वहां पढ़ना शुरू कर देता है। हालाँकि यह वास्तव में प्रयोग करने योग्य नहीं है क्योंकि जब आप एफ कमांड को रोकने के लिए CTRL-C मारते हैं, तो यह उत्पादन करने वाली प्रक्रिया को मारता है। मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए।

जब तक यह समस्या कम में तय नहीं हो जाती है, तब तक यह शेल विशेषताओं का उपयोग करके इसे हल कर सकता है। मेरी देखें जवाब करने के लिए नहीं है पाइप में अन्य प्रक्रियाओं को रोके बिना बाहर निकलने के लिए किसी भी तरह से "कम" का पालन मोड? विवरण के लिए प्रश्न।

संदर्भ के लिए, पाइप के साथ काम नहीं करने वाले एफ के पास ज्ञात बग की सूची में संदर्भ संख्या 300 है और इसका शीर्षक है एफ कमांड पाइप इनपुट पर काम नहीं करता है।


संबंधित टिप्पणी G के लिए है (अंत तक जाएं): जब सीधे पाइपिंग कम होती है, तो यह काम नहीं करेगा।

यह संस्करण 466 से शुरू होता है। इस संस्करण के लिए जारी नोट्स से उद्धृत :

नई कमांड ईएससी-जी एक पाइप में वर्तमान में बफर डेटा के अंत में जाती है


ESC-जी आदेश संस्करण 466 में पेश किया गया था, पर 23 अगस्त को जारी किया 2014
mik

@mik तब 471 संस्करण के लिए जारी नोट्स में एक त्रुटि की तरह दिखता है। धन्यवाद, निश्चित।
पियोत्र डोब्रोगोस्ट

कोई त्रुटि नहीं है, वे केवल इस मामले में एक स्थिर रिलीज, संस्करण 458 के बाद से बड़े पैमाने पर परिवर्तनों को सूचीबद्ध करते हैं। हालाँकि, ESC-G कमांड के साथ कोई स्थिर रिलीज़ नहीं है।
23

ESC-G कमांड अब एक स्थिर रिलीज (481) में है: "16 अक्टूबर 2015 कम -481 सामान्य उपयोग के लिए जारी किया गया है"।
mik

अपडेट: पाइप पर एफ कमांड के बारे में, यह भी कम -474 में तय किया गया है। ईओएफ की मांग करने के बजाय, एफ कमांड बफर इनपुट के अंत की तलाश करता है और वहां पढ़ना शुरू कर देता है। हालाँकि यह वास्तव में प्रयोग करने योग्य नहीं है क्योंकि जब आप एफ कमांड को रोकने के लिए ctrl-C को मारते हैं, तो यह उत्पादन करने वाली प्रक्रिया को मार देता है। मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए। - मार्क न्यूडेलमैन, कम का
अनुचर

2

कम मैन पेज से

[Keyboard] COMMANDS [...]

   F      Scroll  forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already
          at the end of the file.  It is a way to monitor the tail of a file which is growing while it is being viewed.  (The  behav‐
          ior is similar to the "tail -f" command.)

तो यह काम करना चाहिए, और यह वास्तव में मेरे लिए काम करता है।


1
यह आदेश भिन्न रूप से व्यवहार करता है जब @mik द्वारा वर्णित पाइप के साथ उपयोग किया जाता है और स्पष्ट रूप से ओपी की तलाश में नहीं है।
पायोत्र डोब्रोगोस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.