Làm thế nào để thiết lập lại một TTY bị hỏng?


15

TTY Slackware của tôi có thể bị phá vỡ dễ dàng bằng cách chạy:

cat some_binary_file

Sau lệnh, toàn bộ TTY sẽ không còn hiển thị các ký tự có thể đọc được mà vẫn phản hồi các sự kiện bàn phím.

Ngay cả khi tôi đăng xuất và đăng nhập lại, TTY vẫn bị hỏng và không hiển thị các ký tự có thể đọc được nữa. Tôi phải khởi động lại máy để khôi phục hoạt động TTY bình thường.

Có một giải pháp mà không cần khởi động lại toàn bộ máy?

Câu trả lời:


13

Chạy echo ^v^o, đó là echovà sau Ctrl-vđó Ctrl-o, Enter. Bạn sẽ không nhìn thấy Ctrl-v. Nó sẽ hiển thị như echo ^O. Ctrl-vđặt nó vào chế độ dài dòng, chuyển qua các ký tự điều khiển và Ctrl-osẽ thiết lập lại thiết bị đầu cuối.


4
Chỉ là một gợi ý ngắn: Nếu TTY hoàn toàn không sử dụng được hoặc bảng điều khiển ghi nhật ký, bạn có thể đặt lại dễ dàng từ bất kỳ TTY nào khác với echo ^v^o > /dev/ttyNN là số của thiết bị đầu cuối.
Torben

Điều này không hoạt động với tôi trên MacOSX (10.11.6) / iTerm2 (3.0.12) / bash (4.1.2)
Ed Randall

25

Thông thường, chạy resetđặt lại thiết bị đầu cuối. Một số ràng buộc quan trọng từ .inputrccó thể bị mất, mặc dù.


Giải pháp siêu đơn giản đã sửa lỗi khung tmux oh-my-zsh bị hỏng của tôi.
Shadoninja

Điều này tốt hơn câu trả lời được chấp nhận theo ý kiến ​​của tôi. Khi bạn không thể thấy những gì bạn đang gõ sẽ dễ gõ resetvà nhấn enter hơn là cố gắng sử dụng các tổ hợp phím, cộng với đó, nó hoạt động 100% lần.
Sergio

12

Bạn có thể thử lệnh đặt lại ANSI:

printf "\033c"

đây là người duy nhất hoạt động trên OpenBSD 5.4
execNext

1
Điều này cũng hoạt động từ shell (bash) như echo -e '\ 033c'
Ed Randall

3
@EdRandall Có. Lưu ý rằng "echo -e" không được hỗ trợ bởi tất cả các shell trong khi printfcó lợi thế là khả năng di động nên hoạt động bất kể shell nào, kể cả bash.
jlliagre

Tôi tưởng tượng rằng điều này không liên quan gì đến dấu phụ của hải âu trong IPA? U + 033Cợn ◌̼ đầy \ n {COMBINING SEAGULL DƯỚI ĐÂY}
TRiG

@TRiG Thật vậy. Không có gì để làm với trích dẫn nổi tiếng của Eric Cantona. ;-)
jlliagre

5

Thiết bị đầu cuối của tôi không hiển thị bất kỳ ký tự tôi gõ. Không có thủ đoạn nào khác làm việc. Cái này hoạt động:

stty sane

Đã làm cho tôi. Đôi khi tôi có một thiết bị đầu cuối ở trạng thái không phản hồi, nhưng không có đề xuất nào khác có thể cung cấp cho tôi đầu ra trở lại. Các đề xuất khác tôi đã thử, nhưng không hiệu quả:

echo ^v^o
reset
printf "\033c"

Nguồn: /unix//a/79686/53236


0

Thực tế có một vài vấn đề tiềm ẩn và nó có thể liên quan đến môi trường của bạn. Trước hết, như @Jesper đã trả lời, bạn muốn làm stty sane. Tuy nhiên, bạn thậm chí có thể không thiết lập môi trường chính xác với điều đó.

Điều này là do sự khác biệt giữa /bin/bash/bin/sh. Khi mở tty của bạn, chạy /bin/bashvà sau đó thử stty sane. Điều này sẽ sửa chữa mọi thứ. Cuối cùng, tôi khuyên bạn nên thêm một thứ như vậy vào .bashrc

Một lựa chọn khác là cài đặt một phần mềm lành mạnh.

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.