두 개의 개별 스트림에 stdout 및 stderr 표시

조이 헐

stdout과 stderr를 시각적으로 분리하여 인터리빙하지 않고 쉽게 식별 할 수있는 방법을 찾고 있습니다. 이상적으로는 stdout과 stderr가 화면에 표시되는 별도의 영역 (예 : 다른 열)을 가질 것입니다. 예를 들어 다음과 같은 출력이 표시됩니다.

~$ some command
some useful output info
ERROR: an error
more output
ERROR: has occurred
another message
~$ 

대신 다음과 같이 보일 것입니다.

~$ some command          |
some useful output info  |
more output              |  ERROR: an error
another message          |  ERROR: has occurred
~$                       |
스테판 샤젤 라스

GNU screen의 수직 분할 기능을 사용할 수 있습니다 .

#! /bin/bash -
tmpdir=$(mktemp -d) || exit
trap 'rm -rf "$tmpdir"' EXIT INT TERM HUP

FIFO=$tmpdir/FIFO
mkfifo "$FIFO" || exit

conf=$tmpdir/conf

cat > "$conf" << 'EOF' || exit
split -v
focus
screen -t stderr sh -c 'tty > "$FIFO"; read done < "$FIFO"'
focus
screen -t stdout sh -c 'read tty < "$FIFO"; eval "$CMD" 2> "$tty"; echo "[Command exited with status $?, press enter to exit]"; read prompt; echo done > "$FIFO"'
EOF

CMD="$*"
export FIFO CMD

screen -mc "$conf"

예를 들어 다음과 같이 사용하려면 :

that-script 'ls / /not-here'

아이디어는 수직 분할 레이아웃에서 두 개의 화면 창을 시작하는 임시 conf 파일로 화면을 실행한다는 것입니다. 첫 번째에서는 두 번째에 연결된 stderr로 명령을 실행합니다.

두 번째 창에 명명 된 파이프를 사용하여 tty 장치를 첫 번째 창에 전달하고 첫 번째 창에 명령이 완료되면 두 번째 창에 알려줍니다.

파이프 기반 접근 방식에 비해 다른 장점은 명령의 stdout 및 stderr이 여전히 tty 장치에 연결되어 있으므로 버퍼링에 영향을주지 않는다는 것입니다. 두 창 모두 독립적으로 위아래로 스크롤 할 수 있습니다 ( screen의 복사 모드 사용).

bash해당 스크립트를 사용하여 대화식으로 쉘을 실행 하면 프롬프트가 두 번째 창에 표시되고 쉘은 해당 쉘이 stderr에 프롬프트를 출력 할 때 첫 번째 창에 입력 한 내용을 읽습니다.

의 경우 bash1, 에코 당신은 또한과 두 번째 창에 나타납니다 입력 한 내용의 에코 (의 경우 readline에 쉘에 의해 출력 bash표준 오류에는)뿐만 아니라. 다른 쉘 등으로 ksh93, 그것은 첫 번째 창에 (표시됩니다 에코 당신이 쉘을 넣어하지 않는 한, 상기 단말 장치 드라이버에 의해 출력이 아닌 쉘) emacs또는 vi와 모드 set -o emacsset -o vi.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 개의 개별 스트림에 stdout 및 stderr 표시

분류에서Dev

두 개의 별도 터미널 창에서 프로세스의 stdout 및 stderr를 볼 수 있습니까?

분류에서Dev

콘솔과 파일 모두에 stdout 및 stderr을 표시하고 stderr을 빨간색으로 표시하고 stdout 및 stderr를 생성 할 때 표시합니다.

분류에서Dev

"3 방향"Python 하위 프로세스 파이프 라인 : stdout 및 stderr를 두 개의 다른 프로세스로 전송 하시겠습니까?

분류에서Dev

WSGI의 두 개의 개별 django 사이트 (루트 및 / two)

분류에서Dev

두 개의 열 선택 및 표시

분류에서Dev

날짜별로 정렬 된 uitableview에 두 개의 배열 표시

분류에서Dev

메시징 및 프레즌스 기능이있는 두 개의 소프트 폰에 대한 간단한 별표 PJSIP 구성

분류에서Dev

검색 및 개별 표시를 위해 변수에서 두 개의 문자열 항목을 분리하십시오.

분류에서Dev

스트림에서 두 개의 다른 목록에 동시에 개체 추가

분류에서Dev

SLURM은 완료되지 않은 작업의 stdout 및 stderr를 표시합니다.

분류에서Dev

FusionChart AngularJS : "표시 할 데이터 없음"두 개의 개별 차트를 표시 할 수 없음

분류에서Dev

RxJS-두 개의 개별 $ http 스트림에서 두 개의 배열을 올바르게 병합

분류에서Dev

Java- 텍스트 파일의 홀수 및 짝수 단어를 두 개의 개별 배열 목록에 저장

분류에서Dev

matplotlib에 두 개의 컬러 바 표시

분류에서Dev

두 개의 div에 나란히 표시

분류에서Dev

각 결과 + 서식에 대해 하나씩 두 개의 셀 정렬 및 표시

분류에서Dev

Bash 스크립트 stderr 및 stdout

분류에서Dev

두 개의 개별 컴퓨터간에 VirtualBox VM 유지 및 동기화

분류에서Dev

두 개의 개별 PCIe SSD에서 이중 부팅 openSUSE 및 Windows 8.1

분류에서Dev

두 개의 개별 물리적 SSD에서 듀얼 부팅 win 10 및 Ubuntu 18.04

분류에서Dev

C의 2D 배열 안에 두 개의 동일한 열의 개별 요소를 표시하는 방법

분류에서Dev

node.js 8의 child.process에서 stdout 및 stderr 정의

분류에서Dev

중복없이 stdout 및 stderr 모두에 C 인쇄에 로그인

분류에서Dev

두 개의 개별 열의 데이터를 동일한 열에 표시하려는 경우

분류에서Dev

하나의 HTML / JS에 대해 두 개의 개별 정보를 표시해야합니다.

분류에서Dev

Node.js의 자식 프로세스 stdout 및 stderr 열 크기

분류에서Dev

두 개의 원격 스트림을 동시에 재생하는 방법

분류에서Dev

두 개의 원격 스트림을 동시에 재생하는 방법

Related 관련 기사

  1. 1

    두 개의 개별 스트림에 stdout 및 stderr 표시

  2. 2

    두 개의 별도 터미널 창에서 프로세스의 stdout 및 stderr를 볼 수 있습니까?

  3. 3

    콘솔과 파일 모두에 stdout 및 stderr을 표시하고 stderr을 빨간색으로 표시하고 stdout 및 stderr를 생성 할 때 표시합니다.

  4. 4

    "3 방향"Python 하위 프로세스 파이프 라인 : stdout 및 stderr를 두 개의 다른 프로세스로 전송 하시겠습니까?

  5. 5

    WSGI의 두 개의 개별 django 사이트 (루트 및 / two)

  6. 6

    두 개의 열 선택 및 표시

  7. 7

    날짜별로 정렬 된 uitableview에 두 개의 배열 표시

  8. 8

    메시징 및 프레즌스 기능이있는 두 개의 소프트 폰에 대한 간단한 별표 PJSIP 구성

  9. 9

    검색 및 개별 표시를 위해 변수에서 두 개의 문자열 항목을 분리하십시오.

  10. 10

    스트림에서 두 개의 다른 목록에 동시에 개체 추가

  11. 11

    SLURM은 완료되지 않은 작업의 stdout 및 stderr를 표시합니다.

  12. 12

    FusionChart AngularJS : "표시 할 데이터 없음"두 개의 개별 차트를 표시 할 수 없음

  13. 13

    RxJS-두 개의 개별 $ http 스트림에서 두 개의 배열을 올바르게 병합

  14. 14

    Java- 텍스트 파일의 홀수 및 짝수 단어를 두 개의 개별 배열 목록에 저장

  15. 15

    matplotlib에 두 개의 컬러 바 표시

  16. 16

    두 개의 div에 나란히 표시

  17. 17

    각 결과 + 서식에 대해 하나씩 두 개의 셀 정렬 및 표시

  18. 18

    Bash 스크립트 stderr 및 stdout

  19. 19

    두 개의 개별 컴퓨터간에 VirtualBox VM 유지 및 동기화

  20. 20

    두 개의 개별 PCIe SSD에서 이중 부팅 openSUSE 및 Windows 8.1

  21. 21

    두 개의 개별 물리적 SSD에서 듀얼 부팅 win 10 및 Ubuntu 18.04

  22. 22

    C의 2D 배열 안에 두 개의 동일한 열의 개별 요소를 표시하는 방법

  23. 23

    node.js 8의 child.process에서 stdout 및 stderr 정의

  24. 24

    중복없이 stdout 및 stderr 모두에 C 인쇄에 로그인

  25. 25

    두 개의 개별 열의 데이터를 동일한 열에 표시하려는 경우

  26. 26

    하나의 HTML / JS에 대해 두 개의 개별 정보를 표시해야합니다.

  27. 27

    Node.js의 자식 프로세스 stdout 및 stderr 열 크기

  28. 28

    두 개의 원격 스트림을 동시에 재생하는 방법

  29. 29

    두 개의 원격 스트림을 동시에 재생하는 방법

뜨겁다태그

보관