मुद्रण से पहले सिर पूरी स्टड का इंतजार करता है


1

जब एक चलता है

ls | head

लगता है कि स्क्रीन पर छपाई से पहले पाइप कमांड के पूर्ण आउटपुट का इंतजार करना पड़ता है। यह अवांछनीय है जब कमांड को चलाने के लिए बहुत लंबा समय लगेगा, जैसे कि जब आप लाखों फ़ाइलों वाली निर्देशिका पर ls चला रहे हों।

हालांकि, जब एक रन

find | head

हेड स्क्रीन पर प्रिंट करने के लिए शुरू करने से पहले पूर्ण आउटपुट की प्रतीक्षा नहीं करता है - यह वास्तविक समय प्रतीत होता है।

मेरा सवाल यह है: व्यवहार में इस अंतर का कारण खोजने वाले और एलएस के बीच क्या अंतर है? दूसरे, क्या कोई प्रतिस्थापन कमांड (या तो एलएस, या सिर के लिए) है जो मुझे तुरंत एक लंबी निर्देशिका लिस्टिंग के प्रमुख को लेने की अनुमति देगा?

जवाबों:


1

यह headगलती नहीं है; यह है ls।  lsलगभग हमेशा अपने आउटपुट को क्रमबद्ध करता है (डिफ़ॉल्ट रूप से, नाम से; यदि अनुरोध किया गया हो, तिथि के अनुसार)। और यह किसी भी प्रकार की प्रकृति में है कि यह किसी भी आउटपुट का उत्पादन नहीं कर सकता जब तक कि उसने पूरे इनपुट को नहीं पढ़ा हो।  findइसके उत्पादन को क्रमबद्ध नहीं करता है, इसलिए यह तेजी से उत्पादन शुरू कर सकता है।

आप इसे बस चलाकर अपने लिए देख सकते थे

ls

तथा

find

और प्रतिक्रिया समय के अंतर को देखते हुए।

BTW, आप lsनिर्दिष्ट करके निर्देशिकाओं को सूचीबद्ध कर सकते हैं -U


मुझे लगता है ls -fकि अनसोल्ड आउटपुट का अनुरोध करेंगे?
ग्रैविटी

हां, ls -fअनसोल्ड आउटपुट का भी अनुरोध करता है। यह -aविकल्प को भी बाध्य करता है। मुझे अस्पष्ट रूप से एक ऐसे संस्करण का सामना करना पड़ता है ls, जिसमें -fकाम नहीं किया गया था (मुझे लगता है कि इसे कुछ और होने के लिए परिभाषित किया गया था) लेकिन -Uकिया था (लेकिन मुझे याद नहीं है कि वह कहाँ था, और मैं सिर्फ गलत याद रख सकता हूं)। और, यह सोचने के लिए आओ, मुझे लगता है मैंने सुना है कि -Uहर जगह स्वीकार नहीं किया जाता है।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.