Bash에서 기본 복사 및 붙여 넣기 동작 비활성화


9

터미널 세션에 붙여 넣을 때 쉘은 Enter 키를 누르지 않고 즉시 명령을 실행합니다.

나는 그 행동을 비활성화하는 방법을 정말로 모른다.

MacOS Yosemite에 사전 설치된 터미널을 사용하고 있습니다.


9
물론 붙여 넣기 버퍼에 줄 바꿈이 포함 된 경우에만 해당됩니다. 이것은 bash와 거의 관련이 없습니다. (readline 라이브러리를 사용하는 경우에만 bash에 관한 것입니다.)
— Peter-Reinstate Monica

...하지만 아직 bash(의 도움으로 readline) 수정되었습니다.
— Alexis

답변:


16

로 bash4.4 지원이 라를 붙여 괄호 것이 새롭고 터미널에서 xterm, 당신은 할 수 있습니다 :

bind 'set enable-bracketed-paste'

(또는 추가 set enable-bracketed-paste귀하의에 ~/.inputrc)

즉, 원인이됩니다 복사 - 붙여 입력 한 경우 (즉, 버퍼와 같은 문자가 포함 된 경우 여전히 문제가있을 수로 해석 대신에 문자 메시지에 삽입되는 버퍼 ^C, ^Z및 터미널 에뮬레이터를 필터링하지 않음) .

zsh 버전 5.1 이후 기본적으로이 작업을 수행합니다.

다른 쉘이나 터미널에 대해서는 다음을 참조하십시오 : 이런 종류의 클립 보드 악용으로부터 어떻게 자신을 보호 할 수 있습니까?


바로 살펴 보겠습니다
— Opaldes

부스 방법이 작동하지 않는 것
— Opaldes

@Opaldes, 무엇을 시도 했습니까? 어떤 버전의 쉘과 어떤 터미널에서? OS / X도 함께 제공 xterm한다고 생각하면 대신 시도해 볼 수 있습니다. perl링크 된 질문에서 스크립트 를 사용해 보셨습니까 ?
— Stéphane Chazelas

1
Mac OS X에서 터미널 창에 코드를 vim에 붙여 넣기 에 따라 @Opaldes OS / X 터미널은 OS / X Lion부터 브래킷 붙여 넣기를 지원합니다. 따라서 필요한 최신 버전의 zsh 또는 bash 만 있으면됩니다. 이전 zsh 버전에서는 구성을 통해이를 달성 할 수도 있습니다.
— Stéphane Chazelas

1
이 유용한 기능을 Bash / Readline에 추가해 주신 Daniel Colascione에게 감사드립니다 : gnu-bash.2382.n7.nabble.com/…
— Anthony Geoghegan

6

"줄 바꿈"문자를 붙여 넣을 때 발생합니다. 예를 들어 여러 줄을 붙여 넣거나 줄 끝에서 실수로 캐리지 리턴을 복사하는 경우. AFAIK 실제로이 동작을 비활성화 할 수는 없지만 완화 할 수있는 방법이 있습니다.

가장 쉬운 방법은 한 번에 한 줄씩 복사하고 마지막 문자를 놓치고 나중에 수동으로 추가하는 것입니다.

또는 the_velour_fog가 아래에 지적한 것처럼 인쇄되지 않은 문자를 표시하는 편집기에 붙여넣고 개행없이 다시 선택할 수도 있습니다.

GNU / Linux 배포판에는 한두 가지 해결 방법이 있지만 개념을 MacOS로 이식 할 수 있을지 전혀 모릅니다. 어쨌든 여기를 살펴보고 Mac에 비슷한 파일이 있는지 확인하십시오. 불행히도, 나는 그것을 의심한다.


난 그냥 쇼가 아닌 인쇄 된 문자가 다음 줄 바꿈없이 다시 선택한다는 편집기에 붙여
— the_velour_fog

좋은 제안, 포함하도록 수정되었습니다.
— I_GNU_it_all_along

그것이 항상 일어나는 것은 아니라는 것을 아는 것이 좋습니다. 나는 당신의 대답을 찬성했지만 그것은 나에게 해결책으로 더 많은 해결책입니다.
— Opaldes

고통 스럽지만 일련의 명령을 복사 할 때 유용 할 수 있습니다.
— I_GNU_it_all_along

내 "솔루션"은 일종의 해킹 해결 방법이지만 별도로 IMO를 선택하는 것보다 빠릅니다.
— Peter Cordes

5

붙여 넣기 전에 작은 따옴표를 입력 한 다음 붙여 넣습니다. control-c 및 위쪽 화살표를 사용하여 하나의 거대한 선으로 편집하십시오.

텍스트에 작은 따옴표가 있지만 작은 따옴표가 포함되지 않은 경우 큰 따옴표도 작동합니다. $인용 부호가있는 거대한 행을 실제로 하나의 명령으로 실행하지 않기 때문에 큰 따옴표 안에 확장되거나 포함 된 다른 것이 있으면 괜찮습니다 .


줄 바꿈은 하나의 큰 긴 줄을 만드는 대신 공식 프롬프트가 아닌 연속 프롬프트를 시작하기 때문에 실제로 전체를 편집 할 수는 없습니다.

이 4 줄을 감안할 때 :

echo
ls
foo
bar

내가 제안한대로 붙여 넣으면 화면에 다음과 같이 나타납니다.

$ 'echo 
> ls
> foo
> bar        <or cursor here if you didn't include a trailing newline
> [cursor here]

그런 다음 control-C와 위쪽 화살표를 누를 수 있습니다. (control-C는 커서와 같은 줄의 모든 것을 파괴하므로 유용한 텍스트가 있으면 먼저 return을 누르십시오.)

대안은 따옴표를 닫고 return 키를 누른 다음 위쪽 화살표를 누르는 것입니다.

어쨌든, 위쪽 화살표 후

$ 'echo
ls
foo
bar

control-a 및 선행을 제거하십시오 '. 붙여 넣기 블록을 통해 단어 단위로 빠르게 이동하려면 왼쪽 제어 및 오른쪽 제어를 사용하십시오. 또는 터미널 설정이 제어 화살표 키를 지원하지 않으면 alt-b 및 alt-f.


리터럴 개행은 실제로 명령을 분리하며이 4 행은 명령 내역에 개별적으로 들어갑니다 . ;또는 로 변경하고 싶을 수도 있습니다 &&. (나는 그것에 대한 트릭을 모른다. 빨리 또는 뒤로 단어에 키 반복을 사용하여 빨리 도착하고 수동으로 수행하십시오.)


2

페이스트는 줄 바꿈으로 끝나고 터미널 에뮬레이터는 기본적으로 페이스트를 문자별로 bash에 공급하기 때문에 발생합니다. 이 과정에서 bash는 실제로 기계의 인간 타이피스트를 알지 못합니다.

필자는 일반적으로 복사 붙여 넣기를 할 때 줄 바꿈이 포함되지 않도록주의를 기울이지 만 붙여 넣기 전에 bash에 입력하십시오 C-x C-e. $EDITOR빈 파일로 시작해야 합니다. 해당 파일에 저장하고 종료하면 bash가 실행됩니다. 이제 명령을 편집기에 붙여 넣어 더 조작하고 한 번에 실행할 수 있습니다.


-1

나는 회사와 관련이 없으며 매우 만족스러운 고객입니다. 이 터미널 프로그램을 시도 http://www.emtec.com/zoc/index.html을 . 사용 가능한 Mac 버전도 있습니다.

이 답변을 위반하는 경우 SE 규칙을 알려 주시면 답변을 삭제하십시오.

편집하다:

다른 답변을 올바르게 이해하면이 문제는 터미널 프로그램으로 인해 발생할 수 있습니다. ZOC 터미널 프로그램은 작업을 위해 완벽하게 설계된 전문 소프트웨어입니다. 추가 문자없이 선택한 텍스트를 붙여 넣습니다. 별도의 텍스트 파일로 세션을 기록 할 수 있습니다. 그리고 더 많은

최신 정보:

터미널 프로그램에는 옵션이 Paste without final 'newline'있습니다. 도움이 될 수 있습니다.


3
적어도 그것이 질문에 어떻게 대답하는지 말해주십시오
— Stéphane Chazelas

해당 터미널에서 실행중인 쉘 프롬프트에서 줄 바꾸기 또는 캐리지 리턴 문자가 포함 된 문자열을 붙여 넣으면 어떻게됩니까? 쉘이 명령을 바로 실행하지 않으면 (여기에서 요청한 것처럼) 어떻게 수행합니까? 선택에서 해당 문자를 제거합니까? bash 에서 ^ V 문자를 삽입하여 이스케이프 처리 합니까?
— Stéphane Chazelas

2
따라서 스팸처럼 보입니다 (이 사이트를 스팸으로 만들려는 의도는 아니라고 확신합니다). 질문에 대답하지 않고 관련 상용 제품에 대한 광고 일뿐입니다.
— Stéphane Chazelas

2
@AlBundy, security.stackexchange.com/q/39118 (Stephane의 답변에서 언급)에서 논의 된 익스플로잇 과 거기에서 찾을 수있는 링크를 시도하여 좋아하는 터미널 클라이언트 가이 문제를 해결하는지 확인하십시오 . 그것이 당신을 보호한다면, 당신은 그것을 추천 할 좋은 근거가 있습니다 (답변에 테스트의 세부 사항을 제공하십시오).
— Alexis

일반적으로 문제는 선택한 내용에 줄 바꿈 이 포함 된다는 것 입니다. "선택한 텍스트를 붙여 넣기"는 다른 터미널 에뮬레이터의 일반적인 동작과 어떻게 다릅니 까?
— Peter Cordes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.