Tôi đã thử lệnh cat
vớ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 cat
vớ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 more
hoặc less
hoặ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:
reset
và 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 file
sẽ báo cáo lại loại tệp đó.
Ví dụ: với /bin/ls
tệ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
reset
khô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 sane
theo sau tput rs1
.
stty sane
nhưng không bao giờ tput
.
reset
đã làm việc trong trường hợp của tôi
clear
cũ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, reset
hoặc stty sane
, đã hoạt động (sau khi vô tình gọi print
mộ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
tmux
Ngườ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 tmux
khung.
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 đó XXX
số 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 PPP
sẽ 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 reset
thay 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 -C
và vi -R
( :%!xxd -g1
cho chế độ xem hex và :%!xxd -g1 -r
để lưu các thay đổi hex).
reset
.