저는 OSX 10.11.1을 사용하고 있는데 가끔 bash 터미널이 손상되는 경우가 있습니다. 실수로 바이너리 파일을 사용할 때 cat
이런 일이 자주 발생합니다 . 결과는 아래와 같습니다. 출력이 이상해져서 더 이상 ASCII 문자를 입력할 수 없습니다.
가끔 이런 일이 발생하지만 문제를 일관되게 재현할 수 있는 방법을 찾을 수 없습니다. 온라인 검색에서는 이 방법을 제안했지만 cat /bin/*
수십 번 시도한 후에는 가끔씩만 작동했습니다.
저는 이 문제를 해결할 수 있는 간단한 해결책을 찾기 위해 이렇게 하고 싶습니다 tmux
.
Bash를 "깨진" 상태로 유지하려면 어떻게 해야 합니까? 이를 수행할 수 있는 마법의 유니코드 문자가 있습니까?
답변1
이것은 다음과 같습니다DEC 특수 그래픽 문자 세트.
독서xterm 제어 순서 문서, 터미널이 을 수신할 때 이를 사용하는 것 같습니다 ESC
(
0
.
그래서 당신은 사용할 수 있어야합니다
printf '\033(0'
또는
printf '\033(0' > corrupt-my-terminal
cat corrupt-my-terminal
그리고 다시 사용
printf '\033(B'
동일한 페이지에 따라 USASCII를 선택하십시오.
상태를 복원하는 다른 방법은 다음과 같습니다.
tput sgr0 # resets all terminal attributes to their defaults
그리고
reset # reinitializes the terminal
tput sgr0
( bash PROMPT_COMMAND
) 또는 (zsh) precmd
에서 항상 자동으로 재설정 되도록 할 수 있습니다 .
또는 파일을 보는 것 외에 이나 less
다른 옵션을 사용할 수도 있습니다 .vim
cat
less
유사하게 동작 하고 cat
파일 길이가 한 페이지 미만일 때 자동으로 종료하려면 실행 less -FX
하거나 do 를 실행하십시오 export LESS=-FX
.
또는 이러한 옵션을 항상 사용하지 않으려면 less
새 별칭을 만드세요.
alias c='less -FX'
답변2
VT100 에뮬레이터에서 그래픽 문자 세트가 실수로 선택되는 가장 일반적인 방법은 문자를 수신하는 것입니다( Control-N이동이라고도 함). 바이너리 파일을 캡처하고 그 안에 값이 "\14"인 바이트가 있는 경우 터미널 에뮬레이터가 그래픽 문자 집합으로 변환될 수 있습니다. 문자가 수신 Control-O되거나 이동되면(또는 터미널의 제어 순서를 재설정하여) 취소됩니다 . 이는 bash나 터미널 에뮬레이터에서 실행될 수 있는 다른 셸과 독립적입니다.
터미널 에뮬레이터 내에서 실행되는 터미널 에뮬레이터의 경우 의미 체계가 약간 복잡할 수 있습니다. 예를 들면 이렇습니다.화면받아 들여:
화면의 터미널 에뮬레이션은 터미널 호출 화면의 termcap 항목에 부울 "G0" 기능이 있는 경우 여러 문자 세트를 지원합니다. 이를 통해 응용 프로그램은 VT100 그래픽 문자 집합이나 국가별 문자 집합 등을 사용할 수 있습니다. ISO 2022에서 다음 제어 기능을 지원합니다: "잠긴 변속 G0"("SI"), "잠긴 변속 G1"("SO"), "잠긴 변속 G2", "잠긴 변속 G3", "단일 변속 위치 G2", 그리고 "싱글 클래스 G3". 가상 터미널을 생성하거나 재설정할 때 ASCII 문자 집합은 "G0"부터 "G3"까지 지정됩니다. "G0" 기능이 있으면 화면은 "S0", "E0" 및 "C0"(있는 경우) 기능을 평가합니다. "S0"은 "SI"가 아닌 그래픽 문자 집합을 활성화하고 시작하기 위해 터미널에서 사용하는 시퀀스입니다. "E0"은 "SO"를 대체합니다. 'C0'은 세미 그래픽 모드에서 사용되는 문자별 번역 문자열을 제공합니다.