Ls आउटपुट में फ़ाइल नाम के बीच जादू विभाजक क्या है?


20

ls(बिना किसी तर्क के) का उत्पादन लाइनब्रीक के साथ फ़ाइल नाम को अलग करने के लिए प्रकट होता है।

साक्ष्य:

  • ls | grep foogrepइनपुट के एक अलग लाइन के रूप में प्रत्येक फ़ाइल नाम के इलाज के साथ, उम्मीद के मुताबिक काम करता है ।

  • ls > files.txt; vim files.txt -> विम में, प्रत्येक फ़ाइल एक अलग लाइन पर है

और फिर भी टर्मिनल में lsएक लाइन पर कई फाइलों को रखने के लिए, रिक्त स्थान को कॉलम के साथ अलग करने के लिए फाइलनेम को अलग करते हुए:

$ ls
a.txt  b.txt  c.txt

तो मेरा सवाल है, यह कैसे करता है?

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

जवाबों:


24

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

हाँ। पूर्ण मैनुअल से ( info lsयदि दस्तावेज स्थापित है तो उपलब्ध है):

यदि मानक आउटपुट एक टर्मिनल है, तो आउटपुट कॉलम में है (लंबवत क्रमबद्ध) और नियंत्रण वर्ण आउटपुट हैं प्रश्न चिह्न के रूप में; अन्यथा, आउटपुट प्रति पंक्ति एक सूचीबद्ध होता है और नियंत्रण वर्ण आउटपुट के रूप में होता है।

यदि आपको एक कॉलम आउटपुट पसंद है, तो आप चला सकते हैं

ls -1

टर्मिनल में भी इसे पाने के लिए।


7
विशेष रूप से, फ़ंक्शन lsयह निर्धारित करने के लिए उपयोग करता है कि आउटपुट एक टर्मिनल है या नहीं isatty(3)
ब्लरफ्ल

यह भी कुछ हद तक संबंधित है, अगर कोई इसे सरल शेल स्क्रिप्ट में परीक्षण करना चाहता है, तो कोई भी tty -sइसकी वापसी स्थिति को चला सकता है और जांच सकता है ।
डैनियल एंडरसन

10

lsइसका पता तब चलता है जब आप इसके आउटपुट को पाइप करते हैं। आप इसे दस्तावेज़ में देख सकते हैं:

यदि मानक आउटपुट एक टर्मिनल है, तो आउटपुट कॉलम में है (लंबवत क्रमबद्ध) और नियंत्रण वर्ण आउटपुट हैं प्रश्न चिह्न के रूप में; अन्यथा, आउटपुट प्रति पंक्ति एक सूचीबद्ध होता है और नियंत्रण वर्ण आउटपुट के रूप में होता है।

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

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