티를 사용한 경험이 많지 않기 때문에 이것이 기본적이지 않기를 바랍니다.
이 질문에 대한 답변 중 하나를 본 후 나는 이상한 행동을 보았습니다 tee
.
첫 번째 줄과 찾은 줄을 출력하려면 다음을 사용할 수 있습니다.
ps aux | tee >(head -n1) | grep syslog
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4
그러나 처음 (zsh에서)이 결과를 잘못된 순서로 실행하면 열 머리글이 grep 결과 아래에 있었지만 (다시 발생하지는 않았지만) 명령을 바꾸려고했습니다.
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
첫 줄만 인쇄되고 다른 것은 없습니다! 티를 사용하여 grep으로 리디렉션 할 수 있습니까, 아니면 잘못된 방법으로 수행합니까?
이 질문을 입력 할 때 두 번째 명령이 실제로 한 번 작동했으며 5 번 다시 실행 한 다음 한 줄 결과로 돌아갔습니다. 이게 내 시스템인가요? (tmux 내에서 zsh를 실행 중입니다).
마지막으로, 첫 번째 명령으로 "grep syslog"가 결과로 표시되지 않는 이유는 무엇입니까 (결과는 하나만 있음)?
제어를 위해 여기없는 grep이 있습니다. tee
ps aux | grep syslog
syslog 806 0.0 0.0 34600 824 ? Sl Sep07 0:00 rsyslogd -c4
henry 2290 0.0 0.1 95220 3092 ? Ssl Sep07 3:12 /usr/bin/pulseaudio --start --log-target=syslog
henry 15924 0.0 0.0 3128 824 pts/4 S+ 13:44 0:00 grep syslog
업데이트 : head가 전체 명령을 자르고있는 것 같습니다 (아래 답변에 표시된 것처럼) 아래 명령은 이제 다음을 반환합니다.
ps aux | tee >(grep syslog) | head -n1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
syslog 806
ps aux | sed -n -e '1p' -e '/syslog/p'
.