Phím lùi, Tab, Del và phím mũi tên không hoạt động trong thiết bị đầu cuối (sử dụng ssh)


44

Khi tôi ssh vào một máy Ubuntu khác có tài khoản của mình (có quyền sudo), phím xóa lùi của tôi tạo ra một số biểu tượng khó xử khi nhấn. Ngoài ra các phím Tab, Del và Mũi tên không hoạt động.

Mặt khác, tôi cũng có một tài khoản khác trên cùng một máy và khi tôi ssh thông qua tài khoản này, thiết bị đầu cuối của nó hoạt động hoàn toàn tốt. Tôi không thể hiểu tại sao điều này xảy ra.


Tôi có cùng một vấn đề - máy chủ của tôi là Win7-64 và các hệ thống khách từ xa của tôi đều là Ubuntu Server 10.04. Trên một máy chủ, các phím hoạt động, trên một máy chủ khác, không.
Mateng

Thông tin bổ sung: Tôi vào các máy từ xa bằng Putty / Kitty
Mateng

Bạn có thể thử ssh thông qua một chương trình khác, hoặc tạo một hồ sơ mới cho hệ thống đích không?
belacqua

Tôi cũng gặp phải vấn đề với cygwin (trong win 7)
gopi1410

Điều gì được trả về bằng cách gõ echo "$ TERM" , khi điều này xảy ra?
david6

Câu trả lời:


32

EDIT: Tham khảo: Câu trả lời của Mateng

Mateng gần gũi ở chỗ tôi nghĩ có lẽ bạn đang chạy Bourne Shell. Nhưng bạn không nên chỉnh sửa /etc/passwdtập tin của bạn trực tiếp. chshThay vào đó, hãy thử sử dụng lệnh:

chsh -s /bin/bash

Cờ -s sẽ làm cho shell mới (Bash trong trường hợp này) shell đăng nhập của bạn, đi về phía trước.


Có vẻ hợp pháp. Nếu gopi1410 đồng ý, 50 đại diện là của bạn.
Mateng

@Mateng: đã đồng ý, và một liên kết đến câu trả lời của bạn được thêm vào để hoàn thành
gopi1410

1
Chạy với quyền root:sudo chsh -s /bin/bash
KrisWebDev

1
@ Làm việc cho tôi hơn 3 năm sau. Cảm ơn bạn rất nhiều! Bạn thật tuyệt vời!
goncalotomas

17

Những thay đổi sau đây đã giải quyết vấn đề cho tôi. Đầu tiên, tôi đã kiểm tra shell nào đang chạy:

$ echo $0

đã trả lại:

/bin/sh

Như tôi đã đọc trong bài viết này trong Ubuntuforums , thay đổi vỏ để /bin/bashmang lại giải pháp. Vì vậy, tôi đã chỉnh sửa cài đặt người dùng của mình /etc/passwdthành:

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

Tôi đăng xuất, sau đó đăng nhập lại. Thật kỳ lạ, tôi đã phải chuyển đổi vỏ thủ công (có thể một số bộ đệm đã hoạt động) bằng cách nhập này:

/bin/bash

Voila!
[Vấn đề phát sinh do cập nhật phân phối.]


13

Khi bạn lần đầu tiên vào, hãy thử hai lệnh này

stty sane
export TERM=linux

Tôi phải làm điều này trên một số máy mà tôi gặp phải để khắc phục chính xác sự cố này


1
Tôi đã thử điều đó, nhưng vấn đề vẫn tồn tại
Mateng

1
Bạn đã thử thuật ngữ như VT100 thay vì linux? những gì về stty erase <backspace>(<backspace> là nơi bạn thực sự nhấn phím)
Drake Clarris

Với (Mũi tên lên) : $ stty erase '^[[A' stty: invalid integer argument '\033[A'. Với [Backspace]: $ stty erase '^?'nó hoạt động. Với [Tab]: $ stty erase ' ' không có lỗi, nhưng sau đó [Backspace] trở lại hành vi kỳ quặc.
Mateng

Tôi đã thử export TERM=VT100, nhưng không có kết quả.
Mateng

1
stty tab0không giúp Tôi đoán, một số loại cấu hình lại chung của xterm là cần thiết. Hoặc sơ đồ đơn giản là sai?
Mateng

5

Một trong những cách dễ nhất để khắc phục sự cố này là nhập / bin / bash tại dấu nhắc giao diện dòng lệnh:

$ / thùng / bash

Lệnh được đề cập ở trên sẽ thực thi Bourne Again Shell trên lớp vỏ hiện có dưới dạng một quy trình con. Điều này thể hiện nhược điểm của việc sử dụng nhiều tài nguyên hơn, nhưng không có gì phải chỉnh sửa và không có quyền đặc biệt nào được yêu cầu. Ví dụ, trong các phiên bản Kubfox gần đây, nó sẽ bắt đầu phiên / bin / bash trên giao diện vỏ dòng lệnh mặc định / bin / dash.

Tuy nhiên, để duy trì các thay đổi, một khả năng là chỉnh sửa tệp / etc / passwd và thêm / chỉnh sửa / thay thế shell mặc định thành / bin / bash sau ký tự ':' cuối cùng trong dòng tương ứng với người dùng. Tuy nhiên, để chỉnh sửa tệp này, các đặc quyền của quản trị viên sẽ được yêu cầu.


1

Terminal Gbnome Terminal 'không mô phỏng chính xác' xterm '..

từ: Wikipedia >> Thiết bị đầu cuối Gnome

Thiết bị đầu cuối Gnome mô phỏng trình giả lập thiết bị đầu cuối xterm và cung cấp một số tính năng tương tự.


Một chuyên luận về vấn đề và (các) giải pháp có thể được tìm thấy ở đây:

Linux Backspace / Xóa mini-HOWTO

Mọi người dùng Linux đã sớm bị mắc kẹt trong một tình huống trong đó việc sử dụng các phím Backspace và Xóa trên bàn điều khiển và trên X dường như là không thể. Bài viết này giải thích tại sao điều này xảy ra và đề xuất giải pháp. Các khái niệm được đưa ra ở đây về cơ bản là không phụ thuộc vào phân phối: do nội dung khác nhau của các tệp cấu hình hệ thống trong mỗi bản phân phối, tôi sẽ cố gắng cung cấp cho người đọc đủ kiến ​​thức để nghĩ ra cách khắc phục của riêng mình, nếu cần.

Tôi giả sử rằng phím Backspace sẽ quay trở lại một ký tự và sau đó xóa ký tự dưới con trỏ. Mặt khác, phím Xoá sẽ xóa ký tự bên dưới con trỏ, mà không di chuyển nó. Nếu bạn nghĩ rằng nên trao đổi chức năng của hai phím, mặc dù thực tế là hầu hết các bàn phím đều có mũi tên chỉ bên trái (←) trên phím Backspace, nhưng bài báo này sẽ không cung cấp cho bạn giải pháp ngay lập tức, nhưng chắc chắn là bạn có thể tìm thấy những lời giải thích được đưa ra ở đây hữu ích.

Giải pháp đơn giản nhất được đưa ra (có thể hoạt động ở đây) là sử dụng: bash $ export TERM = gnome


1

Là người dùng root chỉnh sửa tệp / etc / passwd cho người dùng của bạn và thay đổi từ / bin / sh thành / bin / bash

hdfs: x: 1020: 1001 :: / home / hdfs: / bin / sh thành hdfs: x: 1020: 1001 :: / home / hdfs: / bin / bash

Điều này làm việc cho tôi.


1

Tôi đã thử tất cả các ghi chú cộng ở trên ( liên kết này ) nhưng không thành công. Bạn có thể muốn kiểm tra vim đã được cài đặt.

Mình thường dùng vi không vim. Thế là tôi cài vim.

$ sudo apt-get install vim

Sau đó, các nét bàn phím bắt đầu hoạt động bình thường khi tôi thực thi vi. Nhìn vào đầu ra của các mục sau, có vẻ như vi đã được đặt bí danh cho vim sau khi cài đặt:

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

0

Đây là một vấn đề tương thích với bàn phím, tức là cách nó được diễn giải trong hệ thống máy chủ. Bạn có thể phải sử dụng j hoặc h để di chuyển trong trình soạn thảo vi trong chế độ lệnh. Mũi tên sẽ không hoạt động.

Kiểm tra tùy chọn cấu hình-> khả năng tương thích trong hệ thống máy chủ cho người dùng cụ thể đó.


0

Được rồi, tôi biết đây không phải là một "giải pháp" cho mỗi lần nói và nó có thể không giúp ích cho nhiều bạn , nhưng hy vọng nó sẽ giúp ít nhất 1 bạn . Nó đã khắc phục vấn đề của tôi.

Sáu tháng tuổi của tôi đập vào bàn phím của tôi và các phím mũi tên của tôi ngừng hoạt động trong phiên putty của tôi vào một hộp Debian. Họ đã làm việc ở mọi nơi khác (tất cả các chương trình khác ngoài putty). Sau khi Google và thậm chí hạ cánh ở đây (tôi sẽ đóng tab này, nó đã không giải quyết nó cho tôi). Tôi đã thử một cái gì đó. Tôi đã mở một phiên ssh mới vào cùng một hộp và các phím mũi tên của tôi đã hoạt động. Tôi đã tham gia phiên màn hình của mình và chúng không hoạt động. Vì vậy, một cái gì đó vừa xảy ra gắn liền với phiên màn hình hiện tại vô hiệu hóa các phím mũi tên. Thật không may, tôi đã ở giữa một dự án lớn, có 28 cửa sổ mở trong phiên màn hình của tôi và không muốn đóng phiên, mất vị trí của tôi trên tất cả 28 cửa sổ.

Vì thế..

Trong khi trên bash shell, tôi đã thử tất cả các kết hợp mà tôi có thể nghĩ ra, về CTRL + lên, xuống, trái phải, ALT + lên, xuống, trái, phải, SHIFT + lên, xuống, trái phải, CTRL + ALT + lên, xuống , trái phải, CTRL + SHIFT + lên, xuống, trái phải, v.v ... Vẫn không gặp may, tôi cũng đã thử menu windows và các phím ứng dụng windows với lên, xuống, trái phải.

Bây giờ mũi tên của tôi hoạt động trở lại! Một cái gì đó về một trong những sự kết hợp của những gì ở trên và các phím mũi tên đã cố định nó.


0

Không có câu trả lời nào ở trên khắc phục được vấn đề giống hệt của tôi, tức là không thể sử dụng phím lùi hoặc các phím tương tự sau khi sshing đến một điều khiển từ xa từ Ubuntu (ở đây là Ubuntu-17.10 với ncurses-6.0).

Nó kết thúc là một vấn đề với terminfo. Về cơ bản, thiết bị đầu cuối gnome của tôi nói rằng đó là thiết bị đầu cuối xterm-256color (thông qua biến TERM, được xuất bởi ssh sang điều khiển từ xa) nhưng điều khiển từ xa không có cấu hình terminfo cho xterm-256color.

Làm như sau đã khắc phục vấn đề:

$ host: echo $ HẠN
xterm-256 màu
$ máy chủ: infocmp> terminfo.src
$ máy chủ: tic terminfo.src
$ host: scp .terminfo / x / xterm-256color $ từ xa: / usr / share / terminfo / x / xterm-256color

infocmp, không có bất kỳ tùy chọn nào, tạo ra một danh sách nguồn cho thiết bị đầu cuối trong biến môi trường $ TERM. Vì vậy, nó tương đương với infocmp -I $ HẠN.

Sau đó, nguồn kết quả được biên dịch qua tic.

Cuối cùng, cài đặt cấu hình terminfo tương ứng đến vị trí từ xa. Vì vậy, lần sau khi tôi kết nối với $ remote qua $ host, nó sẽ biết về thiết bị đầu cuối của tôi.


Khối mã của bạn làm gì? tạo một cấu hình thuật ngữ nào đó? Sẽ rất tốt nếu có một số lời giải thích, chạy mã bí ẩn không phải là ý tưởng tốt nhất, ngay cả các trang người đàn ông của họ cũng không rõ ràng về hiệu ứng mặc định của infocmp hoặc cách thức này hữu ích
Xen2050

@ Xen2050: Tôi đã thêm một lời giải thích cho mỗi lệnh. infocmp mà không có tùy chọn nào tương đương với infocmp -I $ TERM. Điều này được mô tả trong trang man nhưng có hai phần: "Nếu không có tùy chọn nào được chỉ định và không hoặc một tên gọi được chỉ định, tùy chọn -I sẽ được giả sử. [...] Các tùy chọn -I, -L và -C sẽ tạo ra một danh sách nguồn cho mỗi thiết bị đầu cuối có tên. -Tôi sử dụng tên terminfo Nếu không có tên gọi nào, biến môi trường TERM sẽ được sử dụng cho tên thiết bị đầu cuối. "
dùng1436126
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.