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 0af62b1tar 파일을 출력하여 화면에 인쇄합니다. 이 출력은 매개변수를 사용하여 파일로 캡처할 수 있습니다 --output file_name.

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

이 경우 왜 배관이 불가능합니까? 명령이 파이프 입력을 허용하는지 어떻게 알 수 있나요?

답변1

git귀하의 입력을 stdin 동의어로 연결해 보겠습니다 tar -xf - -C /the/path/here/. -또는 더 간단합니다 tar -xC /the/path/here( -기본 파일임).

답변2

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

$ git 아카이브 --format=tar 0af62b1 |-xf-C/the/path/here/
타르:-C: 열 수 없음:해당 파일 또는 디렉터리가 없습니다.
tar: 복구할 수 없는 오류: 즉시 종료하세요.

tar에게 -C라는 파일을 사용하라고 지시했는데, 이는 존재하지 않으므로 실패합니다.

작업 상황에서는 file_name이라는 파일이 제공되며 파일이 존재하고 모든 것이 잘 작동합니다.

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

관련 정보