이진을 분류 한 후 해시 기호 (#)가 파운드 기호 (£)로 바 turned


42

이것은 내 bash 프롬프트가 어떻게 생겼는지입니다.

오래된 bash 프롬프트

그런 다음 아마 똑똑하지 않은 일을했습니다 cat /bin/bash. 이제 내 bash 프롬프트는 해시 기호 (#) 대신 파운드 기호 (£)와 같이 보입니다. 파일 내의 해시 기호에도 영향을 미칩니다 (여기 참조).

파일의 파운드 기호

어떻게 되돌릴 수 있습니까?

편집 : 이 질문은 "내 bash 프롬프트를 변경하는 방법?"을 묻지 않지만 "내 bash 프롬프트가 자체적으로 변경되었습니다. 어떻게 복원 할 수 있습니까?"

.bashrc관심있는 사람들을 위해 작성 하십시오 .



1
(문제를 일으킨 문제를 제기하기 위해 제목을 약간 편집 할 자유를 얻었습니다. 원하는대로 편집하거나 되 돌리십시오.)
ilkkachu

9
프롬프트, 파일 등은 여전히의 문자 코드를 포함 #, \x23; 터미널이 이제로 해석 \x23되는 것 £입니다.
deltab

4
흥미로운 부분은 "파운드"가 미국과 다른 국적의 해시 심볼의 또 다른 이름이라는 것입니다. 영어 ... =)
jpmc26

1
이것은 어떤 터미널 프로그램에서 이루어 졌습니까?
SnoringFrog

답변:


102

터미널은 제어 명령으로 다양한 문자 시퀀스를 받아들이고 실행합니다. 예를 들어, 모든 커서 이동은이를 사용하여 수행됩니다. 일부 코드는 색상 설정 또는 터미널에 대체 문자 세트를 사용하도록 지시하는 등 영구적으로 변경합니다. 실행 파일 및 기타 이진 파일에는 이러한 명령을 나타내는 바이트가 포함될 수 있으므로 이진 파일을 터미널에 덤프하면 성가신 부작용이 발생할 수 있습니다. 일부 제어 코드는 여기 를 참조하십시오 .

역사적 배경은 원래 터미널 과 화면 및 키보드가있는 멍청한 장치 였으며 직렬 포트를 통해 실제 컴퓨터에 연결 되었다는 것 입니다. 그 전에는 키보드가있는 프린터였습니다. 데이터 바이트를 명령 바이트와 분리하는 프로토콜이 많지 않으므로 명령은 터미널 "인라인"에 제공되었습니다. (또는 이스케이프 코드와 제어 문자가 프로토콜이었습니다.) 오늘날 시스템을 고안했다면 데이터와 명령이 명확하게 분리되어 있다고 가정 할 수 있습니다.

터미널 창을 닫거나 에뮬레이터를 종료하는 대신 비슷한 명령 (또는 여러 개)을 전송하여 터미널을 정상적인 기본값으로 다시 설정하는 resetcommand를 사용할 수 있습니다 .

해시가 파운드 변경을 일으키는 원인을 정확히 모르겠습니다. (그러나 @ Random832는 대답을 참조하십시오 .) 모든 문자를 선 그리기 글리프로 변경할 수있는 "대체 문자 세트"에 익숙합니다. 이 경우에도 키보드의 입력은 일반적으로 변경되지 않으므로 resetEnter문자가 가비지로 표시되거나 전혀 표시되지 않더라도 쓰기는 여전히 작동합니다. (프롬프트가 여러 줄로 바뀌는 것과 비교하면 약간의 효과 만 있습니다.)


1
자세한 설명 감사합니다. 필요한 평판을 얻 자마자 투표하겠습니다.
lhermann

2
cat /dev/urandom데비안 설치 콘솔 (벽돌 하드웨어를 염두에 둔 화면 해상도)에서 처음 시도했을 때 오버플로가 발생하고 "모든 변경 사항을 포기하고 컴퓨터를 다시 시작합니다"단추로 빠르게 이동했습니다. 이제는 "의도 된 기능"이라는 것을 알고 있습니다.
wizzwizz4

2
지금은 바람직하지 않은 역사적으로 의도 된 기능입니다. UTF-8 환경에서 실행될 때 일부 (모두의) 좋은 터미널 에뮬레이터는 레거시 문자 세트 스위치 이스케이프를 비활성화해야하지만, 그렇지 않은지 여부와 기본값이 아닌 경우 옵션을 활성화하는 방법에 대해서는 문서화가 잘되어 있지 않습니다. 다릅니다.
R ..

78

기록을 위해, 왜 이런 일이 발생했는지 그리고 터미널을 닫지 않고 어떻게 고칠 수 있었는지 (그리고 reset실패한 경우 ) 어떻게 대답 할 수 있습니까 ?

많은 터미널 이 에뮬레이션 하는 VT220 터미널 의 기능 으로 ISO 646ISO 2022 기반 의 여러 국가 대체 문자 세트 를 지원합니다 . 특히 ASCII가 숫자 기호를 갖는 동일한 위치에 파운드 통화 기호가있는 영국 문자 세트를 지원하는 것은 다른 이유로 지원되지 않더라도 어떤 이유로 매우 흔합니다.

따라서 이진 파일을 터미널에 인쇄하면 일부 우연의 일치로 터미널 ESC ( A(또는 아마도 ESC ) A^N]에 터미널로 출력됩니다. 정상적인 상태로 설정하는 순서를 인쇄하여 수동으로 취소 할 수 있습니다.

printf '\e(B\e)0\x0f'

나는 구체적인 것을 모른 채 이와 같은 것을 추측했다. 설명 감사합니다. 당신 같은 사람들을 사귀는 것이 얼마나 좋습니까!
lhermann

1
오, Ä와 Ö 대신 갈매기. OS X의 터미널은 2016 년에도 교체를 지원합니다.
ilkkachu

@ilkkachu 일부 단말기는 달리 그들 (나는 퍼티를 알고, 나는 또한 리눅스 콘솔을 생각) UTF-8을 사용중인 경우 ISO 2022 (이외의 다른 시퀀스가 있다고하기 때문에,이를 거부 지원하는지 ESC % @)는 지원하지 않는다 상태에있는 동안 UTF-8을 지원하는 데 사용됩니다. 따라서 더 많은 응용 프로그램에서 선 그리기에 UTF-8을 사용해야하므로 결국 사라질 수 있습니다. [이 기능을 실제로 가장 많이 사용하는 다른 문자 집합은 메커니즘을 구현할 때 "무료"이기 때문에 대부분 포함됩니다. ].
Random832

20
"A"는 영국을, "B"는 "American"을 나타냅니다. : D
egmont

8
@egmont 나는 이것을 ISO에 등록 된 순서대로 순차적으로 할당 된 것으로 판명했다. 은 첫번째 [와 기존의 국제 참조 버전 ¤에 대한 $]입니다 @ 후 영국 버전은 미국 일 이전에 들어갈 때 일어났다. 전체 목록을 보려면 itscj.ipsj.or.jp/itscj_english/index.html 을 참조하십시오.
Random832

30

터미널을 닫고 새 터미널을 엽니 다.


19
해서는 안됩니다. 질문이 유효합니다. 어쩌면 누군가 이것이 왜 그런 일이 있었는지 설명 할 것입니다. 이것은 Bash의 구멍이어야합니다. 로만 호출 £되는 것과 동일한 키 아래에 있습니다. 어떻게 든 배쉬에 머물렀다. 어쨌든, 당신은 적절한 설명을 기다릴 수 있습니다, 또는 당신이 내 대답에 만족한다면, 체크를 클릭하여 수락하십시오. #AltAlt
Tomasz

1
또는 Bash가 아니라 터미널 프로그램에 있습니다. GUI 외부의 명령 줄에서 동일하게 시도했으며 영원히 반복됩니다.
Tomasz

5
@Xalorous, 그 때 문제가 등장하는 질문 상태 cat에드 /bin/bash터미널에.
ilkkachu

2
Random832는 실제로 무슨 일이 있었는지에 대한 좋은 설명을했습니다
lhermann

16
이것은 과잉입니다-세션에서 유지하려는 상태가 있다면 어떻게해야합니까? X 터미널이 아닌 콘솔이면 어떻게 되나요? reset작업에 적합한 도구입니다.
pericynthion


9

stty sane뿐만 아니라 문제를 해결하는 것처럼 보였다 reset.


7

터미널을 닫았다가 다시 열거 나 재설정 할 필요가 없습니다! 재설정해도 문제가 해결되지 않습니다.

터미널 스크롤 백 버퍼 를 지우거나 지우면 됩니다. 그렇게하려면 아래 명령을 사용하십시오.

$ echo -ne '\0033\0143'

1
이 기적에 대한 설명이 있습니까?
Tomasz

1
@tomas 네 그렇습니다. 경우에 -e적용됩니다, 그것은 실행하여 당신에 대해 읽을 수있는 시퀀스를 인식합니다 man echo그들 중 하나가, \0NNN8 진수 NNN와 바이트를 의미한다. 실제로 터미널 세션을 재설정 할 필요가 없으며 스크롤 백 버퍼를 지우면됩니다. 그리고 내가 말한 명령은 필요한 일을 할 것입니다. 예를 들어, MacOS X를 사용하는 경우 터미널을 사용하는 동안 메뉴 막대에 편집이 있으며 "Clear Scrollback 또는 ⌥⌘K"옵션이 있습니다.
FarazX

5
시퀀스 \033\143는 ESC c입니다. Reset to Initial State : "VT100을 초기 상태, 즉 전원이 켜진 후의 상태로 재설정합니다. 또한 전원 자체 테스트 및 INIT H 신호를 실행합니다. "간단히 주장하다."
deltab

1
@deltab 나는 백만 친구에게 감사합니다.
FarazX

1
@tomas 이진 파일과 같이 표시되지 않아야하는 파일을 표시하려고 할 때마다 터미널이 이상하고 어색하게 작동합니다. 많은 Linux 사용자가 재설정을 수행하지만 터미널 세션을 재설정 할 필요가없고 스크롤 백 버퍼를 지우는 것이 모두 필요하므로 최선의 방법은 아닙니다.
FarazX
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.