जैसा कि विलियम पर्सेल ने उल्लेख किया है , less
टर्मिनल से उपयोगकर्ता के कीस्ट्रोक्स को पढ़ता है। यह स्पष्ट रूप से खुलता है /dev/tty
, नियंत्रण टर्मिनल; यह एक फाइल डिस्क्रिप्टर देता है, जो मानक इनपुट से अलग है, जिससे यह उपयोगकर्ता के इंटरेक्टिव इनपुट को पढ़ सकता है। यदि आवश्यक हो तो यह अपने मानक इनपुट से प्रदर्शित करने के लिए डेटा को एक साथ पढ़ सकता है। ( यदि आवश्यक हो तो यह सीधे टर्मिनल पर भी लिख सकता है।)
इसे आप रनिंग के जरिए देख सकते हैं
some_command | strace -o less.trace -e open,read,write less
इनपुट से बाहर निकलें, बाहर निकलें less
, और उसकी सामग्री को less.trace
देखें: आप इसे खोलकर देखेंगे /dev/tty
, और दोनों फाइल डिस्क्रिप्टर 0 से पढ़ेंगे और जो भी खोला गया था, उसमें से एक को लौटा दिया जाएगा /dev/tty
(संभावित 3)।
यह उन कार्यक्रमों के लिए सामान्य अभ्यास है जो यह सुनिश्चित करना चाहते हैं कि वे टर्मिनल से पढ़ रहे हैं और लिख रहे हैं। एक उदाहरण SSH है, उदाहरण के लिए जब वह पासवर्ड या पासफ़्रेज़ मांगता है।
जैसा कि विद्वानों द्वारा समझाया गया है , यदि /dev/tty
नहीं खोला जा सकता है , तो less
इसकी मानक त्रुटि (फ़ाइल विवरण 2) से पढ़ी जाएगी। less
का उपयोग /dev/tty
177 संस्करण में पेश किया गया था, 2 अप्रैल 1991 को जारी किया गया था।
यदि आप चलने की कोशिश करते हैं cat /dev/tty | less
, जैसा कि हेगन वॉन एटिजन द्वारा सुझाया गया है , तो इसे खोलने में सफलता मिलेगी लेकिन इसे बंद करने तक कोई इनपुट नहीं मिलेगा । तो आप स्क्रीन को खाली देखेंगे, और तब तक और कुछ नहीं जब तक आप उसे मारने (या किसी अन्य तरीके से मारने ) के लिए नहीं दबाते ; तब जो कुछ भी आपने टाइप किया था उसे दिखाएगा , और आपको इसे नियंत्रित करने की अनुमति देगा।less
/dev/tty
cat
CtrlCcat
less
cat
less
स्टड से प्रदर्शित करने के लिए डेटा पढ़ता है, और यह ट्टी से कमांड पढ़ता है। वे अलग चीजें हैं।