리눅스 / 데비안-moreutils에서 'pee'는 무엇을합니까?


21

최근 에 데비안 (및 우분투)에서 'moreutils'패키지를 발견했습니다 . 편리한 유닉스 도구 모음입니다.

명령 중 하나는 'pee'입니다. 매뉴얼 페이지는 말합니다 :

오줌은 티와 같지만 파이프 용입니다.

그러나 짧은 매뉴얼 페이지이므로 버그를 제기했습니다 . 누구나 그것이 무엇을하는지, 어떻게 사용하는지, 왜 그것을 사용하는지 알고 있습니까?

답변:


29

오줌으로 할 수있는 일은 다음과 같습니다.

seq 5 -1 1 > file
cat file |pee 'sort -u > sorted' 'sort -R > unsorted'

따라서 pee는 파일 대신 쉘 파이프와 함께 작동합니다.

bash는 오줌이 필요하지 않으며 쉘 명령을 파일로 열 수 있습니다.

cat file |tee >(sort -u > sorted) >(sort -R > unsorted)

1
이 파일 이름을 jockers와 함께 사용할 수 있습니까? 참조 zgp.org/~dmarti/tips/git-multiple-post-receive-hooks을 - 오줌이 곱셈에 사용 stdin하고 파일 이름 패턴을 mathing 모든 스크립트에 클론을주고, 순수 bash는이 작업을 수행 할 수 있습니까? AFAIU는이 같은 괄호 causnig 뭔가 내부에 별표 (*)를 확장 할 tee >(app1 app2 app3 app4)어떤없는 >(app1) >(app2) >(app3) >(app4)당신의 대답 쇼
아리옥 '는

@Arioch, bash 구문은 hooks-joker 기술과 함께 작동하지 않습니다. moreutils를 설치하십시오.
Tobu

1
tee >/dev/nullstdin이 stdout으로 복제되는 것을 피하기 위해 사용
jfs

1
티를 통해 오줌의 진정한 장점은 각 하위 프로세스에서 오줌 자체로 stdout을 전송한다는 것입니다. tee로 저장하려면 각 프로세스 stdout을 파일로 리디렉션해야하지만 오줌으로 stdout을 저장하면됩니다. 물론 각 하위 명령이 비슷한 형식의 것을 출력하는 경우에만 의미가 있습니다. grep에서 방법이나 정규 표현식을 알 수 없다면 cat file | pee 'grep this' 'grep that' > lines.with.this.or.that.txt티를 사용하여 filestdout 의 사본을 얻을 수 있습니다.
underrun

>(command)기능을 프로세스 대체 라고 합니다.
Vlastimil Ovčáčík

16

tee먼저 사용한 경우 이해하기가 더 쉽습니다 . 이 유용한 이전 도구는 표준 입력을 사용하여 여러 파일과 표준 출력에 기록합니다. 다음과 같은:

echo "Hello world" | tee one two

string을 포함하는 one및 이라는 두 개의 파일을 만듭니다 . 또한 터미널로 인쇄됩니다.twoHello world


이제 pee비슷한 기능을 수행하지만 출력을 여러 파일로 리디렉션하는 대신 여러 보조 명령 인 파이프로 리디렉션합니다. tee원래 stdin을 stdout으로 보내지 않는다는 점에서 보조 명령의 출력과 결합하는 것이 의미가 없기 때문에 약간 다릅니다 . 다음은 매우 간단한 예입니다.

echo "Hello world" | pee cat cat

문자열 Hello world을 터미널에 두 번 출력합니다 . 두 인스턴스 각각이 cat표준 출력 을 수신하고 수행하는 cat작업을 수행하기 때문입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.