Enter 키를 누르지 않고 터미널에 작성된 내용을 bash에서 어떻게 검색할 수 있나요?

Enter 키를 누르지 않고 터미널에 작성된 내용을 bash에서 어떻게 검색할 수 있나요?

ping명령이 실행 중이고 실행되는 동안 터미널에 무언가를 입력 한다고 가정해 보겠습니다 .ping

이제 ping종료하고 bash제어권을 다시 얻을 때 실행 중에 입력한 내용이 bash터미널에 인쇄됩니다 . ping내가 의미하는 바를 보여주는 스크린 샷은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

이 정보를 얻는 방법은 무엇입니까 bash? stdin를 입력할 때 "I typed this while ping was running"누르지 않기 때문에 Enter(따라서 stdin비어 있음) 이 항목에서 정보를 얻지 못할 것이라고 확신합니다 .

답변1

불다했다표준 입력(stdin)(즉, 터미널)에서 입력을 받습니다.

터미널은 다음 두 가지 중 하나일 수 있습니다.모델:날것의또는요리("문자 모드" 및 "라인 모드"라고도 알려져 있으며 "raw" 및 "cooked"라는 용어는 주로 Unix 세계에서 사용됩니다.) ("cooked"라는 단어는 "raw"와 반대되는 말장난으로 도입되었습니다) ). 원시 모드에서는 터미널이 입력을 즉시 애플리케이션에 전송합니다. 쿠킹 모드에서 터미널은 전체 라인을 읽고 (매우 원시적인) 라인 편집 메커니즘을 제공하며, 사용자가 이를 누를 때만 데이터를 애플리케이션으로 전송합니다 Enter.

터미널은 쿠킹 모드에서 시작됩니다. Bash와 같이 입력에 대한 더 많은 제어를 원하는 애플리케이션은 사용자가 명령을 입력할 때까지 기다리는 동안 터미널을 원시 모드로 설정합니다.

답변2

터미널 장치 파일에 첨부된 파일 설명자(예: fd0)가 있는 모든 프로그램은 터미널이 "전송"할 때까지 해당 줄의 텍스트를 볼 수 없도록 터미널이 키보드를 통해 수신된 텍스트의 각 줄을 버퍼링한다고 생각합니다. 을 누르세요 Enter.
(셸의 줄 편집기가 이 문제를 어떻게 해결하는지 - 확실하지는 않지만 클릭하기 전에 확실히 텍스트를 얻습니다 Enter.)

또한 쉘이 하위 프로세스를 시작하면(이 경우 ping) 하위 프로세스가 실행되는 동안 정지/중지 상태가 되므로 wait터미널이 텍스트를 유지하지 않더라도 쉘은 이를 무시하고 의미가 있다고 가정합니다. 하위 프로세스 프로세스의 경우.

화면에 보이는 텍스트는 다음과 같습니다.단말기표시되고 있지만 자식 프로세스가 종료되고 쉘이 "깨어나고" 텍스트가 쉘 라인 편집기로 전송될 때까지 어떤 프로그램도 이를 잡아서 아무 작업도 수행하지 않습니다. 비록 모든 터미널이 반드시 그렇게 할 것이라고는 생각하지 않습니다.

관련 정보