터미널에서 복사 / 붙여 넣기로 인해 명령이 실행되는 원인은 무엇입니까?


24

터미널에 일부 명령을 붙여 넣으면 때때로 "Enter"키를 누른 것처럼 자동으로 명령을 실행합니다.

나는 오랫동안 리눅스를 사용해 왔으며 많은 배포판에서 다양한 콘솔에 수천 개의 명령을 붙여 넣었으며 붙여 넣을 명령이 자동으로 실행 될지 여부를 여전히 알 수 없습니다.

무엇이이 행동을 유발합니까?


5
걱정하지 않으려면 { 붙여 넣기 전에 (w / space)를 입력 한 다음로 끝납니다 }. 붙여 넣은 명령의 작업에는 영향을 미치지 않지만 블록을 닫을 때까지 쉘이 명령을 실행하지 못하게합니다. [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]에
loa_in_

답변:


37

복사중인 텍스트에서 자동 실행을 트리거하는 리턴 문자입니다.

다른 예제를 보자.이 행들을 한 번에 복사하여 터미널에 붙여 넣으십시오.

echo "Hello";
echo "World";

터미널을 보면 다음을 볼 수 없습니다.

$ echo "Hello";
echo "World";

당신은 이것을 볼 것입니다 (이라고 말하는 줄이있을 수도 있습니다 World) :

$ echo "Hello";
Hello
$ echo "World";

모든 입력이 붙여 넣기를 기다리지 않고 첫 번째 줄이 실행됩니다 (같은 이유로 두 번째 줄도 그렇게 할 수도 그렇지 않을 수도 있습니다). RETURN두 줄 사이 에 문자 가 있기 때문입니다 .

ENTER키보드 에서 키 를 누르면 ASCII 값이 13. 인 문자를 보내기 만하면 됩니다. 해당 문자는 터미널에서 즉시 감지되며, 지금까지 입력 한 내용을 실행하기위한 특수 명령이 있음을 알고 있습니다.

컴퓨터에 저장하거나 화면에 인쇄 할 때 RETURN문자는 알파벳, 숫자 또는 기호의 다른 문자와 같습니다. 이 문자는 백 스페이스로 삭제하거나 다른 일반 문자와 같이 클립 보드에 복사 할 수 있습니다.

유일한 차이점은 브라우저에서 문자를 볼 때 보이는 문자 를 인쇄 하는 대신 다르게 처리해야하며 다음 텍스트 세트를 다음 줄로 이동하는 특별한 지침이 있다는 것입니다. RETURN문자와 SPACE문자 (ASCII는 32) 몇 가지 다른 거의 사용되지 문자와 함께, 이러한 이유로 "비 인쇄 문자"로 알려져있다.

때로는 웹 사이트에서 텍스트를 복사 할 때 텍스트를 복사하는 것이 어렵고 끝 부분의 반환은 이루어지지 않으며 종종 페이지의 스타일로 인해 더 어려워집니다.


실험 시간!

아래에는 문제를 설명하고 "연습"할 수있는 두 가지 명령이 있습니다. 바로 전에 커서를 시작 echo하고 화살표 바로 앞에 강조 표시가 나타날 때까지 끕니다.

echo "Wait for my signal...";<- End cursor here right after the semicolon

이제 두 번째 명령을 시도하십시오. 커서를 바로 시작 echo하고 커서가 두 번째 줄에 있지만 <-화살표 바로 앞에 올 때까지 아래로 끕니다 . 복사 한 다음 터미널에 붙여 넣습니다.

echo 'Go go go!';
<- End cursor here right before the arrow

브라우저에 따라 선택한 텍스트가 두 줄을 넘었을 수도 있습니다. 그러나 터미널에 붙여 넣으면 RETURN복사 된 텍스트에서 문자를 찾았 기 때문에 행을 실행하는 것을 알 수 있습니다.


5
복잡성을 줄이기 위해 Windows가 반환에 두 개의 다른 키를 사용한다는 언급은 완전히 무시했습니다. 그것이 우리가 다루어야 할 매일의 고통과 투쟁임을 아십시오.
IQAndreas

공간은 인쇄 문자입니다
mikeserv

1
혹시. 그러나 Firefox에서 셸 (stty가 "raw"로 설정 됨)에 붙여 넣기를 테스트하면 줄 바꿈이 아닌 줄 바꿈으로 끝납니다.
Thomas Dickey

1
다음 줄로 이동할 필요가 없습니다. 세미콜론을지나 충분한 양 (2 ~ 3 자)을 지나서 이동하면 전체 행이 선택되어 줄 바꿈을 잡습니다.

@ThomasDickey Windows 또는 Unix 기반 시스템을 사용하고 있습니까?
IQAndreas

10

텍스트를 선택할 때 줄 끝에 (보이지 않는) 줄 바꿈을 포함 시키면 붙여 넣은 텍스트에 표시됩니다. 그것은 내가 아는 모든 터미널 에뮬레이터에서 일관됩니다. 줄 바꿈은 "유효성"이라고 부르는 것을 수행합니다.

일부 시스템 (예 : IBM 3270과 같은 동기 터미널을 사용하는 시스템)에서 Enter키는 모든 변경 사항을 호스트에 복사하여 화면을 "확인"합니다.



2

무엇이이 행동을 유발합니까?

개행 문자.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.