예를 들어 명령의 출력을 보고 싶다고 가정해 보겠습니다 apt-get
. 그러나 출력을 리디렉션하는 명령을 실행하면 다음과 같습니다.
apt-get install some-application -y > apt_out.txt
또는
apt-get install some-application -y | tee apt_out.txt
그러면 프로그램 입력과 상호 작용하는 능력을 잃게 됩니다. 그러나 내 해결 방법은 세션을 사용하는 것이지만 screen -L
더 깨끗한 것이 있습니까?
답변1
불특정 개념보다는 기능 세트 및 동작 측면에서 이를 살펴보겠습니다.청결.
ㅏ그다지 다재다능하지 않음메커니즘은 screen -L
, 그러나그럼에도 불구하고귀하의 목적을 위해 이 명령은 아무 작업도 수행하지 않습니다 screen
( tee
즉, 쉬운 대화형 사용을 허용하고 표준 출력이 터미널이 아님을 발견할 때 프로그램을 비대화형 또는 버퍼 출력 모드로 전환하지 않습니다) script
.
스크립트 -c "apt-get 일부 응용 프로그램 설치" apt_out.txt
다른 메커니즘 script
은ptybandage
예명령 파이프라인에 사용하기에 적합합니다.확실히이를 필요로 하는 외부 표준 I/O는 실제로 터미널입니다. (실제로 주요 사용 사례는 비대화형 표준 I/O를 서브루틴에 대한 대화형 표준 I/O처럼 보이게 만드는 것입니다.) 이는 프로그램이 대화형/라인 버퍼 모드 실행에서 이를 수행하도록 설득하는 방법입니다. 여전히 직선 파이프라인 tee
방식을 사용하고 있습니다.
ptybandage apt-get install some-application 2>&1 | ptybandage apt-get install some-application 2>&1 | ptybandage apt-get install some-application 2>&1 |
추가 읽기
- 파일에서 stdout/stderr을 캡처하지만 콘솔에서는 계속 볼 수 있는 방법은 무엇입니까?
- 출력이 터미널로 가는 것으로 생각하도록 명령을 속이는 방법
- 스크립트 출력에서 제어 문자(콘솔 코드/색상 포함) 제거
- script(1)의 출력에 줄바꿈 CR+LF(dos 스타일)가 있는 이유는 무엇입니까?
- 로그 파일에서 BS 및 ESC 제거
- 조나단 데보인 폴라드(2016).Daniel J. Bernstein의 ptyget 도구 세트. 소프트웨어.
- 조나단 데보인 폴라드(2016). 소프트웨어 통합(Daniel J. Bernstein). 소프트웨어.
답변2
screen -L
나에게는 좋은 해결책처럼 들립니다. 또 다른 옵션은 script
(일부 사람들이 혼란스러워하는 제어 문자 및 잘못된 입력도 기록합니다)입니다.
많은 프로그램은 입력과 출력이 터미널에 연결되어 있는지 테스트하고 이에 따라 동작이 실패하거나 변경됩니다. ls
vs. ls | cat
의 작은 예를 참조하세요 .