터미널, 어떤 명령도 실행되지 않고 대신 내가 입력한 내용이 반복됩니다.

터미널, 어떤 명령도 실행되지 않고 대신 내가 입력한 내용이 반복됩니다.

이라는 파일을 열어야 합니다 -. (해커 게임을 하고 있습니다.)
command 를 사용하려고 하면 cat -- -입력한 모든 명령이 작동하지 않습니다. 실제로 Enter를 누른 후에는 입력한 모든 것이 작동하지 않습니다. Enter 후에 반복됩니다.

나는 어떤 유형의 루프나 확장 명령 모드 등으로 들어가고 있다고 가정합니다.

이 "루프"에서 벗어나려면 무엇을 입력하거나 누르나요?

명령이 계속 반복됩니다

명확하게 말하면 "hhel"을 한 번 입력했는데 두 번 나타났고, "test"를 한 번 입력했는데 사진에서 볼 수 있듯이 터미널에 두 번 나타났습니다.

답변1

달리는 cat -- -것은 실제로 달리는 것과 같습니다 cat. -표준 입력으로 해석되지만 cat인수가 없으면 기본 동작은 어쨌든 표준 입력을 읽는 것입니다. 반복되는 텍스트의 경우 이것은 입력할 때(처음) 입력 내용을 에코하는 터미널이고, cat은 입력을 읽고 출력에 인쇄합니다(이 역시 터미널이므로 텍스트가 두 번째로 표시됩니다). .

이 작업을 종료하려면 CtrlD새 줄을 누르세요. 또한 CtrlCSIGINT를 보내서 cat종료되도록 할 수도 있습니다.

-현재 디렉토리에서 호출된 파일의 내용을 보려면 cat다음을 사용하십시오.

cat ./-

답변2

이 "루프"에서 벗어나려면 무엇을 입력하거나 누르나요?

무루의 대답이 상황에서 벗어나려면 Ctrl-D 또는 Ctrl-C를 누를 수 있다고 이미 언급했지만, 이러한 키 조합을 사용하면 이 상황에서 벗어날 수 있다는 점을 기억해 두는 것이 좋습니다.거의 모든단말기에 원하지 않는 상황이 나타나는 것은 이뿐만 아니라그들은 그들이 하는 일을 합니다.

  • Ctrl-D는 EOF(파일 끝)를 현재 프로그램으로 보냅니다. 프로그램이 터미널에서 "EOF까지"를 읽고 종료하도록 설계된 경우(많은 프로그램이 이에 해당함) Ctrl-D를 사용하면 종료할 수 있습니다. cat이런 프로그램입니다.
  • Ctrl-C 보내기인터럽트 신호현재 프로그램에. 이것~ 할 것이다프로그램을 종료하고,~하지 않는 한이 프로그램은 중단되었을 때 다른 작업을 수행하도록 특별히 설계되었습니다(또는 일부 타사 프로그램/라이브러리에 따라 다름). 따라서 이것은 일반적으로 Ctrl-D보다 더 강력합니다. 사용되는 프로그램 외에 터미널 프로그램이 거의 없습니다.TUI(텍스트 기반 사용자 인터페이스), Ctrl-C를 눌러도 즉시 종료되지 않습니다.
  • 그리고 Ctrl-Z를 누르면배경현재 프로그램. 프로그램이 종료되지는 않지만 (보통) 터미널로 돌아갑니다. Ctrl-C와 마찬가지로 프로그램은 이를 재정의할 수 있지만 일반적으로 TUI를 사용하지 않는 한 그렇게 하지 않습니다. Ctrl-Z를 사용한 후 마지막으로 중지한 프로그램으로 돌아갈 수 있습니다 fg. 또는 오류를 사용하여 잘못된 프로세스를 ps -a찾아 완전히 제거할 수도 있습니다.PIDkill -9 <PID>
  • 마지막으로, 이 방법 중 아무것도 작동하지 않지만 GUI를 사용하는 경우 다음을 수행할 수 있습니다.두 번째 터미널 열기위에서 언급한 대로 and 거기를 ps사용 합니다 .kill

보너스로, 때로는 "부분적으로" 작동하지만 제대로 표시되지 않는 터미널이 생기거나, 버그가 있는 프로그램을 제거했다고 확신해도 아무 일도 하지 않는 것처럼 보이는 경우가 있습니다. 이 경우 reset터미널을 복원하기 위해 맹목적으로 입력을 시도할 수 있습니다(마지막에 Enter를 누르는 것을 잊지 마세요)(데이터는 손실되지 않지만 입력과 같은 작업을 수행합니다. 일부 프로그램에서는 이를 닫았다가 다시 열지 않습니다).

관련 정보