जब मैं कच्चे मोड में टर्मिनल सेट करता हूं तो अप्रत्याशित अप्रत्यक्ष व्यवहार - ऐसा क्यों हो रहा है?


27

मैंने जो पढ़ा है, उसके आधार पर जब एक टर्मिनल कच्चे मोड में होता है, तो वर्णों को टर्मिनल चालक द्वारा संसाधित नहीं किया जाता है, लेकिन इसके माध्यम से सीधे भेजा जाता है।

मैंने कमांड का उपयोग करके कच्चे मोड में टर्मिनल सेट किया stty raw, और मैंने देखा कि आउटपुट हर बार सही करने के लिए प्रेरित किया जाता है जब तक कि अधिक कमरा न हो। मेरा मतलब यह है:

यहाँ छवि विवरण दर्ज करें

यह व्यवहार क्यों हो रहा है ?!

जवाबों:


45

sttyसेटिंग्स में से एक ( onlcr) टर्मिनल चालक को गाड़ी-वापसी प्लस लाइन-फीड में न्यूलाइन (जो वास्तव में एएससीआईआई लाइन-फीड है) कन्वर्ट करने के लिए कहता है ।

यूनिक्स की तरह की प्रणालियां केवल लाइनों को समाप्त करने के लिए एक नई लाइन लिखती हैं, जिससे टर्मिनल चालक को सही काम करना है ( नई लाइन को गाड़ी-वापसी प्लस लाइन-फीड में बदलें)।

कैरिज-रिटर्न "बाएं जाता है" और लाइन-फीड "नीचे चला जाता है"।

जब आप टर्मिनल को रॉ मोड पर सेट करते हैं, तो न्यूलाइन को अब कैरिज-रिटर्न प्लस लाइन-फीड में नहीं बदला जाएगा। कैरिज-रिटर्न को कम करने पर आपको वह सीढ़ी प्रभाव प्राप्त होती है।


और गहराई से देखने के लिए, आप @ stéphane-chazelas पर एक नज़र डाल सकते हैं वास्तव में अच्छा पोस्ट: unix.stackexchange.com/questions/151916/… , जो टर्मिनल रूपांतरण (और उनके साइड इफेक्ट्स) के बारे में बहुत सारी इंटररस्टिंग चीजें दिखाता है । संक्षेप में: इंटरेक्टिव कमांड्स का उपयोग करने के लिए केवल "ssh -t", लेकिन आपकी स्क्रिप्ट में ssh का उपयोग करें यदि आप सटीक चीज़ को कमांड प्राप्त करना चाहते हैं (उदाहरण के लिए: एक ssh के एक तरफ बनाई गई टार फाइलें और पढ़ें / लिखी गई हैं दूसरी तरफ: "-t" को न जोड़ें या यह (... करेगा?) अपने बायनेरिज़ को गड़बड़ कर देगा)
ओलिवियर दुलक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.