이진 파일을 표시 한 후 터미널 수정


122

cat실행 파일로 명령 을 시도했습니다 .

cat /bin/ls

이제이 터미널 (Linux 콘솔)에서 단어를 읽을 수 없습니다. 어떻게 고칠 수 있습니까?


4
내가 제대로 이해하면 터미널이 망가 졌을 수도 있습니다. 입력 해보십시오 reset.
파트리스 레베 스크


실제로 나는 여기에 대답이 더 낫다고 생각합니다. 다른 방법으로 dup으로 표시하는 것이 좋습니다
ilkkachu

답변:


165

예를 들어 유닉스 / 리눅스 터미널 (배쉬)에서 당신이 명령을 사용합니다 종종 moreless또는 cat파일을 볼 수 있습니다. 이 작업을 수행 할 때 파일을 보려고 의도하지 않은 경우 (예 :) 다음과 같이 /bin/ls출력됩니다.

                이진 출력의 ss

여기서 진행중인 것은 방금 프로그램 인 파일을 보려고한다는 것입니다. 위에서 언급 한 것처럼 표준 뷰어로 볼 수없는 실행 파일입니다.

방법 # 1-재설정

이 문제를 해결하려면 다음을 수행하십시오.

  1. 제어 + C를 몇 번 누르십시오 ( Ctrl+ C)
  2. 명령을 입력하고 resetreturn 키를 누르십시오

이것은 보통 터미널을보다 일반적인 모드로 되돌려 놓아야합니다. 위 단계를 수행 할 때 터미널에 블라인드를 입력하여 한 가지 더 언급하겠습니다. 올바르게 입력했는지 확인하십시오.

방법 # 2-stty sane

@sendmoreinfo의 의견에서 제안했듯이 위의 방법으로 작동하지 않으면 다음 명령을 대신 사용하는 것이 좋습니다.

$ stty sane
$ tput rs1

파일 유형 결정

또한 파일을 발견하고 터미널을 망칠 것인지 확실하지 않은 경우 파일 file형식을 다시보고 하는 명령 을 사용하여 파일을 검사 할 수 있습니다 .

예를 들어, /bin/ls해당 파일 과 함께 다음 출력이 표시됩니다.

$ 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

15
reset말기 광기를위한 100 % 치료가 아닙니다. stty sane다음에 시도하십시오 tput rs1.
sendmoreinfo

@sendmoreinfo-답변에 귀하의 제안을 추가했습니다. 나는 사용 stty sane했지만 결코 tput.
slm

1
실제로, 나는 이것을 더 연구해야합니다. reset은 rs1 문자열을 보내야합니다. (최소한 xterm의 경우) 좋은 테스트는 커서를 보이지 않게하고 재설정이 다시 커서를 가져 오는지 확인하는 것입니다.
sendmoreinfo

4
reset내 경우에 일했다
code_monk

1
clear가벼운 경우에도 작동합니다.
Navin

36

나는 보통의 트릭 아무도, 계기 했어 reset하거나 stty sane, (후 실수로 호출 일하지 print파이썬 된 ByteArray에를). 이 유용한 블로그에 있는 방법 2로 성공했습니다 .

이후 가장 유용한 별칭을 만들었습니다.

alias fix='echo -e "\033c"'

2
나는 이것이 오래된 것을 알고 있지만 이것은 나를 위해 일한 위의 유일한 대답입니다! 감사합니다
jredd

이것은 echo -e "\033c"a 이후에 섞인 문자가 잘못된 SSH 로그인 터미널 세션을 정리하는 데 도움 이 되었습니다 cat /etc/localtime.
Pro Backup

이것은 다른 모든 것들이 그렇지 않은 OpenBSD와 함께 작동했습니다.
DHW

1
screen (1)을 사용한 추가 실험에서 모든 세션의 강제 분리 (-D)가 발견되고 기본 터미널 화면에 재설정 명령을 실행하면 문제가 해결 될 수 있습니다. 또한 터미널에서 동일한 이진 데이터를 다시 표시하여 손상시킨 다음 다시 재설정 할 수있는 손상된 창 이름의 이름을 바꿔야 할 수도 있습니다.
math

1
SOL을 통해 원격 Linux 호스트의 콘솔에 연결하는 동안 vi를 사용한 후 내 터미널 크기 (LINES)가 대략 절반으로 줄었습니다. 원격 세션에는 LINES = 24가 있고 로컬 MAC 세션에는 LINES = 51이있었습니다. echo -e "\ 033c"는 저에게 효과적이지만 시도한 다른 수정 사항은 없습니다 ( 'stty sane', tput rs1, tput sgr0, reset).
Mark

7

하나의 사전 답변이 저에게 효과적이지 않았습니다. 그러나 이것은 .bashrc add의 트릭을 수행하는 것처럼 보입니다.

alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'

그런 다음 문제가 발생하면 이것을 입력하십시오 (아마도 볼 수는 없습니다!)

(ctl-c, ctl-c, ctl-c)
fix

이전 제출자들에게 감사드립니다. 또한, 참고로, 실행 파일 (또는 키 저장소 등)을 표시 할 때 터미널이 작동하지 않는 이유는 해당 파일에 제어 코드 인 이진 시퀀스가 ​​포함되어 있기 때문입니다. 제어 코드는 그래픽 문자 세트로 전환, 전경색 및 배경색을 같은 것으로 설정하는 등 임의의 작업을 수행 할 수 있습니다.


같은 일이 일어났다. 이 콤보만으로는 아무것도 효과가 없었습니다.
TrueY

1
나는 전화했다sane
qodeninja

4

tmux사용자는 이러한 모든 명령을 셸로 보낼 수 있지만 재설정은 tmux창으로 올라가지 않습니다 .

새 tmux 창 만들기 : ctrl-B c tmux list-panes 일반적으로 붕구 가 있다고 생각되는 창 번호를 참고하십시오 0. 전화합시다PPP

보르 크 XXX된 창 번호 인 tmux 창을 선택하십시오. 반드시 분할 창 번호와 같을 필요는 없습니다. ctrl-B XXX tmux send-key -R -t PPP

그런 다음이 질문에 대한 다른 답변의 모든 명령을 셸에 만들었지 만 작동하지 않았습니다. 맹인 tmux send-key -R -t PPP이 효과가 있을지 모르지만 테스트 할 수는 없습니다.


3

이전 게시물과 거의 동일한 별명을 가지고 있으며 하나의 작은 변경 () tput reset대신 rs1하나의 추가 명령 ( setterm -reset)이 있습니다.

alias clr='echo -e "\033c" ; stty sane; setterm -reset; reset; tput reset; clear'

1

위의 어떤 것도 도움이되지 않았습니다. 그러나 Jack Wasey는 tmux를 언급 했으므로 방금 실행 tmux하여 다시 종료하고 모든 것이 정상으로 돌아 왔습니다.


0

터미널을 재설정하는 방법을 조언하는 다른 답변 외에도 제대로 지키지 않으면 손상을 피할 수 없다고 생각했습니다. 그래서 간단한 텍스트 친화적 인 변환기로 출력을 보내는 것이 좋습니다 cat -v.

docker logs myjenkinscontainer 2>&1 | cat -v

보기 및 바이너리 파일을 편집하는 것은 가능 보인다 hexdump -Cvi -R( :%!xxd -g1육각보기과 :%!xxd -g1 -r진수의 변경 사항을 저장 용).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.