ls
(बिना किसी तर्क के) का उत्पादन लाइनब्रीक के साथ फ़ाइल नाम को अलग करने के लिए प्रकट होता है।
साक्ष्य:
ls | grep foo
grep
इनपुट के एक अलग लाइन के रूप में प्रत्येक फ़ाइल नाम के इलाज के साथ, उम्मीद के मुताबिक काम करता है ।ls > files.txt; vim files.txt
-> विम में, प्रत्येक फ़ाइल एक अलग लाइन पर है
और फिर भी टर्मिनल में ls
एक लाइन पर कई फाइलों को रखने के लिए, रिक्त स्थान को कॉलम के साथ अलग करने के लिए फाइलनेम को अलग करते हुए:
$ ls
a.txt b.txt c.txt
तो मेरा सवाल है, यह कैसे करता है?
क्या यह कुछ विशेष नियंत्रण चार का उपयोग करके 'नकली' एक नई रूपरेखा का उपयोग कर रहा है? या क्या यह पता है कि जब इसका आउटपुट किसी अन्य कमांड पर पाइप किया जा रहा है, और इस मामले में इसके आउटपुट को अलग तरीके से प्रारूपित करता है?
ls
यह निर्धारित करने के लिए उपयोग करता है कि आउटपुट एक टर्मिनल है या नहींisatty(3)
।