터미널 세션에 붙여 넣을 때 쉘은 Enter 키를 누르지 않고 즉시 명령을 실행합니다.
나는 그 행동을 비활성화하는 방법을 정말로 모른다.
MacOS Yosemite에 사전 설치된 터미널을 사용하고 있습니다.
bash
(의 도움으로 readline
) 수정되었습니다.
터미널 세션에 붙여 넣을 때 쉘은 Enter 키를 누르지 않고 즉시 명령을 실행합니다.
나는 그 행동을 비활성화하는 방법을 정말로 모른다.
MacOS Yosemite에 사전 설치된 터미널을 사용하고 있습니다.
bash
(의 도움으로 readline
) 수정되었습니다.
답변:
로 bash
4.4 지원이 라를 붙여 괄호 것이 새롭고 터미널에서 xterm
, 당신은 할 수 있습니다 :
bind 'set enable-bracketed-paste'
(또는 추가 set enable-bracketed-paste
귀하의에 ~/.inputrc
)
즉, 원인이됩니다 복사 - 붙여 입력 한 경우 (즉, 버퍼와 같은 문자가 포함 된 경우 여전히 문제가있을 수로 해석 대신에 문자 메시지에 삽입되는 버퍼 ^C
, ^Z
및 터미널 에뮬레이터를 필터링하지 않음) .
zsh
버전 5.1 이후 기본적으로이 작업을 수행합니다.
다른 쉘이나 터미널에 대해서는 다음을 참조하십시오 : 이런 종류의 클립 보드 악용으로부터 어떻게 자신을 보호 할 수 있습니까?
xterm
한다고 생각하면 대신 시도해 볼 수 있습니다. perl
링크 된 질문에서 스크립트 를 사용해 보셨습니까 ?
"줄 바꿈"문자를 붙여 넣을 때 발생합니다. 예를 들어 여러 줄을 붙여 넣거나 줄 끝에서 실수로 캐리지 리턴을 복사하는 경우. 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'
있습니다. 도움이 될 수 있습니다.