왜`tar -xvfz`는 실패하지만`tar xvfz`는 작동합니까?


41

tar -xvfz foo.tar.gz 오류를 반환 tar: z: Cannot open: No such file or directory

이것은 완전히 이해할 수 있습니다- f스위치는 파일 이름을 기대하므로 마지막이어야합니다.

그러나 하이픈을 생략 tar xvfz foot.tar.gz하면 파일이 압축 해제되고 압축이 풀립니다.

나는 이것을 OS X 10.8과 Ubuntu 12.04에서 테스트했습니다.

어떤 아이디어가 있습니까?

[추가 편집]

나는 항상 사용 tar -zxvf foo.tar.gz합니다. 그러나이 질문은 이 xkcd로 인해 발생 했으며 누군가가 그것을 주장 할 때 놀랍습니다 tar xvfz.

여기에 이미지 설명을 입력하십시오


12
죄송합니다 : xkcd.com/1168
MichaelHouse

답변:


61

타르 (구문에 따라 3 종류의 보유 이것을 )

  • 긴 옵션 (-파일)
  • 짧은 옵션 (-f)
  • 이전 옵션 (f)

이전 옵션 구문의 경우 모든 문자는 "tar"뒤에 와야하며 공백없이 단일 덩어리에 속해야합니다. 옵션의 덩어리 이후에 해당 문자에 대한 인수가 동일한 순서를 따르는 한 문자의 순서는 실제로 중요하지 않습니다.

타르 옵션을 작성하는이 오래된 방법은 숙련 된 사용자라도 놀라게 할 수 있습니다. 예를 들어 두 명령은 다음과 같습니다.

 # tar cfz archive.tar.gz file
 # tar -cfz archive.tar.gz file

상당히 다릅니다. 첫 번째 예는 'archive.tar.gz'를 옵션 'f'의 값으로 사용하고 'z'옵션을 인식합니다. 그러나 두 번째 예는 옵션 'f'의 값으로 'z'를 사용합니다. 아마도 의도하지 않은 것입니다.

이전 옵션은 이전 버전의 tar와의 호환성을 위해 유지됩니다.

'-'가있는 명령은

tar -czf archive.tar.gz file
tar -cf archive.tar.gz -z file
tar cf archive.tar.gz -z file

이것이 귀하의 예제가 "-"가 아닌 "-"없이 작동하는 이유입니다.


3
wtf 된의의
유니의
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.