명령 붙여넣기 시 터미널 자동 실행 중지

명령 붙여넣기 시 터미널 자동 실행 중지

맞습니다. 이것은 약간 짜증나는 기능입니다. 왜냐하면 이런 일이 발생하고 다른 경우에는 발생하지 않는 매우 이상하기 때문입니다.

인수를 조정하기 위해 터미널에 명령을 붙여넣고때때로내가 붙여넣은 두 번째 순간에 실행됩니다. 때로는 그렇지 않습니다.

이는 당황스러운 것(IRC에 무의미한 댓글 게시)부터 위험한 것까지 다양합니다.

이 기능을 완전히 종료하려면 어떻게 해야 합니까? 나는 터미널에 붙여넣을 때 터미널이 자동으로 실행되는 것을 결코 원하지 않습니다.

답변1

자동 실행이 없습니다. 명령 뒤에 줄 바꿈(또는 그 이상)을 복사하고 있을 수도 있습니다.

명령어를 붙여 넣으면~와 함께break가 발생하면 쉘(명령줄)은 사용자가 직접 break(Enter, Return) 버튼을 눌렀다고 생각합니다.


이 답변은 OP가 바람직하지 않은 동작을 수행하는 이유만 설명합니다. 그러나또 다른 대답, 실제 해결책이 있습니다OP의 문제에.

답변2

하나진짜해결책은 편집 모드를 연 ctrl-x ctrl-e다음 선택한 편집기(일반적으로 emacs 또는 vim)에 클립보드를 안전하게 붙여넣는 것입니다. 명령 편집을 마친 후 저장하고 종료하면 명령줄에서 실행됩니다. 이는 길거나 복잡한 명령, 특히 커밋 해시를 git 명령에 붙여 넣을 때 좋은 습관이며 장기적으로 무서운 결과를 피하는 데 도움이 될 수 있습니다.

VISUAL 및 EDITOR 변수를 설정하여 편집기를 변경할 수 있습니다(이러한 의미는 서로 다릅니다.여기).

답변3

다른 사람들이 언급했듯이 붙여넣은 텍스트에 개행 문자가 포함되어 있으면 문제가 발생합니다. 그 지식을 바탕으로 귀하의 질문은 다음과 거의 동일합니다.이것은 서버 결함에 관한 것입니다. 사이트가 다르므로 여기서 답변을 반복하겠습니다…

당신이 원하는 것은 '괄호로 묶인 붙여넣기'는 일부 셸에서 사용할 수 있는 기능입니다.

최신 버전의 bash 셸을 사용한다고 가정하면 다음과 같이 현재 세션에 대해 이를 켤 수 있습니다.

bind 'set enable-bracketed-paste on'

이제 여러 줄을 붙여넣어 시도해 보세요.

echo Hello world
echo Again, I say, hello!

쉘은 텍스트가 붙여넣어진(입력하지 않은) 것을 인식하고 확인 프롬프트와 함께 기다립니다. 계속 진행해도 안전해 보이면 Enter 키를 누르세요. 그렇지 않은 경우 Ctrl-C를 눌러 취소하세요.

새 세션마다 대괄호 붙여넣기를 활성화하려면 .inputrc 파일에 다음 명령을 추가하세요.

cd ~
echo "set enable-bracketed-paste" >> .inputrc

또 다른 옵션은 다음에서 전환하는 것입니다.세게 때리다에게zsh, 여기서 대괄호 붙여넣기는 기본적으로 활성화됩니다. 현재 셸을 zsh 셸로 바꾸려면 다음 안내를 따르세요.

exec zsh

zsh를 사용하면 붙여넣은 텍스트가 강조 표시되므로 좋습니다. 다시 한번 Enter를 눌러 명령을 실행하거나 Control-C를 눌러 취소하세요.

zsh를 좋아하고 이를 기본 쉘로 만들고 싶다면:

chsh -s /bin/zsh

답변4

이 별칭을 사용하여 붙여넣고 명령이 실행되지 않도록 합니다.

alias nonewlinepaste='history -s `xsel -b`; sleep 1; xdotool key Up 1>/dev/null'  # xsel ref. https://unix.stackexchange.com/a/96398/17671  # xdotool ref. https://unix.stackexchange.com/questions/267704/command-to-simulate-keyboard-input#comment1038650_267705

관련 정보