터미널에“>”가 표시되는 이유는 무엇입니까?


19

좋아, 특정 명령을 잘못 실행하면 (맞춤법 등) 터미널이 이것을 출력하는 >대신 : 대신에 computername:workingfolder username$입력하면 다음과 같이됩니다.

>

>

>

내가 세 번 눌렀을 때입니다.

답변:


43

> 기본 연속 프롬프트입니다. 이전에 입력 한 내용에 불균형 따옴표가 있는지 확인할 수 있습니다.

예를 들어, 명령 행에 작은 따옴표를 입력하고 몇 개의 enter키를 입력하십시오.

$ '
> 
> 
> 

계속 프롬프트가 표시 될 때까지

  • (a) 닫는 따옴표로 명령을 완료하십시오.

    또는

  • (b) 입력 을 마치려면 Ctrl+ D를 입력하십시오.이 시점에서 쉘은 불균형 따옴표에 대한 오류 메시지로 응답합니다.

    또는

  • (c) Ctrl+ C를 입력하면 입력 한 명령이 중단됩니다.

이것이 유용한 방법

때로는 새 줄이 포함 된 문자열을 입력 할 수도 있습니다. 다음과 같이 할 수 있습니다.

$ paragraph='first line
> second line
> third line
> end'

이제 쉘 변수를 표시하면 프롬프트가 사라졌지 만 줄 바꿈이 유지되는 것을 볼 수 있습니다.

$ echo "$paragraph"
first line
second line
third line
end

16

명령에 닫히지 않은 따옴표가있는 경우에 발생합니다. 그것은 다음과 같습니다.

$ echo "test here
>
>
...

따옴표를 닫아 해당 모드를 종료 할 수 있습니다 (a "또는 ', 또는 열려있는 따옴표가 무엇이든). 또한 중괄호로 구분 된 블록, 부분 완성 for-do또는 while-do루프 또는 다른 특정 구문 일 수도 있습니다. 또한 키를 눌러 수 Ctrl-C이 명령을 취소하려면 (다음 Enter 키를 눌러 Up그것을 개정).

매개 변수 또는 히스토리 확장이 예상치 못한 위치에서 발생할 때 명확한 누락 된 따옴표없이 때때로 발생할 수 있습니다.


>당신입니다 PS2( "보조 프롬프트") 값. 무슨 일이 있었는지 상기시키기 위해 다른 것으로 변경할 수 있습니다.

PS2="Unclosed >"

당신에 .bashrc그것을 인쇄 할 것 Unclosed >대신에 각 행의 시작.


7

다른 답변 외에도 \줄의 마지막 문자로 a 를 입력하면 연속 프롬프트가 나타납니다 .


5
(백 슬래시가 Enter 키에 놀라 울 정도로 가까이 있기 때문에 이것은 보통 우연히 발생합니다.)
Mr Lister

하지에 내 키보드 , 그것을하지 않습니다.
TRiG

@TRiG 당신은 종종 \ 대신 실수로 #을 입력합니까? 맞아.
Mr Lister

7

대답은 Bash Reference Manual 의이 비밀스러운 언급에 있습니다 .

5.1 Bourne 쉘 변수

[...]

  • PS1: 기본 프롬프트 문자열. 기본값은 ' \s-\v\$'입니다. 이전에 확장 된 이스케이프 시퀀스의 전체 목록 이 표시 되면 프롬프트 인쇄를 참조하십시오 PS1.
  • PS2: 보조 프롬프트 문자열. 기본값은 ' >'입니다.

다음에 :

6.3.3 대화식 쉘 동작

  1. Bash PS1는 명령의 첫 번째 행을 PS2읽기 전에 확장 및 표시 되고, 다중 행 명령의 두 번째 및 후속 행을 읽기 전에 확장 및 표시됩니다 .

따라서 >를 누르면 EnterBash가 명령이 완료되지 않았다고 판단 하면 프롬프트가 나타납니다 . 그 이유는 다음과 같습니다.

  • 줄 바꿈 앞의 문자는 줄 연속으로\ 취급되는입니다 .
  • 당신은 불완전한 문자열 (일치하지 않는 따옴표 또는 종료되지 않은 여기-문서) 또는 같은 다른 일치하지 않는 구분 기호를 가지고 $(), (), ``.
  • 함수 정의, for루프, while루프 또는을 시작했습니다 case.

의도하지 않은 타이핑 오류로 인해 보조 프롬프트가 표시되면 키 ControlC를 눌러 기본 프롬프트로 돌아갑니다.


here-doc에 입력 할 때 보조 프롬프트가 나타납니다. 그러나 이것은 다른 것보다 우연히 발생할 가능성이 적습니다.
Barmar

6

명령을 완료하기를 기다리는 쉘. 어딘가에 닫히지 않은 따옴표가 있거나 "for"루프를 시작한다고 생각하고 사용자가 입력을 마칠 때까지 기다릴 수 있습니다.

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