it-swarm-vi.tech

Linux Terminal: gõ phản hồi đã biến mất, ngắt dòng không được hiển thị

Thỉnh thoảng tôi phải chạy một công cụ dòng lệnh (a Python) có đầu ra dường như phá vỡ thiết bị đầu cuối của tôi. Sau khi thực hiện xong, phản hồi gõ sẽ biến mất (tôi có thể ' Tôi thấy những gì tôi đang gõ) và cả các ngắt dòng không được hiển thị. Điều này xảy ra nếu thiết bị đầu cuối được khởi động từ xa thông qua PuTTY, và cả cục bộ khi sử dụng gnome-terminal.

Ví dụ: sau khi sự cố xảy ra, nếu tôi gõ ENTER pwd ENTER, Tôi sẽ thấy:

[[email protected] ~]$
[[email protected] ~]$ pwd
/home/userA
[[email protected] ~]$

Nhưng thực tế đầu ra là:

[[email protected] ~]$ [[email protected] ~]$ /home/userA
                                                             [[email protected] ~]$

Cách duy nhất để khắc phục nó là đóng thiết bị đầu cuối đó và bắt đầu một thiết bị mới.

Có thể liên quan: đầu ra tập lệnh chứa một số định dạng dựa trên thiết bị đầu cuối (ví dụ: đảo ngược nền trước/nền để làm nổi bật một số thông báo trạng thái). Nếu tôi kết xuất dữ liệu này vào một tệp, tôi có thể thấy những thứ như [07mSome Message Here[0m.

Bất kỳ ý tưởng những gì tôi có thể làm để ngăn chặn điều này?

45
E.Z.

Thực hiện lệnh reset và thiết bị đầu cuối của bạn sẽ được khôi phục ( tham khảo ).

Vấn đề này thường xảy ra khi đổ dữ liệu nhị phân vào thiết bị đầu cuối STDOUT mà khi mã thoát nhận được xử lý có thể làm bất cứ điều gì từ thay đổi màu sắc của văn bản, vô hiệu hóa tiếng vang, thậm chí thay đổi bộ ký tự.

Cách dễ dàng để tránh điều này là đảm bảo bạn không đổ dữ liệu nhị phân không xác định vào thiết bị đầu cuối và nếu sau đó bạn phải chuyển đổi nó thành thập lục phân để đảm bảo nó không thay đổi cài đặt thiết bị đầu cuối.

97
Joshua Briefman

Để giải thích về câu trả lời của Joshua Briefman , thực thi reset -c sẽ chỉ đặt lại các ký tự điều khiển chịu trách nhiệm cho vấn đề của bạn:

tset, reset - khởi tạo thiết bị đầu cuối

Usage: tset [options] [terminal]

Options:
  -c          set control characters
  -e ch       erase character
  -I          no initialization strings
  -i ch       interrupt character
  -k ch       kill character
  -m mapping  map identifier to type
  -Q          do not output control key settings
  -r          display term on stderr
  -s          output TERM set command
  -V          print curses-version
  -w          set window-size

Cũng lưu ý mẫu dưới đây của lệnh thủ công :

Lưu ý, bạn có thể phải gõ

<LF>reset<LF>

(ký tự nguồn cấp dữ liệu thường là điều khiển-J) để thiết bị đầu cuối hoạt động, vì vận chuyển trở lại có thể không còn hoạt động trong trạng thái bất thường. Ngoài ra, thiết bị đầu cuối thường sẽ không lặp lại lệnh.

6
Bas Peeters