lessजाँचता है कि क्या stdoutयह एक टर्मिनल है, और catयह तब व्यवहार करता है जब यह नहीं होता है (प्रतियां ईओडी तक स्टडआउट नहीं करता है)।
यह सुविधा आपको स्क्रिप्ट या प्रोग्राम लिखने की सुविधा देती है जो हमेशा अपने आउटपुट (जैसे --helpआउटपुट) को भेजते हैं, lessजबकि एक फ़ाइल को आसान पुनर्निर्देशन की अनुमति देते हुए। यह चूसना होगा अगर some_command --fullhelp > help.txtअभी भी पाठ के माध्यम से पृष्ठ पर स्पेस-बार के लिए इंतजार किया गया, या कुछ और। कुछ कमांड (जैसे man) जाँच करते हैं कि उनका अपना आउटपुट यह तय करने के लिए है कि उनके आउटपुट को पेजर के माध्यम से भेजा जाए या नहीं। यदि आप दौड़ते हैं man ls > ls.txt, तो यह कभी भी आपका आह्वान नहीं करता है $PAGER।
lessयदि आप एक लाइनर से बाहर एक पाइप लाइन में अधिक चरणों को जोड़कर संपादित करना भूल जाते हैं, तो बिल्ली की तरह व्यवहार करना आसान है।
lessटर्मिनल आयामों का पता लगाने की जरूरत है (स्क्रीन का आकार, यह जानने के लिए कि एक बार में कितनी लाइनें दिखानी चाहिए)। ioctl(2)उस पर का उपयोग करता है stdoutएक गैर टर्मिनल पर ENOTTY वापसी होगी, तो यह वैसे भी गैर टर्मिनल मामले से निपटने से बचने नहीं कर सकते। lessवास्तव isatty(3)में टर्मिनल आयामों की जाँच करने से पहले उपयोग करता है , लेकिन isattyकेवल एक ioctl की कोशिश करके और त्रुटि की कमी के लिए जाँच करके काम करता है।
यहां तक कि एक साधारण पेजर जैसे more(1)(कम से कम उपयोग-लिनेक्स संस्करण) में यह सुविधा है, क्योंकि यह शायद उस मामले के लिए लागू करने का सबसे सरल समझदार व्यवहार है।
ध्यान दें कि जब आप किसी चीज़ को पाइप करते हैंless (उदाहरण के लिए grep foo bar.txt | less), तो उसे /dev/ttyकीबोर्ड इनपुट के लिए खोलना होगा । (आप इसे ऐसा करने के साथ देख सकते हैं echo foo | strace less)।
bash script.sh,bash script.sh | cat,bash script.sh > file, और देखते हैं कि उत्पादन आप मिलता है।