stdout을 다른 프로그램으로 파이프하는 방법은 무엇입니까?

stdout을 다른 프로그램으로 파이프하는 방법은 무엇입니까?

내 코드에 대한 린터를 설정하려고 하는데 현재 분기에서 변경된 커피 스크립트 파일만 확인하고 싶습니다. 그래서 다음 명령을 사용하여 파일 목록을 생성합니다 git.

git diff --name-only develop | grep coffee$

이는 처리하고 싶은 파일의 멋진 목록을 제공하지만 실제로 작업을 수행하기 위해 이를 Linting 프로그램에 파이프하는 방법을 기억할 수 없습니다. 기본적으로 나는 다음 과 같은 find것을 원합니다 -exec:

find . -name \*.coffee -exec ./node_modules/.bin/coffeelint '{}' \;

감사해요!

답변1

while 루프를 통해 파이프하면 됩니다.

git diff --name-only develop | grep coffee$ | while IFS= read -r file; do
    ./node_modules/.bin/coffeelint "$file"
done

답변2

xargs내가 찾고 있는 유닉스 유틸리티입니다. 매뉴얼 페이지에서:

The xargs utility reads space, tab, newline and end-of-file delimited strings from the standard input and executes utility with the strings as arguments.

Any arguments specified on the command line are given to utility upon each invocation, followed by some number of the arguments read from the standard input
 of xargs.  The utility is repeatedly executed until standard input is exhausted.

따라서 내 원래 문제에 대한 해결책은 다음과 같습니다.

git diff --diff-filter=M --name-only develop | grep coffee$ | xargs ./node_modules/.bin/coffeelint

관련 정보