표준 출력을 표준 오류에 연결하시겠습니까?

표준 출력을 표준 오류에 연결하시겠습니까?

한 프로세스의 표준 출력을 다른 프로세스의 표준 입력과 콘솔로 보내고 싶습니다. 예를 들어, stdout을 stdout+stderr로 보냅니다.

git edit예를 들어 다음과 같은 별칭이 있습니다 .

git status --short | cut -b4- | xargs gvim --remote

파일 이름 목록도 화면으로 보내고 싶습니다 xargs.

그렇다면 tee이를 수행할 수 있는 유사한 유틸리티가 있습니까? 이렇게 하면 다음과 같은 작업을 수행할 수 있습니다.

git status --short | \
    cut -b4- | almost-but-not-quite-entirely-unlike-tee | \
    xargs gvim --remote

답변1

tee다음을 사용하여 현재 콘솔에 복사할 수 있습니다.tee /dev/tty

git status --short | cut -b4- | tee /dev/tty | xargs gvim --remote

/dev/stdout또는 또는 을 사용할 수 있지만 /dev/stderr명령이 스크립트 내에 있으면 리디렉션될 수 있습니다. 이는 /dev/tty항상 콘솔이라는 점에 유의하십시오(비대화형 쉘에는 없을 수도 있음).잘못된 내용입니다. 댓글을 읽어보시기 바랍니다.

답변2

다음보다 더 일반적인 솔루션 /dev/tty:

start cmd:> echo foo | tee /dev/stderr 
foo
foo

답변3

당신은 그것을 사용할 수 있습니다명령을 실행하려면 STDERR 파일을 입력하세요. 예를 들면 다음과 같습니다.

tee /dev/stderr
tee /proc/self/fd/2

따라서 이 경우 별칭은 다음과 같을 수 있습니다.

git status --short | \
    cut -b4- | tee /dev/stderr | \
    xargs gvim --remote

관련 정보