파이프로 연결된 입력의 모든 출력을 CLI 프로그램으로 캡처

파이프로 연결된 입력의 모든 출력을 CLI 프로그램으로 캡처

내가 다음과 같은 일을 할 때 :

$ echo "print \"test\"" | python

제 생각에는:

Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more 
information.
>>> print "test"
test

바꾸다:

test

표준 출력의 모든 프롬프트를 캡처하는 방법이 있습니까?

답변1

댓글에 제시된 모든 제안을 다음과 같이 결합할 수 있습니다.여기에 있는 문자열혼합:

$ script -c 'python -i <<< "print \"test\""'
Script started, file is typescript
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> test
>>>
Script done, file is typescript

그러면 위의 내용이 다음 파일에 기록됩니다 typescript.

$ cat typescript
Script started on Tue 21 Aug 2018 12:19:50 AM EDT
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> test
>>>

Script done on Tue 21 Aug 2018 12:19:50 AM EDT

위의 방법은 다음과 같이 작동합니다.

  • script -c'...' - runs the commands in single quotes in스크립트 and logs the output to the file타이프스크립트`
  • python -i <<< "...."- 대화형 모드에서 Python을 실행하고 다음 "...."과 같이 명령을 전달합니다.여기에 있는 문자열
  • "print \"test\""- 명령으로 실행여기에 있는 문자열

이스케이프 시퀀스가 ​​포함된 타이프스크립트

typescript생성된 파일에 다음과 같은 이스케이프 시퀀스가 ​​포함되어 있는 경우 :

ESC[34mRPMsESC[39;49mESC[0m
ESC[34mRPMs_fpmESC[39;49mESC[0m
ESC[34mansibleESC[39;49mESC[0m

less -R다음을 사용 하거나 볼 수 있습니다 less -r.

$ less -R somefile
RPMs
RPMs_fpm
ansible

인용하다

관련 정보