Là lỗi văn bản vô hình trong bash là một lỗi hoặc một tính năng?


8

Trên mỗi bản phân phối linux tôi đã sử dụng trong 10 năm qua, có một sự bất tiện sau: Bạn chạy một chương trình trong thiết bị đầu cuối bằng cách sử dụng bash. Sau khi chương trình bị dừng hoặc gián đoạn, bất cứ điều gì bạn gõ đôi khi sẽ xuất hiện vô hình. Sau đó, bạn có thể nhập lệnh "đặt lại" và màn hình sẽ bị xóa và con trỏ sẽ hiển thị lại.

Vì lỗi này, tôi luôn thay đổi shell thành zsh mỗi khi tôi đăng nhập vào terminal mới lần đầu tiên. Trong zsh lỗi văn bản vô hình không bao giờ xảy ra. Vì lỗi này đã tồn tại hơn 10 năm rồi nên tôi bắt đầu nghi ngờ rằng đó là một tính năng của bash. Vì vậy, bất cứ ai có thể cho tôi biết những gì nó tốt cho?

Ngoài ra, trang chủ / trình theo dõi lỗi thực sự nằm ở đâu. Bash.org dường như là về "IT bashing", và kênh #bash irc cũng vậy. Tại sao hầu hết các bản phân phối linux bao gồm một shell rất khó đưa ra phản hồi, khi một vài lựa chọn thay thế ít nhất là tốt?

bash  shell 

1
Vậy ... phần nào trong câu hỏi của bạn lại liên quan đến lập trình?
Ignacio Vazquez-Abrams

2
Hãy hướng dẫn tôi đến đúng nơi để hỏi. Điều trớ trêu là một tìm kiếm google trên "bash shell tracker" hiện dẫn đến trang này.

Đó là những gì xảy ra khi bạn cattập tin nhị phân ...
Yab

Câu trả lời:


11

Điều đó chỉ có nghĩa là trong zsh bạn không thể làm một cái gì đó như:

stty -echo     #turn off echoing what you type
stty echo      #turn on echoing
reset          #reset terminal to the default state

Trong bash, lệnh trên hoạt động như mong đợi - tắt tiếng vang của lệnh. Chỉ cần thử trong zsh - không hoạt động. Ai có lỗi? ;)

Tắt tiếng vang là có thể đạt được với các chuỗi ESC, vì vậy nếu chương trình của bạn gửi ngẫu nhiên các chuỗi nhị phân đến thiết bị đầu cuối, {hoặc khi bạn CTRL- \ một số chương trình định hướng màn hình), đôi khi nó sẽ hoạt động như thế stty -echovà bạn phải làm resetnhư vậy. Nó không phải là một lỗi - đơn giản là cách các thiết bị đầu cuối (và trình giả lập thiết bị đầu cuối) hoạt động.

Có gì lạ, tại sao trong zsh stty -echokhông hoạt động.


2
Trong zsh, bạn có thể ttyctl -fkhông cho phép thay đổi các chế độ đầu cuối và ttyctl -ucho phép chúng thay đổ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.