Terminalde çalışmayan Backspace, Tab, Del ve ok tuşları (ssh kullanarak)


44

Hesabımla (sudo izinleriyle) başka bir Ubuntu makinesine girdiğimde, geri alma anahtarım basıldığında bazı garip semboller oluşturuyor. Ayrıca Sekme, Del ve Ok tuşları ç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.


Aynı sorunu yaşıyorum - ana bilgisayarım Win7-64 ve uzak konuk sistemlerim Ubuntu Server 10.04. Bir sunucuda, anahtarlar diğerinde değil çalışır.
Mateng

Ek Bilgi: Uzaktaki makinelere Putty / Kitty
Mateng ile

Farklı bir program aracılığıyla ssh denemeyi veya hedef sistem için yeni bir profil oluşturmayı deneyebilir misiniz?
belacqua

Ben de cygwin ile (7 galibiyetle)
yaşadım

Bu olduğunda, echo "$ TERM" yazarak ne döndürülür ?
david6,

Yanıtlar:


32

EDIT: Referans: Mateng'in cevabı

Mateng, muhtemelen Bourne Shell’i işlettiğini düşünüyorum. Ancak /etc/passwddosyanızı doğrudan düzenlememelisiniz . chshBunun yerine komutu kullanmayı deneyin :

chsh -s /bin/bash

-S bayrağı yeni kabuğu (bu durumda Bash) giriş kabuğunuzu ilerletir.


Mantıklı gibi. Eğer gopi1410 kabul ederse, 50 temsilci sizindir.
Mateng

@Mateng: kabul etti, ve cevabınızın linkini tamamlamak için ekledi
gopi1410

1
Kök olarak çalıştır:sudo chsh -s /bin/bash
KrisWebDev

1
@ 3 yıl sonra benim için çalıştım. Çok teşekkür ederim! Harikasın!
goncalotomas

17

Aşağıdaki değişiklikler benim için sorunu çözdü. İlk önce hangi kabuğun çalıştığını kontrol ettim:

$ echo $0

hangi döndü:

/bin/sh

Bu yazıda Ubuntuforums'ta okuduğum gibi , kabuk değiştirerek /bin/bashçözümü getiriyor. Böylece kullanıcı ayarlarımı düzenledim /etc/passwd:

johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash

Çıkış yaptım, sonra tekrar giriş yaptım. Garip bir şekilde, şunu girerek kabuğu el ile değiştirmek zorunda kaldım (belki bazı önbellek etkindi):

/bin/bash

İşte bu kadar!
[Sorun bir dağıtım güncellemesi nedeniyle ortaya çıktı.]


13

ilk ssh girdiğinde bu iki komutu dene

stty sane
export TERM=linux

Bu sorunu çözmek için girdiğim bazı makinelerde bunu yapmak zorundayım.


1
Bunu denedim, ama sorun devam ediyor
Mateng

1
Linux yerine VT100 olarak terimi denediniz mi? peki ya stty erase <backspace>(<backspace>, gerçekten anahtarı vurduğun yerde olmak)
Drake Clarris 26:12

(Ok Yukarı) ile: $ stty erase '^[[A' stty: invalid integer argument '\033[A'. [Backspace] ile: $ stty erase '^?'çalışır. [Tab] ile: $ stty erase ' ' hata yok, ancak sonra [Geri], tek davranışa geri döndü.
Mateng

Denedim export TERM=VT100ama boşuna.
Mateng

1
stty tab0yardımcı olmuyor. Sanırım, bir tür genel xterm yeniden yapılandırma gerekli. Ya da tuş haritası sadece yanlış mı?
Mateng

5

Bu sorunu çözmenin en kolay yollarından biri, komut satırı arayüzü komut isteminde / bin / bash yazmanızdır:

$ / bin / bash

Yukarıda bahsedilen komut bir alt işlem olarak mevcut kabuğun üstüne Bourne Again Shell'i yürütecektir. Bu, daha fazla kaynak kullanmanın dezavantajını sunar, ancak hiçbir şeyin düzenlenmesi gerekmez ve özel izinler gerekmez. Örneğin, son Kubuntu sürümlerinde, varsayılan / bin / dash komut satırı kabuğu arabiriminin tepesinde bir / bin / bash oturumu başlatacak.

Ancak değişiklikleri devam ettirmek için, / etc / passwd dosyasını düzenlemek ve kullanıcıya karşılık gelen satırdaki son ':' karakterinden sonra / shell / bash'a varsayılan kabuğu eklemek / düzenlemek / değiştirmek mümkündür. Ancak bu dosyayı düzenlemek için yönetici ayrıcalıkları gerekir.


1

'Gbnome Terminali' tam olarak 'xterm'i taklit etmiyor ..

from: Wikipedia >> GNOME Terminali

GNOME Terminali, xterm terminal emülatörüne öykünür ve aynı özelliklerin bir kısmını sunar .


Konu ve çözüm (ler) ile ilgili bir tezi burada bulabilirsiniz:

Linux Geri al / Sil mini NASIL

Her Linux kullanıcısı er ya da geç, konsolda ve X üzerinde Silme ve Silme tuşlarının çalışmasının imkansız göründüğü bir durumda yakalandı. Bu makale bunun neden olduğunu açıklar ve çözümler önerir. Burada verilen kavramlar, esasen dağıtımdan bağımsızdır: Her bir dağıtımdaki sistem konfigürasyon dosyalarının geniş ölçüde farklı olması nedeniyle, okuyucuya gerektiğinde kendi düzeltmelerini düşünmesi için yeterli bilgiyi vermeye çalışacağım.

Backspace tuşunun bir karakter geriye gitmesi ve ardından imlecin altındaki karakteri silmesi gerektiğini varsayalım. Öte yandan, Delete (Sil) tuşu, imlecin altındaki karakteri, hareket ettirmeden silmelidir. İki klavyenin işlevinin değişmesi gerektiğini düşünüyorsanız, çoğu klavyenin Backspace tuşunda sola (←) işaret eden bir ok içermesine rağmen, o zaman bu makale size hemen çözüm sunmaz, Burada verilen açıklamaları faydalı bulabilir.

Verilen en basit çözüm (burada işe yarayabilir) kullanmaktır: bash $ export TERM = gnome


1

Kök kullanıcı olarak, kullanıcı için / etc / passwd dosyasını düzenleyin ve / bin / sh ile / bin / bash arasında bir değişiklik yapın.

hdfs: x: 1020: 1001 :: / ana sayfa / hdfs: / bin / sh to hdfs: x: 1020: 1001 :: / ana sayfa / hdfs: / bin / bash

Bu benim için çalıştı.


1

Yukarıdaki tüm artıları ( bu bağlantıdan ) gelen notları başarı ile denedim . Vim yüklü olup olmadığını kontrol etmek isteyebilirsiniz.

Genelde vi değil vim kullanırım. Bu yüzden vim kurdum.

$ sudo apt-get install vim

Bundan sonra, klavye darbeleri vi'yi çalıştırdığımda düzgün çalışmaya başladı. Aşağıdakilerin çıktısına bakarak, kurulumdan sonra vi'nin takma adı verildi:

$ ls -al /etc/alternatives | grep vi 
lrwxrwxrwx   1 root root    18 Jan 13 09:38 vi -> /usr/bin/vim.basic

0

Bu, klavyeyle, yani ana sistemde nasıl yorumlandığını gösteren bir uyumluluk sorunudur. Komut modunda vi editöründe hareket etmek için j veya h tuşunu kullanmanız gerekebilir. Oklar çalışmayacak.

Belirli bir kullanıcı için ana bilgisayar sistemindeki profil tercihleri-> uyumluluğunu kontrol edin.


0

Tamam, bunun söylenecek bir "çözüm" olmadığını biliyorum ve bu çoğunuzun size yardımcı olamayabilir , ama umarım en az birinize yardımcı olur . Sorunumu çözdü.

Altı aylık klavyeme çarptı ve ok tuşları macun oturumumda bir Debian kutusuna girmeyi bıraktı. Her yerde (macun dışındaki diğer tüm programlar) çalıştılar. Google’dan ve hatta buraya indikten sonra (bu sekmeyi kapatacağım, benim için çözmedi). Bir şey denedim. Aynı kutuya yeni bir ssh oturumu açtım ve ok tuşlarım çalıştı. Ekran oturumuma katıldım ve çalışmadılar. Bu yüzden, ok tuşlarını devre dışı bırakarak geçerli ekran oturumuna bağlı bir şey oldu. Ne yazık ki, büyük bir projenin ortasında (am) oldum, ekran oturumumda 28 pencerem açıktı ve oturumu kapatmak istemedim, 28 penceredeki yerimi kaybediyordum.

Yani..

Beşinci kabuk kabuğunda, CTRL + yukarı, aşağı, sol sağ, ALT + yukarı, aşağı, sol, sağ, ÜSTKRKT + yukarı, aşağı, sol sağ, CTRL + ALT + yukarı, aşağı aklınıza gelebilecek tüm kombinasyonları denedim , soldan sağa, CTRL + ÜST KRKT + yukarı, aşağı, sağa sola, vb. Yine de şanssızken, Windows menüsü ve Windows uygulaması tuşlarını yukarı, aşağı, sağa sola da denedim.

Şimdi oklarım tekrar işe yarıyor! Yukarıdakilerin kombinasyonlarından biriyle ilgili bir şey ve ok tuşları onu düzeltti.


0

Yukarıdaki cevapların hiçbiri benim özdeş problemimi çözmedi, yani bir Ubuntu'dan bir uzaktan kumandayı ssh ettikten sonra geri al veya benzeri tuşları kullanamaz (burada ubuntu-17.10 ile ncurses-6.0).

Terminfo ile ilgili bir sorun olarak sona erer. Temelde, gnome-terminalim bir xterm-256color terminali olduğunu söylüyor (ssh ile uzaktan kumandaya verilen TERM değişkeni aracılığıyla), ancak uzaktan kumandada xterm-256color için bir terminfo konfigürasyonu yoktu.

Aşağıdakileri yapmak sorunu çözdü:

$ host: echo $ TERM
xterm-256color
$ host: infocmp> terminfo.src
$ host: tic terminfo.src
$ host: scp .terminfo / x / xterm-256color $ remote: / usr / paylaşım / terminfo / x / xterm-256color

Herhangi bir seçenek olmadan infocmp, terminal için $ TERM değişkenindeki bir kaynak listesini üretir. Yani infocmp -I $ TERM ile eşdeğerdir.

Sonra ortaya çıkan kaynak tic ile derlenir.

Son olarak, ilgili terminfo konfigürasyonunu uzak konuma kurun. Bu yüzden bir dahaki sefere $ host'a $ host ile bağlandığımda terminalim hakkında bilgi sahibi olacak.


Kod bloğunuz ne işe yarar? bir şekilde bir terim config yaratılsın mı? Bazı açıklamalara sahip olmak güzel olurdu, gizem kodunu çalıştırmak en iyi fikir değil, hatta man sayfaları bile infocmp'ın varsayılan etkisi konusunda net değil ya da bunun ne kadar yararlı olduğu
Xen2050

@ Xen2050: Her komut için bir açıklama ekledim. Herhangi bir seçenek olmadan infocmp, infocmp -I $ TERM ile eşdeğerdir. Bu, man sayfasında ancak iki bölümde açıklanmaktadır: "Eğer hiçbir seçenek belirtilmezse ve sıfır veya bir terim belirtilirse, -I seçeneği kabul edilir. [...] -I, -L ve -C seçenekleri Her terminal için bir kaynak listesi üretecektir. -Ben terminfo isimlerini kullanıyorum Eğer bir termnames verilmezse, TERM çevre değişkeni terminal ismi için kullanılacaktır. "
kullanıcı1448926
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.