Tại sao thiết bị đầu cuối không hiển thị các dòng mới?


15

Ví dụ, khi tôi gõ lệnh sau,

echo line | (cat >/dev/null; vi)

thậm chí bọc trong một cái vỏ khác,

sh -c 'echo line | (cat >/dev/null; vi)'

và trở về từ Vim, bây giờ nó sẽ không hiển thị trở lại nữa.

Làm thế nào tôi có thể làm cho nó một lần nữa hiển thị các dòng mới? (Không có lối ra.)


nhận xét chuyển đổi bắt buộc sang emacs :)
Đăng Khoa

Câu trả lời:


34

thử một hoặc cả hai thứ sau:

  • ctrl+c, sau đó gõ reset, sau đó nhấn enter.
  • ctrl+c, sau đó gõ stty sane, sau đó nhấn enter.

đó ctrl+clà để xóa bất kỳ ký tự nào khác mà bạn có thể đã gõ trong dòng lệnh.

resethoặc stty sanethường sửa chữa một thiết bị đầu cuối lộn xộn. Đọc trang người đàn ông của resetsttyđể biết thêm thông tin.

Lưu ý rằng nếu các thiết bị đầu cuối là điều sai lầm đủ sau đó nó có thể là thậm chí không ctrl+chay entersẽ làm việc như mong đợi. Vẫn còn các phương pháp khác để nhập các ký tự, nhưng chúng liên quan đến ma thuật bóng tối cổ đại. Trong trường hợp đó, thường dễ dàng hơn chỉ cần đóng thiết bị đầu cuối và bắt đầu một thiết bị khác.

Sự hiểu biết của tôi về hoạt động bên trong của một thiết bị đầu cuối không đủ sâu để giải thích tại sao hoặc làm thế nào nó làm điều đó.


4

Nó không phải là mục đích sử dụng viđể lấy đầu vào từ stdin.

Dù sao, bạn có thể nhận được dòng mới một lần nữa với

stty sane

mà không đặt lại thiết bị đầu cuối.

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.