Tôi đã thử lệnh catvới một tệp thực thi:
cat /bin/ls
Bây giờ tôi không thể đọc bất kỳ từ nào trong thiết bị đầu cuối này (bảng điều khiển Linux). Làm thế nào tôi có thể sửa chữa nó?
Tôi đã thử lệnh catvới một tệp thực thi:
cat /bin/ls
Bây giờ tôi không thể đọc bất kỳ từ nào trong thiết bị đầu cuối này (bảng điều khiển Linux). Làm thế nào tôi có thể sửa chữa nó?
Câu trả lời:
Thông thường khi trong một thiết bị đầu cuối Unix / Linux (Bash) ví dụ bạn sẽ sử dụng các lệnh morehoặc lesshoặc catđể xem một tập tin. Khi bạn làm điều này và tập tin không có nghĩa là được xem (chẳng hạn như /bin/ls), bạn sẽ nhận được đầu ra như thế này:

Điều đang diễn ra ở đây là bạn vừa cố gắng xem một tập tin là một chương trình. Một tệp thực thi không có nghĩa là được xem với người xem tiêu chuẩn như tôi đã đề cập ở trên.
Để khắc phục vấn đề này, bạn có thể làm như sau:
resetvà nhấn returnĐiều này thường sẽ đưa thiết bị đầu cuối của bạn trở lại một chế độ bình thường hơn. Tôi sẽ đề cập đến một điều nữa, khi bạn thực hiện các bước trên, bạn sẽ bằng cách gõ chúng vào thiết bị đầu cuối của bạn. Vì vậy, chỉ cần chắc chắn rằng bạn đang gõ nó chính xác.
Như được đề xuất trong các nhận xét của @sendmoreinfo, bạn có thể gặp may mắn hơn khi sử dụng các lệnh sau thay vào đó nếu cách trên không hoạt động:
$ stty sane
$ tput rs1
Ngẫu nhiên, nếu bạn gặp một tệp và không chắc chắn liệu nó có làm hỏng thiết bị đầu cuối của bạn không, bạn có thể kiểm tra tệp bằng lệnh filesẽ báo cáo lại loại tệp đó.
Ví dụ: với /bin/lstệp đó hiển thị đầu ra sau:
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
resetkhông phải là một phương pháp chữa trị 100% cho chứng điên cuối cùng. Hãy thử stty sanetheo sau tput rs1.
stty sanenhưng không bao giờ tput.
resetđã làm việc trong trường hợp của tôi
clearcũng hoạt động cho các trường hợp nhẹ.
Tôi đã có một dịp mà không có bất kỳ thủ thuật thông thường nào, resethoặc stty sane, đã hoạt động (sau khi vô tình gọi printmột con trăn bằng con trăn). Tôi đã thành công với phương pháp 2 được liệt kê trên blog hữu ích này .
Kể từ đó tôi đã tạo ra một bí danh hữu ích nhất:
alias fix='echo -e "\033c"'
echo -e "\033c"giúp tôi dọn sạch phiên cuối thiết bị đăng nhập SSH bị cắt xén nhân vật được trộn lẫn sau một cat /etc/localtime.
Không có câu trả lời trước làm việc cho tôi. Nhưng điều này dường như thực hiện thủ thuật trong .bashrc thêm:
alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'
và sau đó khi sự cố xảy ra, hãy nhập loại này (mặc dù bạn có thể không nhìn thấy nó!)
(ctl-c, ctl-c, ctl-c)
fix
Rất cám ơn những người nộp trước. Ngoài ra, như một lưu ý phụ, lý do khiến thiết bị đầu cuối của bạn trở nên khó khăn khi hiển thị các tệp thực thi đó (hoặc kho khóa, v.v.) là vì các tệp đó thường chứa các chuỗi nhị phân là mã kiểm soát. Các mã điều khiển có thể thực hiện những điều ngẫu nhiên như chuyển sang bộ ký tự đồ họa, đặt màu nền trước và màu nền cho cùng một thứ, v.v.
sane
tmuxNgười dùng có thể gửi tất cả các lệnh này đến trình bao của mình, nhưng việc đặt lại không được nâng lên tmuxkhung.
Tạo cửa sổ tmux mới:
ctrl-B c
tmux list-panes
Thông thường, hãy lưu ý số khung bạn nghĩ là có nhiều nút 0. Hãy gọi nó làPPP
Chọn cửa sổ tmux, trong đó XXXsố cửa sổ được borked, không nhất thiết phải giống với số khung.
ctrl-B XXX
tmux send-key -R -t PPP
Sau đó, bạn sẽ thấy tất cả các lệnh trong các câu trả lời khác cho câu hỏi này đã đưa nó vào vỏ của bạn, nhưng không hoạt động! Có lẽ một người mù tmux send-key -R -t PPPsẽ làm việc, nhưng tôi không thể kiểm tra.
Tôi có gần như cùng một bí danh như bài trước, với một thay đổi nhỏ ( tput resetthay vì rs1) và một lệnh được thêm vào ( setterm -reset):
alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'
Ngoài các câu trả lời khác tư vấn cách thiết lập lại thiết bị đầu cuối, tôi cho rằng tham nhũng không thể tránh được trừ khi được bảo vệ đúng cách. Vì vậy, tốt hơn tôi nên gửi đầu ra cho một trình chuyển đổi thân thiện với văn bản đơn giản cat -v:
docker logs myjenkinscontainer 2>&1 | cat -v
Xem và chỉnh sửa các tệp nhị phân dường như có thể với hexdump -Cvà vi -R( :%!xxd -g1cho chế độ xem hex và :%!xxd -g1 -rđể lưu các thay đổi hex).
reset.