stdout to stderr? + stderr로 전송합니다. 예를

한 프로세스에서 다른 프로세스의 stdin으로 콘솔뿐만 아니라 stdout을 보내려고합니다. 예를 들어 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


답변

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

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

/dev/stdout또는 /dev/stderr명령을 스크립트 내에있는 경우 또는를 사용할 수 있지만 리디렉션 될 수 있습니다. 참고 /dev/tty항상 콘솔 될 것입니다 (그리고 비 대화식 쉘에 존재하지 않을 수 있습니다). 이것은 틀렸다, 의견을 읽으십시오.


답변

보다 일반적인 해결책 /dev/tty:

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

답변

tee 명령을 사용할 수 있습니다 . 예를 들어 STDERR 파일과 함께 제공하면됩니다.

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

이 경우 귀하의 별칭은 다음과 같습니다.

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