터미널 화면에서 대괄호 붙여 넣기 모드가 산발적으로 활성화되는 이유는 무엇입니까? 이해하고 싶습니다. 나는 종종 노트 나 인터넷에서

우분투 14.04를 사용하고 있으며 터미널 화면에 이상한 문제가있어서 많은 버그가 있습니다. 누군가가 나를 도와 줄 수 있습니까? 아니면 내가 잘못하거나 Linux가 아닌 방법으로 일하고 있다면 설명해 주시겠습니까? 나는 일종의 해결책을 가지고 있지만 왜 이것이 계속 반복되는지 이해하고 싶습니다.

나는 종종 노트 나 인터넷에서 bash 명령을 복사하고 때로는 복사 한 것을 감싸는 이상한 0 ~ 1 기호가 나타납니다. 그것은 매우 성가 시며 이것은 완전히 임의의 방식으로 발생합니다.

긴 검색을 한 후에이 문제가 Bracked Paste Mode 라는 것을 알았printf "\e[?2004l" 습니다.이 모드가 갑자기 활성화되면이 명령 을 사용하여 터미널을 수정합니다.

어떻게 든이 기능을 영구적으로 비활성화 할 수 있습니까? 나는 지금 일하고있는 모든 우분투 머신에서이 문제에 직면했다. 이전에는 Ubuntu 10.10 및 12.04를 사용했으며 이전에는 그런 문제가 없었습니다.



답변

괄호 붙여 넣기 모드를 비활성화 할 수 있습니다.

bash에서 일시적으로 시도하려면 다음을 수행하십시오.

bind 'set enable-bracketed-paste off'

그런 다음 동작 방식이 마음에 들면 설정을 ~/.inputrc시스템 전체 또는 시스템 전체 /etc/inputrc(또는 우분투의 어느 곳에서나)에 둘 수 있습니다.


답변

에 해당 명령을 넣을 수 있습니다 bashrc. 그러면 터미널을 열 때마다 적용됩니다.

끝에 입력 vi ~/.bashrc하고 추가 printf "\e[?2004l"하고 파일을 저장하십시오.:wq


답변

이런 일이 발생 하는지에 대한 원래의 질문에 대답하기 위해 가능한 시나리오는 다음과 같습니다.

  • 내 가정용 컴퓨터에는 괄호 붙여 넣기를 지원하는 새로운 버전의 zsh가 있습니다 (쉘 A라고 함).
  • 괄호 붙여 넣기 (쉘 B)를 지원하지 않는 쉘을 이전 버전의 bash로 설정 한 상태에서 컴퓨터에 shed습니다.

문제는 터미널 프로그램에서 셸 A에서 셸 B로 sshing 할 때 대괄호 붙여 넣기가 여전히 활성화되어 있다고 생각하므로 붙여 넣은 내용 (0 ~ 1 비트) 주위에 문자를 계속 추가합니다. 쉘 B는 그것들을 지원하지 않으므로 변경하지 않고 통과시킵니다. 쉘에 특수 이스케이프 시퀀스를 인쇄하여 괄호 붙여 넣기를 해제하도록 터미널에 지시해야합니다.printf "\e[?2004l" .

이 문제를 해결하는 몇 가지 방법이 있습니다.

  1. 괄호 붙여 넣기를 전혀 신경 쓰지 않는다면 쉘 A에서 끄십시오. 처음에는 활성화되지 않습니다 (@jwd의 답변)

  2. 쉘 A에서는 브라켓 붙여 넣기를 계속 사용하고 쉘 B에서는 비활성화하려면 이스케이프 시퀀스를 .bashrc(@MOHRE의 답변)에 추가하십시오

  3. 괄호 붙여 넣기를 지원하도록 쉘 B를 업그레이드하여 해당 0 ~ 및 1 ~ 문자를 올바르게 해석하십시오.

참고 : GNU 화면을 사용하는 경우 화면 printf외부에서 해당 명령 을 실행해야합니다 . 내부에는 작동하지 않는 것 같습니다.