텍스트를 붙여넣은 후 터미널이 자동으로 명령을 실행하는 이유는 무엇입니까?

텍스트를 붙여넣은 후 터미널이 자동으로 명령을 실행하는 이유는 무엇입니까?

ctrl+shift+v를 사용하거나 마우스 오른쪽 버튼 클릭 메뉴에서 붙여넣기를 사용하면 이런 현상이 발생합니다.

이 동작을 방지하려면 어떤 조치를 취할 수 있습니까?

답변1

붙여넣기 위해 여러 줄의 텍스트를 복사하지 마세요. 나는 당신이 줄의 마지막 부분을 복사했다는 것을 거의 보장할 수 있습니다. 붙여넣으려는 코드 줄을 삼중 클릭하여 복사하면 줄 끝에 개행 문자가 표시됩니다. 이것이 실제로 문제인지 확인하려면 전체 줄(마지막 문자/숫자 제외)을 복사하고 붙여넣을 때 개행 문자도 포함되어 있는지 확인하십시오.

답변2

붙여넣은 텍스트에 줄 바꿈 문자가 포함되어 있습니다. 개행 문자를 붙여넣으면 터미널에서 실행 중인 셸은 이를 눌린 것으로 간주하여 Enter명령을 실행합니다.

붙여넣기 작업은 터미널 에뮬레이터에 의해 수행됩니다. 사용자가 입력한 텍스트를 전달하는 것과 마찬가지로 붙여넣은 텍스트를 터미널에서 실행 중인 애플리케이션에 전달합니다. 바라보다키보드 입력과 텍스트 출력은 어떻게 작동합니까?입력 작동 방식에 대한 추가 정보 애플리케이션(여기서는 셸)은 키 입력과 붙여넣기 작업을 구별할 수 없습니다.

이제 많은 터미널 에뮬레이터가 지원합니다.괄호 안에 붙여넣기. 대괄호 붙여넣기 모드에서는 응용 프로그램이할 수 있는붙여넣기 작업과 키 입력을 구별합니다. 대괄호 안에 붙여넣는 것은 애플리케이션이 붙여넣은 텍스트에 대해 다른 작업을 수행하는 경우에만 유용하므로 터미널 에뮬레이터 사용자가 구성하는 대신 지원 애플리케이션에 의해 활성화됩니다.

Zsh 5.1(몇 주 전에 출시되었으므로 대부분의 배포판에서는 아직 사용할 수 없음)에는 브래킷 붙여넣기 모드에 대한 지원이 추가되었습니다. 텍스트를 붙여넣으면 명령줄에 간단히 삽입되며 Enter명령줄 실행을 누르기 전에 편집할 수 있습니다.

oh-my-zsh 사용자는 다음을 사용할 수 있습니다.안전한 붙여넣기 플러그인이는 이전 버전의 zsh에서도 마찬가지였습니다.

zsh에서 할 수 있는 또 다른 작업은 선택 항목을 따옴표로 묶은 문자열로 삽입하는 것입니다(각 쉘 특수 문자(예: 공백) 앞에 백슬래시 형식). `xsel`기본 선택 항목을 가져오려면(자동 마우스 선택) 을 입력 하거나, `xsel -b`클립보드 내용을 가져오고( Ctrl+복사된 텍스트 사용 C) 키를 누릅니다 Tab.

이전 버전의 zsh가 있고 클립보드 내용을 따옴표 없이 삽입하려는 경우 선택한 내용을 삽입하는 함수를 정의할 수 있습니다.

function zle_insert_x_selection {
  LBUFFER+=$(xsel ${NUMERIC+-b} -o </dev/null)
}
zle -N zle_insert_x_selection
bindkey '\e\C-v' zle_insert_x_selection

에서 ++ 를 눌러 기본 선택 항목을 삽입하거나 ++ + 를 눌러 클립보드 내용을 삽입 .zshrc할 수 있습니다 . 커서 앞에 삽입되며 후행 개행 문자가 없다는 점을 제외하면 변경되지 않은 상태로 유지됩니다. 바라보다CtrlAltVCtrlU CtrlAltVBash와 X11 간에 클립보드 공유Bash에서 비슷한 것을 위해.

답변3

bash를 쉘로 사용하는 경우 를 눌러 Ctrl-X Ctrl-E편집기($VISUAL 또는 $EDITOR로 정의됨, 예를 들어 vi또는 nano)를 불러올 수 있습니다.

그런 다음 파일을 편집하는 것처럼 명령을 붙여넣을 수 있습니다. 저장하고 종료하면 실행됩니다. 또는 저장하지 않고 종료하면 취소됩니다.

답변4

텍스트 편집기 창에서 다음 바로 가기를 사용하여 \n(줄 바꿈) 없이 텍스트를 복사합니다.

  • Shift+ Home, Ctrl+ Insert– 커서 앞 줄의 일부를 복사합니다.
  • Shift+ End, Ctrl+ Insert– 커서 뒤의 줄 일부를 복사합니다.
  • Home, Shift+ End, Ctrl+ Insert– \n 없이 모든 줄을 복사합니다.

브라우저 창이나 텍스트를 편집할 수 없는 기타 콘텐츠에서는 다음 두 가지 기술 중 하나를 사용하세요.

  • 먼저 텍스트 편집기에 복사합니다(명령을 편집할 수 있는 기회가 제공되므로 선호됨).
  • 해당 줄의 텍스트만 선택한 다음(마지막 문자를 넘어 오른쪽으로 선택 영역을 확장하지 않고) Ctrl+를 누르고 Insert터미널 창에 붙여넣습니다.

올바른 선택(\n 제외)은 다음과 같습니다.

ls -al

잘못된 선택(\n 포함)은 다음과 같습니다.

ls -al

관련 정보