bash에서 여러 줄 붙여 넣기 방지


10

종종 ctrl+c일부 GUI 응용 프로그램에서 텍스트를 복사 한 다음 마우스 오른쪽 버튼 클릭 메뉴를 사용하여 터미널 에뮬레이터 (터미네이터)에 붙여 넣습니다. 때로는 클립 보드에 여러 줄이 있다는 것을 잊어 버렸습니다. bash에 붙여 넣을 때 각 줄이 "실행"됩니다.

여러 줄로 된 페이스트를 완전히 방지 할 수있는 솔루션이 있습니까?


먼저 메모장에 붙여 넣어 가지고있는 것을 확인한 다음 괜찮 으면 응용 프로그램에 붙여 넣으십시오.
Skaperen

1
bash에서 명령 sleep 999999을 실행 한 다음 확인이되면 붙여 넣기를 수행하십시오. sleep 명령은 행을 읽지 않으며을 누르면 삭제됩니다 ctrl+c.
Skaperen



1
@Otheus printf '\e[?2004h'는 대부분의 xterm과 같은 터미널 에뮬레이터에서 터미널이 붙여 넣은 텍스트를 괄호로 묶어 붙여 넣기 시작 및 끝을 감지 할 수있는 브라켓 붙여 넣기 모드를 활성화합니다. xterm은 \e[?2005h붙여 넣은 모든 문자가 접두어로 붙는 다른 모드도 지원합니다 ^V(많은 응용 프로그램과 tty 행 규약으로 이해 됨 litteral-next).
Stéphane Chazelas

답변:


5

이 답변은 사용자의 질문에 가장 구체적이지 않습니다 제 2 답변을 참조하십시오. 더 일반적인 문제를 해결하기 때문에 여기에 남겨두고 있습니다 .

원래 게시물에 코멘트 당, 당신은 (1) 터미널 에뮬레이터 지원이 필요하는 붙여 괄호 (2), 터미널에서 실행되고 무엇에 해당하는 지원 즉, vim, bash, zsh. 괄호 붙여 넣기를 지원하는 터미널 에뮬레이터 (이 게시물에 대한 의견을 기반으로 업데이트되는 목록) :

  • xterm -이후로 ??
  • gnome-terminal -이후로 ??
  • putty -0.63 이후 (2013-08-06 릴리스 날짜)

브라케팅 모드를 지원하는 응용 프로그램 :

  • vim
  • zsh

를 들어 bash, StéphaneChazelas는 함께 걸었다 쉘 스크립트를 해당 모드의 검출을 용이하게하고 적절한 조치를 취할 수 있습니다.

붙여 넣기를 할 때 실행중인 유닉스 프로그램에 대해 알지 못하면 라인이 잘리지 않도록보다 구체적인 답변을 얻을 수 없습니다.

클립 보드 매니저는 당신이 필요 어쩌면 무엇을.


거기에 있는 스크립트는 브라켓 붙여 넣기를 감지 하지 못합니다.이 응용 프로그램은 ^ V를 litteral-next로 이해해야하는 것 이외의 응용 프로그램에서 지원이 필요하지 않은 세 번째 형태의 브라켓 붙여 넣기를 에뮬레이트 하는 스크립트입니다 (스크립트는 실제로이 질문에 대답해야하지만 아마도 개선이 필요할 것입니다 .PoC 일뿐입니다).
Stéphane Chazelas

@ StéphaneChazelas는 내 게시물을 자유롭게 편집 / 개선 할 수 있습니다. :) "응용 프로그램은 다음과 같이 이해해야 ^V합니다 literal-next. 그러나 ^V응용 프로그램의 입력 스트림에 들어가는 방법은 무엇입니까?
Otheus

내부 tty 장치가 icanon 모드가 아닌 경우 읽습니다 ( bashreadline의 프롬프트에서 볼 수 있습니다 (그리고 문자 그대로 다음으로 간주)). ICANON 모드의 경우, 그 내부 tty 장치의 제어 규칙은 (만큼으로 제거 할 lnext문자입니다 ^V당신이 수동으로 ... Ctrl 키-V X를 입력 할 때처럼)
스테판 Chazelas가

1
해당 스크립트를 사용하지 않는 경우, 아무것도 삽입은 ^V당신이 xterm 등의 사용하지 않는 quoted paste(전송하여 모드 \e[?2005h). 이 perl스크립트는 여러 줄 붙여 넣기에서 첫 번째 줄을 제외한 모든 줄을 제거하도록 조정될 수 있지만 (큰 붙여 넣기에는 확실하지는 않지만) 이미 읽은 줄 바꿈으로 줄 바꿈을 인용 하므로 Ctrl- V Ctrl-J)를 사용하면 행이 실행되는 것을 막을 수 있습니다 (편집 버퍼에 방금 추가되었으므로 Enter 키를 눌러야합니다).
Stéphane Chazelas

4
두 번째 대답은 무엇입니까?
Xiao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.