एसई पर कई सवाल हैं जो बताते हैं कि कैसे टूटे हुए टर्मिनल से उबरना है cat /dev/urandom
। इस मुद्दे से अपरिचित लोगों के लिए - यहाँ इसके बारे में क्या है:
- आप निष्पादित
cat /dev/urandom
या समकक्ष (उदाहरण के लिएcat binary_file.dat
)। - कचरा छपता है।
यह ठीक होगा ... आपके टर्मिनल को छोड़कर कचरा समाप्त होने के बाद भी कमांड समाप्त हो गया है! यहाँ एक गलत पाठ का स्क्रीनशॉट है जो वास्तव में g ++ आउटपुट है:
मुझे लगता है कि लोग C ++ त्रुटियों के बारे में सही थे, कभी-कभी बहुत अधिक गूढ़ होते हैं!
सामान्य समाधान चलाना है stty sane && reset
, हालांकि हर बार ऐसा होने पर इसे चलाने के लिए परेशान होना पड़ता है।
इस वजह से, मैं इस सवाल पर ध्यान केंद्रित करना चाहता हूं कि मूल कारण ऐसा क्यों होता है, और इस तरह के आदेश जारी होने के बाद टर्मिनल को टूटने से कैसे रोका जाए । मैं ऐसे समाधानों की तलाश नहीं कर रहा हूं जैसे कि आक्रामक कमांड को पाइप करनाtr
या xxd
, क्योंकि इसके लिए आपको यह जानना आवश्यक है कि प्रोग्राम / फ़ाइल आउटपुट बाइनरी इससे पहले कि आप वास्तव में इसे चलाते / प्रिंट करते हैं, और आपको ऐसे डेटा को आउटपुट करने के लिए हर बार याद रखने की आवश्यकता होती है। ।
मैं URxvt, PuTTY और लिनक्स फ्रेम बफर में एक ही व्यवहार देखा तो मुझे नहीं लगता कि यह टर्मिनल-विशिष्ट समस्या है। मेरा प्राथमिक संदेह यह है कि यादृच्छिक आउटपुट में कुछ ANSI एस्केप कोड होता है जो चरित्र एन्कोडिंग को फ़्लिप करता है (वास्तव में, यदि आप cat /dev/urandom
फिर से चलाते हैं, तो संभावना है कि यह टर्मिनल को अनब्रेक कर देगा , जो इस सिद्धांत की पुष्टि करता है)। यदि यह सही है, तो यह पलायन कोड क्या है? क्या इसे अक्षम करने के लिए कोई मानक तरीके हैं?