바이너리 표시 후 터미널 수정

바이너리 표시 후 터미널 수정

cat실행 파일을 사용하여 명령을 실행 하려고 합니다 .

cat /bin/ls

이제 이 터미널(Linux 콘솔)에서는 어떤 단어도 읽을 수 없습니다. 어떻게 해결할 수 있나요?

답변1

예를 들어 Unix/Linux 터미널(Bash)에서는 파일을 보기 위해 또는 more명령 을 자주 사용하게 됩니다. 이 작업을 수행하고 파일을 보려고 하지 않으면(예 : ) 다음과 같은 출력이 표시됩니다.lesscat/bin/ls

                바이너리 출력 SS

여기서 무슨 일이 일어나고 있는지는 방금 프로그램 파일을 보려고 했다는 것입니다. 위에서 언급했듯이 실행 파일은 표준 뷰어로 보기에 적합하지 않습니다.

방법 #1 - 재설정

이 문제를 해결하려면 다음을 수행할 수 있습니다.

  1. Ctrl + C를 여러 번 누릅니다( Ctrl+ C).
  2. 명령을 입력 reset하고 Enter를 누르십시오

그러면 일반적으로 터미널이 보다 일반적인 모드로 돌아갑니다. 한 가지 더 말씀드리고 싶은 점은 위 단계를 수행할 때 터미널에 해당 내용을 입력하지 않게 된다는 것입니다. 그러니 반드시 정확하게 입력하시기 바랍니다.

방법 #2 - 제정신

@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

답변2

나는 한 번 일반적인 트릭 reset이나 트릭 중 어느 것도 stty sane작동하지 않는 상황에 직면했습니다( print예기치 않은 Python 바이트 배열 호출 후). 나는 성공했다방법 2는 이 유용한 블로그에 나열되어 있습니다..

그 이후로 저는 가장 유용한 별칭 중 하나를 만들었습니다.

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

답변3

이전에는 어떤 답변도 효과가 없었습니다. 그러나 이것은 .bashrc에 다음을 추가하여 문제를 해결한 것으로 보입니다.

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

그런 다음 문제가 발생하면 이를 입력하십시오(보이지 않더라도!).

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

이전 커미터들에게 많은 감사를 드립니다. 또한, 참고로 이러한 실행 파일(또는 키 저장소 등)을 표시할 때 터미널이 불안정해지는 이유는 이러한 파일에 제어 코드인 바이너리 시퀀스가 ​​포함되는 경우가 많기 때문입니다. 제어 코드는 그래픽 문자 집합으로 전환하거나 전경색과 배경색을 동일한 내용으로 설정하는 등 임의의 작업을 수행할 수 있습니다.

답변4

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

새 tmux 창을 만듭니다. ctrl-B c tmux list-panes 깨진 것으로 생각되는 창의 번호(일반적으로 )를 기록해 둡니다 0. 그렇게 부르자PPP

차단된 창 번호가 있는 tmux 창을 선택합니다. XXX창 번호와 반드시 동일할 필요는 없습니다. ctrl-B XXX tmux send-key -R -t PPP

그러면 이 질문에 대한 다른 답변의 모든 명령이 표시됩니다. 이 명령은 셸에 들어가지만 작동하지 않습니다! 블라인드가 tmux send-key -R -t PPP작동할 수도 있지만 테스트할 수는 없습니다.

관련 정보