터미널에 표시된 모든 내용을 읽습니다.

터미널에 표시된 모든 내용을 읽습니다.

터미널에 콘텐츠를 쓰는 터미널 응용 프로그램을 만들고 있습니다. 테스트하려면 실제로 터미널에 표시되는 내용을 테스트해야 합니다. 터미널에 실제로 표시된 데이터를 어떻게든 읽을 수 있는 방법이 있나요?

터미널은 파일이나 어딘가에 있어야 하므로 거기에 있는 내용을 읽을 수 있는 방법이 있어야 합니다.

cat /dev/tty

거기에 데이터 흐름을 제공하는 것 같습니다...하지만 키 입력을 보고 싶지는 않습니다. 내가 쓴 것뿐입니다.

답변1

일부 터미널 프로그램은 화면 덤프를 제공합니다(예:xterm), 그러나 대부분은 그렇지 않습니다(참조화면에 존재하는 명령줄 텍스트를 파일로 저장하시겠습니까? (비그래픽 Linux)예를 들어). gimp와 같은 도구를 사용하여 스크린샷을 찍을 수 있지만 실제 문자가 무엇인지는 알 수 없습니다. 발전하려면 이것을 알아야 해요.

나는 script출력을 에 기록하는 데 사용합니다 typescript. cat이를 화면으로 되돌릴 수 있습니다(또는 less -R이스케이프 시퀀스가 ​​충분히 간단한 경우 사용). 더 복잡한 작업이나 긴 추적의 경우 다른 도구를 사용합니다.

  • slowcatcat진행 속도 를 늦추다
  • vile-pager필터는 읽을 수 있는 형식으로 이스케이프됩니다.less— 색상 순서는 여러 줄에 걸쳐 작동하지만 여전히 한 줄 커서 이동으로 제한됩니다. 사용하는 필터입니다vi와 유사한 이맥스, 특별한 목적을 통해유용.

차이점을 설명하기 위해 다음은 내 Debian 컴퓨터 중 하나에서 실행되는 파일 less -r의 스크린샷 입니다.typescriptapt-get update

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

대신 vile-pager텍스트가 포함된 위치를 강조표시하세요.

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

어느 쪽이든(덜 또는 더 비열하게), 응용 프로그램이 화면 주위로 커서를 이동하는 경우 출력을 볼 수 있는 유일한 방법은 cat/slowcat/etc를 사용하는 것입니다.

답변2

tee한 가지 옵션은 추적하려는 모든 명령 전에 도구를 사용하는 것입니다. 이 방법으로 선택한 로그 파일에 모든 출력을 저장할 수 있습니다.

bash모든 출력을 다음 이름의 텍스트 파일에 저장하는 아래 예를 참조하세요 log.txt.

bash | tee log.txt
echo 'hello world'
ls
exit
cat log.txt

완료되면 CTRL+D위의 예와 같이 를 사용하거나 간단히 입력하여 새 BASH 세션을 종료할 수 있습니다.exit

실제로 터미널에 전달된 명령을 찾으려는 경우(원래 질문에서 예상한 것인지 확실하지 않음) 언제든지 실행하거나 history확인할 수 있습니다.~/.bash_history

답변3

PARAMETER_EMMC=10
while [ $PARAMETER_EMMC -eq 10 ]
    do
    read -u $USBFPI -r -n 3000 -t .3  text
        if [[ $text == *"text read from USB"* ]];  then

Execute 
fi 
done

관련 정보