बैकस्पेस, टैब टर्मिनल में काम नहीं कर रहा है (ssh का उपयोग करके)


37

जब मैं अपने खाते के साथ डेबियन के साथ एक अन्य मशीन में बैठता हूं (सूडो अनुमति के साथ), मेरी बैकस्पेस कुंजी दबाने के लिए कुछ अजीब प्रतीक उत्पन्न करती है। इसके अलावा Tabऔर delकुंजी भी काम नहीं करते।

दूसरी ओर, मेरे पास उसी मशीन पर एक और खाता है और जब मैं इस खाते के माध्यम से ssh करता हूं, तो इसका टर्मिनल पूरी तरह से ठीक काम करता है। मैं यह पता नहीं लगा सका कि ऐसा क्यों हो रहा है।

जवाबों:


37

मैंने इस तरह की समस्याएं पहले भी देखी हैं।

उदाहरण के लिए बैकस्पेस लें, रिमोट होस्ट कुछ कैरेक्टर को "इरेज़ / बैकस्पेस" के रूप में इस्तेमाल करने की उम्मीद करता है, जब आप टर्मिनल में बैकस्पेस दबाते हैं, तो टर्मिनल प्रोग्राम रिमोट कैरेक्टर के लिए कुछ कैरेक्टर भेज देगा, अगर रिमोट होस्ट एक्सपेक्ट करता है टर्मिनल प्रोग्राम द्वारा भेजे गए वर्ण, आप इस समस्या का सामना करेंगे। तो एक त्वरित सुधार नीचे दिया गया है:

  1. #stty -aदूरस्थ होस्ट में कमांड चलाएँ , और पता करें कि आउटपुट में इरेज़ कोड होने की उम्मीद है। कहते हैं erase=^?
  2. टर्मिनल में, Ctrlvअपना बैकस्पेस टाइप करें और दबाएँ। आप देखेंगे कि किस कोड को "मिटा" के रूप में भेजा गया है। कहो तो है ^H
  3. दूरस्थ होस्ट में, चलाएँ #stty erase ^H
    (नोट: उपयोग Ctrlv+ Backspace, मैन्युअल रूप से ^ टाइप न करें)

आप टैब समस्या को ऊपर के समान के साथ ठीक कर सकते हैं।


मेरा बैकस्पेस चरित्र कुछ विशेष प्रतीक है जो एक उल्टे त्रिकोण की तरह है। तो इसका काम नहीं है
gopi1410

1
यह सरल टिप्पणी निश्चित रूप से सबसे अच्छा समाधान है जो मैंने इसे देखा है। यह एक कीचड़ की तरह लगता है लेकिन यह काम करता है।
पाउलो माटोस

यह मेरे लिए काम किया! हालांकि मुझे समझ नहीं आ रहा है कि मेरा शेल बैकस्पेस को अपेक्षित रूप से क्यों संभाल रहा है, लेकिन मेरे ऐप में स्टड से पढ़ना नहीं है। अपने सुझाए गए परिवर्तन का परिणाम दोनों के लिए बैकस्पेस में काम करना है। मेरी समझ यह है कि शेल स्टड बफरिंग को संभालता है, तो क्या शेल-एंड-हैंडलिंग दोनों शेल और ऐप के लिए समान नहीं होना चाहिए?
शमूएल

1
अगर कोई कोड नहीं भेजा जाता है तो क्या होगा? Ctrlv + backspace कुछ भी नहीं बनाता है ...
Manfredo

मेरे लिए, बैकस्पेस कोड stty -aआउटपुट के समान है , लेकिन फिर भी काम नहीं करता है
Matej J

36

"स्टिकी" समाधान के अलावा, आप "टीईआरएम" समाधान की कोशिश कर सकते हैं।

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

इसलिए, होस्ट करने के लिए ssh के बाद (यह debian यह या अन्य होस्ट निर्भर नहीं करता है) अपने टर्मिनल के अनुसार TERM वेरिएबल सेट करें। विचार करें कि आप शेल और वीटी 100 को टर्मिनल के रूप में उपयोग कर रहे हैं:

export TERM=vt100

ps: TERM को ssh के माध्यम से स्वचालित रूप से घोषित किया जाना चाहिए, लेकिन कुछ परिस्थितियों में यह जादू विफल हो जाता है।


अभी भी काम नहीं करता है :(
gopi1410

आप किस टर्मिनल का उपयोग कर रहे हैं? और TERM का आपने क्या मूल्य आजमाया है?
पौल

मैंने vt100 की कोशिश की। मुझे TERM का मूल्य कैसे पता चलेगा? मैंने साइबरन (विंडोज़ में) से डेबियन तक ssh की कोशिश की। यदि साइबरविन के साथ कोई समस्या है, तो मैंने ubuntu टर्मिनल से भी कोशिश की, लेकिन वही समस्या है।
गोपी १४१०

सुनिश्चित नहीं है कि साइबरविन में अच्छा टर्मिनल इम्यूलेशन है, जहां तक ​​मुझे पता है, साइबरविन नियमित विंडो कंसोल का उपयोग कर रहा है जिसमें टर्मिनल इम्यूलेशन का अभाव है (गलत हो सकता है)। Ubuntu से सब ठीक काम करना चाहिए। डेबियन पर शेल या टर्मकैप लाइब्रेरी में कुछ गड़बड़ है। उबंटू से लॉगिन करें और मुझे कमांड का आउटपुट दें: 1. इको $ TERM 2. stty -a
paul

2
जबकि यह सीधे मेरी मदद नहीं करता था, चूंकि TERM सही ढंग से सेट किया गया था, इसने समस्या को पहचानने में मदद की। मुझे अपने टर्मिनल के लिए टर्मोइफ़ प्रविष्टियाँ याद आ रही थीं। मैं urxvt का उपयोग कर रहा हूँ और मेहराब पर आपको इस विशेष मुद्दे को ठीक करने के लिए rxvt-unicode-termfo स्थापित करने की आवश्यकता है
Xandaros

15

ऐसा इसलिए है क्योंकि आपका डिफ़ॉल्ट शेल shउपयोग करने के लिए है bash, बस bashअपने शेल से चलाएं ।

bash

bashअपने डिफ़ॉल्ट शेल के रूप में सेट करने के लिए :

chsh -s /bin/bash 

या

sudo chsh -s /bin/bash yourusername

2
यह एक मेरे लिए यह तय है। भले ही मेरे लॉगिन शेल को देखने के लिए कभी नहीं!
जेम्स पैक

2
मैं इस समस्या को देख रहा हूं, लेकिन मेरा शेल बैश है।
फ्रैक्चर

6

/bin/shइसके बजाय आपका शेल सेट किया जा सकता है/bin/bash


1
इस उत्तर से संबंधित: unix.stackexchange.com/questions/50542/…
सैमुअल


यह अधिक सहायक होगा यदि इसे थोड़ा और समझाया जाए और इसे कैसे बदला जाए, लेकिन यह मेरे पास समस्या थी। धन्यवाद @Tom आपके लिंक के लिए जिसने मेरे लिए समस्या तय की।
जेक

मेरे मामले में यही कारण था .. उस विशेष उपयोगकर्ता के लिए। /etc/passwdजब मैं :/bin/bashउसकी लाइन में काम करता था , तो कोई शेल परिभाषित नहीं किया गया था । आप यह पता लगा सकते हैं कि किस शेल के साथ प्रयोग किया जा रहा हैecho $0
MSpreij

6

मैं आमतौर पर अपने टर्मिनल में किसी भी कायरता चरित्र आउटपुट को ठीक करने के लिए इसका उपयोग करता हूं। यह सभी विशेष वर्णों को उनके डिफ़ॉल्ट मानों पर रीसेट करता है।

stty sane

स्टेंट मैन पेज से:

एक ही तरह के क्रैगन -इग्नब्रुक -इनक्लेर -इन्गक्र्र-आईसीआरएल-आइकॉफ़ -इक्सॉफ़ -इक्स्फ़िक-ऑक्सनी इमैक्सबेल ओपोस्बेल -कोल्क्रोन -ऑर्ननेल ओनलीक्रोन -ऑनक्रिट -ऑफ़िल-टॉफेल एलिल्यू क्रि .00-05-05.gf.igf -xcase -tostop -echoprt echoctl इकोक, सभी विशेष वर्ण उनके डिफ़ॉल्ट मानों के लिए


2

पॉल के उत्तर के शीर्ष पर, यदि आप रंगीन आउटपुट की क्षमता को बनाए रखना चाहते हैं, तो आप xterm-88color का उपयोग कर सकते हैं

echo 'export TERM=xterm-88color' >> ~/.bashrc
source ~/.bashrc

1
toe -aसमर्थित टर्मिनल प्रकारों की एक सूची दिखाता है ... xterm-88colorअब तक एकमात्र विकल्प नहीं है और वास्तव में विशेष सिस्टम पर अनुपलब्ध हो सकता है।
0xC0000022L
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.