Geri al, Sekme terminalde çalışmıyor (ssh kullanarak)


37

Hesabımla birlikte Debian'lı başka bir makineye girdiğimde (sudo izinleriyle), geri alma anahtarım basıldığında bazı garip semboller oluşturuyor. Ayrıca Tabve delanahtarlar da çalışmıyor.

Öte yandan, aynı makinede başka bir hesabım var ve bu hesaptan geçtiğimde terminali gayet iyi çalışıyor. Bunun neden olduğunu çözemedim.

Yanıtlar:


37

Daha önce böyle problemler gördüm.

Örneğin geri almayı kabul edin, uzaktaki ana bilgisayar "silme / geri alma alanı" olarak kullanılacak bir karakter bekler, terminaldeki geri almaya basarken terminal programı uzaktaki ana bilgisayarın beklediğinin farklı olması durumunda, uzaktaki ana bilgisayara bir karakter gönderir. terminal programı tarafından gönderilen karakterlerde bu sorunla karşılaşırsınız. Yani hızlı bir düzeltme aşağıdaki gibidir:

  1. #stty -auzak ana bilgisayarda run komutu ve çıktıda bir silme kodu olması beklenenin ne olduğunu bulun. Söyle erase=^?.
  2. Terminalde yazın Ctrlvve geri tuşuna basın. Hangi kodun "sil" olarak gönderildiğini göreceksiniz. Söyle ^H.
  3. Uzak ana bilgisayarda, çalıştırın #stty erase ^H.
    (Not: Ctrlv+ kullanın Backspace, ^ harfini manuel olarak yazmayın)

Sekme sorununu yukarıdaki ile aynı şekilde düzeltebilirsiniz.


Geri alma karakterim, ters üçgen gibi özel bir simgedir. Onun çalışmıyor Yani
gopi1410

1
Bu basit yorum kesinlikle buna gördüğüm en iyi çözüm. Bir çamur gibi geliyor ama işe yarıyor.
Paulo Matos

Bu benim için çalıştı! Yine de anlamadığım şey, kabuğumun neden beklendiği gibi geri çekilme yaptığı, ancak uygulamamdaki stdin'den okumam değil. Önerilen değişikliğin yapılması her ikisinde de geri çalışma ile sonuçlanır. Anladığım kadarıyla kabuk stdin tamponlama işlemlerini gerçekleştiriyor, bu nedenle geri alma işlemi hem kabuk hem de uygulama için aynı olmamalı mı?
Samuel,

1
Ya hiçbir kod gönderilmezse? Ctrlv + backspace hiçbir şey üretmiyor ...
Manfredo

Benim için, geri alma kodu stty -açıktı ile aynı , ancak yine de çalışmıyor
Matej J

35

"Stty" çözümünün yanı sıra, "TERM" çözümünü de deneyebilirsiniz.

Bazı terminale (macun, solaris dterm, debre xterm, you-name-it) Debian'ınıza ssh, bu terminal, TERM ortam değişkeni ile yeteneklerini (Backspace ve Tab gibi anahtarlar içeren) duyurur.

Bu nedenle, ssh ana bilgisayarından unix'e (debian veya diğer ana bilgisayara bağlı değildir), TERM değişkenini terminalinize göre ayarlayın. Kabuk olarak bash ve terminal olarak vt100 kullandığınızı düşünün:

export TERM=vt100

ps: TERM otomatik olarak ssh ile duyurulmalı, ancak bazı durumlarda bu sihir başarısız oluyor.


hala çalışmıyor :(
gopi1410 14:12

Hangi terminali kullanıyorsunuz? Peki TERM'in değerini ne denedin?
Paul

100'ü denedim. TERM'in değerini nasıl öğrenirim? Ssh'yi cygwin'den (pencerelerde) Debian'a denedim. Eğer cygwin ile ilgili sorunlar varsa, ubuntu terminalinden denedim, ama aynı problem.
gopi1410

Cygwin'in bildiğim kadarıyla iyi terminal emülasyonu olduğundan emin değilim, cygwin sadece terminal emülasyonu olmayan normal pencereler konsolunu kullanıyor (yanlış olabilir). Ubuntu'dan itibaren her şey yolunda olmalı. Debian'daki shell veya termcap kütüphanesinde yanlış bir şeyler var. Ubuntu'dan giriş yapın ve bana komutların çıktısını verin: 1. echo $ TERM 2. stty -a
paul

2
Bu bana doğrudan yardımcı olmamakla birlikte, TERM doğru bir şekilde belirlendiğinden, sorunu tanımlamaya yardımcı oldu. Terminalim için terminfo girişleri eksikti. Urxvt kullanıyorum ve bu sorunu çözmek için kemerde rxvt-unicode-terminfo kurmanız gerekiyor
Xandaros

15

Bu varsayılan kabuk çünkü olduğunu sh, kullanımı bashsadece koşmak, bashsizin kabuğundan.

bash

bashVarsayılan kabuğunuz olarak ayarlamak için:

chsh -s /bin/bash 

veya

sudo chsh -s /bin/bash yourusername

2
Bu benim için düzeltti. Asla giriş kabuğuma bakmasam bile!
James Pack,

2
Bu sorunu görüyorum ama kabuğum bash.
fraxture

6

Kabuğunuzun /bin/shyerine/bin/bash




Bu biraz daha fazla açıklanırsa ve nasıl değiştirilirse daha yararlı olurdu, ama benim sorunum buydu. Sorunu benim için düzelten bağlantınız için teşekkürler.
Jake,

Benim durumumdaki sebep buydu .. o özel kullanıcı için. Hiçbir kabuk tanımlanmadı , çizgisine /etc/passwdeklediğimde :/bin/bashişe yaradı. Hangi kabuğun kullanıldığını echo $0
öğrenebilirsiniz

6

Bunu terminalimdeki funky karakter çıkışını düzeltmek için kullanırım. Tüm özel karakterleri varsayılan değerlerine sıfırlar.

stty sane

Stty Man sayfasından:

cread ile aynı -ignbrk brkint -inlcr -igncr icrnl -iutf8 -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -xcase -tostop -echoprt echoctl echoke, tüm özel karakterleri varsayılan değerlerine göre


2

Paul'un cevabının tepesinde, renkli çıktı alma yeteneğini korumak istiyorsanız, xterm-88color'u kullanabilirsiniz.

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

1
toe -adesteklenen terminal türlerinin bir listesini gösterir ... xterm-88colorşu ana kadar tek seçenek değildir ve aslında belirli sistemlerde kullanılamayabilir.
0xC0000022L
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.