오늘 실수로 터미널에 cd `를 입력했는데 터미널에서 뭔가 이상한 일이 발생했습니다.
입력이 필요한 것처럼 다음 줄에 ">" 기호가 추가되고 그 뒤에 커서가 추가됩니다. 내가 무엇을 입력하든 명령을 종료할 때까지 동일한 작업이 계속 수행됩니다.
궁금해서 무슨 일이 일어났나요? 이것은 버그입니까 아니면 기능입니까?
답변1
당신이 보고 있는 효과는 쉘이 또 다른 백틱을 기대하기 때문입니다. 예를 들어, (
(또는 기타 불완전한 명령)을 입력 하고 Return명령줄을 누르면 동일한 효과를 얻을 수 있습니다.
당신이받는 프롬프트 >␣
는 다음과 같습니다두 번째 알림에 저장된 대로 $PS2
셸은 최종적으로 명령을 완료하기 위해 더 많은 대화형 입력이 필요할 때 이 프롬프트를 사용합니다.
한 가지 예:
bash-4.4$ for i in {0..10..2}
> do
> printf 'Hello %d\n' "$i"
> done
Hello 0
Hello 2
Hello 4
Hello 6
Hello 8
Hello 10
bash-4.4$
bash-4.4$
내 것이 되어라주요 팁( ), 첫 번째 줄에서 이후를 누르면 $PS1
두 번째 프롬프트가 표시됩니다 . 지금까지 입력한 명령이 완료되지 않았기 때문입니다. after를 눌러 명령이 완료될 때까지 각 줄에 보조 프롬프트가 계속 표시됩니다(이렇게 하면 쉘 입력에 대한 for 루프가 완료됩니다).Return{0..10..2}
Returndone
이것레벨 3 팁( $PS3
, 일반적으로 #?␣
)는 키워드에서 사용되는 select
반면4위안 1 팁$PS4
( 일반적으로 +␣
) 쉘 옵션이 로 설정된 경우 출력을 추적하는 데 사용됩니다.xtrace
set -x
1 네, 단어를 찾아봐야겠어요.
답변2
여기에 답변됨이미... 본질적으로
백틱 사이에 입력하는 모든 내용은 기본 명령 전에 셸에서 평가(실행)됩니다.