예를 들어 다음 명령에서는 tar -xzv
작동하지만 tar -xzvf
실패합니다.
wget ${target_url} -O - | tar -xzv --strip-components 1 -C ${web_application_root}/${domain}
내가 이해하는 바에 따르면 데이터 스트림을 STDOUT으로 다운로드 wget
하고 이를 STDIN으로 파이프하여 tar
해당 데이터로 디렉터리 파일을 생성(덮어쓰기)합니다. 파일에 저장되지 않은 데이터 스트림이 셸용 파일이 아니기 때문에 실패가 발생한다는
것을 이해합니다 . 따라서 tar "파일을 사용합니다"라고 말하면 작업이 중단됩니다.tar -xzvf
-f
내가 눈치 채지 못한 경우가 하나 있었고 -f
, 파이핑할 때 제거해야 한다는 것을 잊어버린 경우도 있었습니다. 이러한 경우는 거의 항상 -f
with 를 사용했기 때문에 발생했을 가능성이 높습니다 tar
.
tar 버전이 있습니까? 아니면 -f
데이터 스트림이 파일에 저장되지 않는 경우를 무시하는 tar를 만드는 조정이 있습니까?
관련 항목:
1.tar에서 -f를 사용하는 이유는 무엇입니까?
2.-f 옵션 없이 tar 추출됨
삼.wget에서 tar로 스트림을 파이프하고 특정 위치로 추출하는 데 실패합니다.
답변1
-f
tar
스트림이나 파일 또는 이와 유사한 동작을 변경하지 않습니다 .사용할 아카이브 이름을 지정하세요..
tar
옵션에 매개변수가 없는 경우를 처리하는 변형도 없고 -f
이를 수행하는 신뢰할 수 있는 방법도 없습니다. ~처럼카스예를 들어, 항상 매개변수를 취해야 한다는 것을 기억해야 합니다 -f
. 오류 발생을 줄이는 한 가지 방법은 항상 오류를 격리하는 것 f
입니다 -xzvf
.-f
필요한 경우 항상 를 사용하는 것이 가장 좋습니다 -f
. 이렇게 하면 -
옵션 없는 동작(컴파일 시간 옵션 및 변수에 따라 다름)에 의존하는 것을 피할 수 있습니다. 문제를 해결하는 한 가지 방법은 항상 작업 후에 시작하고 적절할 때 변경하는 것입니다.tar
-f
TAPE
-f -
-