टर्मिनल स्क्रीन को गड़बड़ करने वाली समस्या को कैसे हल किया जाए? (आमतौर पर आकार बदलने के बाद)


75

कभी-कभी, एक टर्मिनल स्क्रीन गड़बड़ हो जाती है, और जब हम man lsइतिहास को पढ़ने के लिए उपयोग करते हैं, या इतिहास में पिछले आदेशों पर जाने के लिए यूपी तीर दबाते हैं, तो स्क्रीन पात्रों को सही जगह के रूप में नहीं दिखाएगी। (उदाहरण के लिए, स्क्रीन के अंत को स्क्रीन के बीच में कुछ के रूप में देखें)।

कमांड resetकी कोशिश की जाती है और यह काम नहीं करेगा। एक तरीका जो काम करता है वह है विंडो को लॉग आउट या बंद करना, और पहले विंडो का आकार बदलना, और फिर sshउस टैब को करना (या बंद करना , और खिड़की का आकार बदलना, और फिर एक नया खोल पाने के लिए एक नया टैब खोलें)।

लेकिन इस तरह, हम कुछ भी खो देंगे जो हमने पहले किया था, जैसे कि वर्चुअल मशीन कंसोल शुरू करना, आदि। अगर हम शेल को बंद नहीं करते हैं, तो क्या इस समस्या को ठीक करने का कोई तरीका है?

(यह फेडोरा के ठीक अंदर हुआ, और एक मैकबुक के लिए sshRHEL 5.4 बॉक्स में भी)।

अपडेट: मुझे अब याद है कि फेडोरा में यह कैसे हुआ: मैंने एक टर्मिनल खोला, और एक वर्चुअल मशीन (एक शेल) के कंसोल का उपयोग करने के लिए एक फ्रीवीएम किया। मुझे लगता है कि यह आकार 80 x 25 था और फिर थोड़ी देर के बाद, मैंने टर्मिनल को 130 x 50 के लगभग आकार दिया, और फिर "आंतरिक शेल" (वीएम का) अजीब व्यवहार करना शुरू कर दिया।


आप किस टर्मिनल एमुलेटर का उपयोग कर रहे हैं? अगर resetसमस्या सुलझती नहीं है तो ध्वनि टूटी हुई है ।
जोर्डनम

फेडोरा के अंदर जो भी टर्मिनल प्रोग्राम है ... और मैक ओएस एक्स शेर पर डिफ़ॉल्ट टर्मिनल प्रोग्राम।
nopole

कृपया यह कैसे फेडोरा में हुआ उसके लिए ऊपर अद्यतन देख
nopole

3
जादुई भस्म है ^Jreset^J, जहां ^Jदबाने का मतलब है ctrl-J। या (चित्रमय टर्मिनलों पर) आप Resetबटन आज़मा सकते हैं । इसके अलावा, कुछ कार्यक्रमों को केवल उनके नीचे बदलते टर्मिनल आकारों के लिए तैयार नहीं किया जाता है (हाँ, प्राचीन सॉफ्टवेयर जीवित है और लात मार रहा है) या जब टर्मिनल बहुत छोटा हो जाता है तो केवल बुरी तरह से दुर्व्यवहार करता है।
वॉनब्रांड

1
मेरी समस्याओं को प्रांप्ट की लंबाई से छेड़छाड़ करने से हुई क्योंकि इसमें रंग कोड थे; मुझे भागने के अक्षर याद आ रहे थे \ [और \] - देखें unix.stackexchange.com/questions/105958/…
qneill

जवाबों:


93

यदि आप बैश का उपयोग कर रहे हैं, तो जांचें कि क्या "checkwinsize" विकल्प आपके सत्र में सक्रिय है

shopt | grep checkwinsize

यदि आपको नहीं मिलता है

checkwinsize    on

इसके बाद इसे सक्रिय करें

shopt -s checkwinsize

बैश प्रलेखन "checkwinsize" विशेषता के लिए कहता है:

"यदि सेट किया गया है, तो बैश प्रत्येक कमांड के बाद विंडो के आकार की जांच करता है और यदि आवश्यक हो, तो LINES और COLUMNS के मूल्यों को अपडेट करता है।"

यदि आप सेटिंग पसंद करते हैं, तो आप checkwinsizeअपने में सक्रिय कर सकते हैं ~/.bashrc

  • सक्रिय के लिए: shopt -s checkwinsize
  • निष्क्रिय करने के लिए: shopt -u checkwinsize

6
यह मेरी समस्या को हल करने के लिए नहीं होता है, लेकिन यह एक अच्छा सामान्य उत्तर है, इसलिए वैसे भी +1। मुझे लगता है कि मेरी समस्या लिनक्स सर्वर में ssh-ing होने पर विंडोज इम्यूलेशन (?) से संबंधित है।
जीनोरमा

पहली बार में ऐसा लगा कि जब मैंने इतिहास को देखने के लिए तीरों का इस्तेमाल किया तो यह काम नहीं कर रहा था, लेकिन पहली बार निष्पादित कमांड के बाद यह सब कुछ तय हो गया। मेरे मामले में टर्मिनेटर का उपयोग करना। धन्यवाद +1
kstenger

यह मेरे लिए काम करता है, लेकिन केवल चेकविंस को बंद करके। किसी कारण के लिए LINES = 24 को प्रत्येक कमांड के बाद भी सेट किया जा रहा था, भले ही मेरी विंडो (पिकॉकोम सेशन वाली) ज्यादा लंबी थी।
माइकल

19

आप Ctrl+ को आजमा सकते हैं L। यह प्रोग्राम के आधार पर, टर्मिनल स्क्रीन को साफ और / या फिर से रीड करता है।


3
लेकिन यह स्थायी रूप से समस्या का समाधान नहीं करता है ...
nopole

मुझे लगता है कि मेरा मतलब था, यदि आप CTRL L दबाते हैं, तो लाइन फिलहाल ठीक है, लेकिन यदि आप लाइन को फिर से संपादित करते हैं (या अगली कमांड लाइन पर आप टाइप करते हैं), तो समस्या अभी भी है
nopole

11

docker exec पर इन विकल्पों को जोड़ने से मेरी समस्या हल हो गई

-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM

1
क्या आप 5 साल पहले सवाल पूछने वाले थे?
आर्केमोर

3
मैं आपको बता सकता हूं कि वह नहीं है: "डॉकटर" वास्तव में "5 साल पहले" के साथ फिट नहीं है। डॉकर को अभी तक 2013 में जारी नहीं किया गया था ;-)
jplandrain

8

मुझे भी यही समस्या थी और उपरोक्त व्यंजनों में से किसी ने भी मेरे लिए काम नहीं किया क्योंकि मेरा मानना ​​है कि मेरे बैश को कभी भी SIGWINCHसंकेत नहीं मिलते हैं, जो इसकी मूल प्रक्रिया से फंस जाते हैं।

मैंने आखिरकार एक समाधान ढूंढ लिया। मैंने अपने को जोड़ा .bashrc:

export PROMPT_COMMAND="resize &>/dev/null ; $PROMPT_COMMAND"

अब हर बार मुझे एक नया संकेत मिलता है, मेरी विंडो फिर से समायोजित हो जाती है।

PROMPT_COMMAND सुधार के लिए UKmonkey का धन्यवाद ।


2
मैं व्यक्तिगत रूप से साथ जाऊंगा export PROMPT_COMMAND="resize &>/dev/null; $PROMPT_COMMAND"ताकि पुराने प्रॉम्प्ट कमांड, जो कुछ भी मेरे द्वारा संरक्षित किया जाएगा
UKMonkey

मैं बस जरूरत पड़ने पर मैन्युअल रूप से आकार परिवर्तन चलाऊंगा। आकार के लिए कंसोल से पूछताछ धीमी हो सकती है। ऐसा करने से हर आदेश अत्यधिक लगता है, और आमतौर पर आप जानते हैं कि इसे कब संशोधित किया गया है।
कॉनरेड मेयर

6

मैं सिर्फ वही जोड़ना चाहता था जो अर्काडियन ने पहले ही उल्लेख किया था। सक्षम करने वाला चेकविंस ट्रिक करता है, लेकिन मेरे लिए, ठीक से काम करने के लिए खिड़की के आकार को रीसेट करने की आवश्यकता थी। मुझे लगता है कि checkwinsize इस को खत्म करने के लिए था, लेकिन फिर भी, एक शॉट के लायक। बस विंडो का आकार बदलने की कोशिश करें या इसे अधिकतम करें और इस विकल्प को अधिकतम करें।


1
मानो या न मानो, यह सब मेरे लिए तय किया गया था। मजेदार इसलिए कि मैंने पहले और सब कुछ आजमाया।
तरणकी

4

मैं समय-समय पर macOS पर zsh का उपयोग करके समान समस्या का सामना करता हूं। resetकमांड का एक साधारण आह्वान टर्मिनल को फिर से मेरी पसंद के अनुसार सेट करता है।


तो ओपी ने कहा कि resetउनके लिए काम नहीं कर रहा था, और यह वास्तव में सवाल का बिंदु था ....
स्टीफन राउच

ओपी ने लिनक्स फ्लेवर पर काम न करने के बारे में बताया है। मैंने मैकओएस सिएरा पर इस मुद्दे का सामना resetकिया और इस मामले में काम किया। मैंने इस उत्तर को किसी की मदद करने के लिए जोड़ा, जो एक MacOS पर समान समस्या का सामना करता है और resetकमांड के बारे में जागरूक नहीं है ।
नॉनकूट

resetउबंटू 16.04 के साथ विंडोज पुट्टी पर काम करता है!

रीसेट ने ubuntu 16.04 zsh
A.Wan

2

मुझे आपके समान ही समस्या थी और मैंने यही किया है:
मेरे पास .profileमेरे उपयोगकर्ता में एक सेटअप है, इसलिए मैं अपने सभी परिवर्तनों को करता हूं।

एक पैकेज है जिसे कहा जाता है, xtermजिसके apt-getबारे में मुझे जानकारी नहीं है yum। लेकिन मैंने स्रोत से एक स्थानीय इंस्टॉल किया क्योंकि मेरे पास इंस्टॉलेशन विशेषाधिकार नहीं हैं। लिंक: http : //inv अदृश्य-island.net/xterm/#download

./configure --prefix=/the/path/you/want/to/install/to
make
make install

मैंने अपनी प्रोफ़ाइल में पथ निर्यात किया और उसी स्थान पर इसे लागू किया

export PATH=$PATH:/the/path/you/want/to/install/to
resize

इसलिए अब हर बार जब मैं लॉग इन करता हूं, तो आकार आकार के अनुसार निर्धारित होता है।


0

खैर, यह एक सामान्य समस्या है और एक सरल समाधान होना चाहिए।

यदि अन्य उपाय जैसे Ctrl + A Ctrl + L काम नहीं करते हैं, तो उपयोग करने का प्रयास करें stty:

  1. Ctrl + T: स्थानीय शेल के साथ एक नया टैब खोलें।
    या: स्क्रीन छोड़ें (Ctrl + AD अलग करने के लिए) और अपने SSH सत्र से लॉग आउट करें।
  2. stty -a | grep rows: पंक्तियों और स्तंभों की संख्या प्राप्त करें।
    उदाहरण:speed 38400 baud; rows 33; columns 133; line = 0;
  3. अपने दूरस्थ टैब पर वापस जाएं या लॉग इन और रीटच स्क्रीन। sttyउत्पादन अलग होना चाहिए।
    उदाहरण:speed 38400 baud; rows 47; columns 177; line = 0;
  4. में टाइप करें stty rows Nऔर stty columns Nजहां N "वास्तविक" नंबर (स्क्रीन के बाहर) है। उदाहरण:$ stty rows 33; stty columns 133

यदि आप टर्मिनेटर का उपयोग करते हैं , तो आप पहले तीन चरणों को छोड़ सकते हैं क्योंकि यह शीर्ष पर कॉलम और पंक्तियों की संख्या दर्शाता है।

इसमें भाग लेने के लिए आपको अपनी टर्मिनल विंडो का आकार बदलने की आवश्यकता नहीं है। आमतौर पर विभिन्न कंप्यूटरों से प्रवेश होता है और जब संलग्न मॉनिटर आकार (रिज़ॉल्यूशन) में भिन्न होते हैं, तो अधिकतम की गई विंडो में प्रत्येक कंप्यूटर पर एक अलग आकार होगा। यह वास्तव में मुश्किल है कि इसमें बार-बार भागना मुश्किल नहीं है।

और नतीजा यह नहीं है कि कुछ मैन पेज ठीक से दिखाई नहीं दे रहे हैं। यह बहुत ज्यादा कुछ भी है जो पेजर का उपयोग करता है - पहली कुछ लाइनें अक्सर गायब होती हैं (उदाहरण के लिए)। और इस तरह के गलत टर्मिनल में VIM का उपयोग करने के बारे में भी मत सोचो। आप इसे प्रतिस्थापित करने के लिए पंक्ति 3 (V) को हाइलाइट करना चाहते हैं, लेकिन जब आप करते हैं, तो हाइलाइट किया गया पाठ दूसरी पंक्ति का होता है।


0

कोशिश करो stty sane। यह वही करना चाहिए जो आपको चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.