
rpm -qa > file | wc -l
0을 반환합니다. 내가 뭘 잘못했나요? 내 목표는 분명하다고 생각하지만 작동하지 않습니다. 이것은 xargs
또는 을 위한 직업 입니까 tee
?
답변1
답변2
예, 이것이 바로 티셔츠 작업입니다.
rpm -qa | tee file | wc -l
이 구조에서 a | b
a의 표준 출력은 b의 표준 입력으로 이동합니다. a > file | b
a 형식의 모든 출력이 파일로 이동하고 b의 표준 입력으로 아무 것도 이동하지 않는 경우 . tee
이 명령은 표준 입력으로 받은 모든 것을 파일과 표준 출력으로 복사합니다.
답변3
rpm -qa > file ; wc -l file
당신이 원하는 것을해야합니다.
답변4
Bourne 또는 POSIX 호환 셸에서 리디렉션은 왼쪽에서 오른쪽으로 처리되며 파이프가 먼저 나타납니다. 따라서 명령은 다음과 같이 실행됩니다(하위 프로세스 2에서 발생하는 작업은 생략합니다).
- 파이프라인을 생성합니다.
- 두 개의 하위 프로세스 1과 2를 포크합니다.
- 표준 출력 1을 파이프로 리디렉션합니다.
- 표준 출력 1을 로 리디렉션합니다
file
. - 1. 실행
rpm -qa
.
하위 프로세스 1의 출력을 두 채널(파일 및 파이프) 모두에 복사하려면 누군가 데이터의 두 복사본을 만드는 작업을 수행해야 합니다. 이것이 바로 tee
목적입니다.
rpm -qa | tee file | wc -l
Zsh에는 다음과 같은 내장 출력 복사 기능이 있습니다.여러 운영 체제. zsh에서(이 옵션을 유지하는 zsh에서만 multios
, POSIX 호환 쉘이나 POSIX 이전 Bourne 쉘, (t)csh에서는 아님) 작성한 것과 같은 명령은 데이터를 양방향으로 복사합니다. 리디렉션.
# in zsh
rpm -qa >file | wc -l