Bash에서 기본 복사 및 붙여 넣기 동작 비활성화 키를 누르지 않고

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

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

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



답변

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

bind 'set enable-bracketed-paste'

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

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

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

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


답변

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

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

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

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


답변

붙여 넣기 전에 작은 따옴표를 입력 한 다음 붙여 넣습니다. 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 행은 명령 내역에 개별적으로 들어갑니다 . ;또는 로 변경하고 싶을 수도 있습니다 &&. (나는 그것에 대한 트릭을 모른다. 빨리 또는 뒤로 단어에 키 반복을 사용하여 빨리 도착하고 수동으로 수행하십시오.)


답변

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

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


답변

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

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

편집하다:

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

최신 정보:

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