tar 명령에 대한 입력으로 파일을 파이프하는 방법

tar 명령에 대한 입력으로 파일을 파이프하는 방법

다음 명령을 사용하여 파이프된 tar 파일의 압축을 풀려고 하면 다음 오류가 발생합니다.

$ git archive --format=tar 0af62b1 | tar -xf -C /the/path/here/
tar: -C: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

첫 번째 부분은 git archive --format=tar 0af62b1화면에 인쇄된 tar 파일을 출력합니다. 이 출력은 매개변수를 사용하여 파일에 캡처할 수 있습니다 --output file_name.

두 번째 부분에서는 파일 내용을 표시된 경로로 추출하려고 합니다. 별도로 실행하면 둘 다 완벽하게 작동 git archive 0af62b1 --output file_name하고 tar -xf file_name -C /the/path/here/.

이 경우 파이핑이 불가능한 이유는 무엇이며 특정 명령이 파이프 입력을 허용하는지 어떻게 알 수 있습니까?

답변1

나는 표준 입력과 동의어인 곳 git으로 여러분을 연결하려고 노력할 것입니다. 또는 더 간단 합니다 ( 기본 파일입니다).tar -xf - -C /the/path/here/-tar -xC /the/path/here-

답변2

문제는 오류 출력에 표시됩니다.

$ git archive --format=tar 0af62b1 | 타르-xf -C/the/path/here/
타르:-C: 열 수 없음:해당 파일 또는 디렉터리가 없습니다
. tar: 오류는 복구할 수 없습니다. 지금 종료합니다.

존재하지 않는 -C라는 파일을 사용하도록 tar에 지시하므로 오류가 발생합니다.

작업 사례에서는 존재하고 모든 것이 작동하는 file_name이라는 파일을 제공합니다.

가능한 수정: 명령에서 "-f -C"를 제거합니다.

관련 정보