tar cvf 또는 tar -cvf?


24

옵션에 대해 '-'없이 tar를 사용하는 방법을 배웠지 tar cvfz dir.tar.gz Directory/만 최근에 약간 다른 tar -czvf구문 에 도달 했습니다 (이 경우 'f'가 마지막 옵션이어야합니다).

둘 다 리눅스와 Mac OS에서 작동합니다. '-'없이 ou와 함께 권장되는 구문이 있습니까?



이유 -f는 인수를 받아서 그 인수가 옵션을 만지지 제공 될 수 있기 때문에 마지막 옵션이어야이다. 및 파일이 포함 된 tar -cvfz dir.tar.gz Directory이름의 아카이브를 작성하는 것을 의미합니다 . zdir.tar.gzDirectory
JoL

답변:


27

tar옵션 구문이 표준화되지 않았던 시절의 고대 명령 중 하나입니다. 모든 유용한 호출은 tar파일 이름을 제공하기 전에 조작을 지정해야 하기 때문에 대부분의 tar구현에서는 첫 번째 인수가로 시작하지 않더라도 옵션으로 해석합니다 -. 대부분의 현재 구현은 -; 내가 아는 유일한 예외는 Minix 입니다.

이전 버전의 POSIX 및 Single Unix에는 이전에 작업 지정자가 tar없는 명령이 포함되었습니다 -. Single Unix v2에는 전통적인 아카이버 cpiotar가 있었지만 기존 구현이 너무 다르기 때문에 표준화 할 수있는 플래그가 거의 없었기 때문에 표준에서는 새로운 명령을 도입했습니다 pax. 이는 Single Unix v3 이후의 유일한 표준 아카이버입니다 . 당신은 표준 준수, 사용을하지 않으 pax하지만, 많은 리눅스 배포판들이 기본 설치에 포함하지 않도록 조심하고, 더 거기 pax미닉스 . 실제로 이식성을 원하면을 사용하십시오 tar cf filename.tar.



1
또한 Linux 배포판에가 포함되어 pax있으면 일반적으로 버그로 인해 피해야하는 최악의 pax 구현 (GNU pax)이 제공됩니다.
schily

또한 ps명령의 동작이 동일 -하므로 옵션에 대해를 생략해도 됩니다.
perror

1
@perror 잘못되었습니다. 많은 버전 ps에서는를 생략 할 수 없습니다 -. Linux 버전에는을 포함하거나 포함하지 않는 옵션이 -있지만 대부분 의미가 다릅니다 (BSD와 System V 호환성).
Gilles 'SO- 악마 중지'

1
대부분의 경우, 나는 오직 ps aux... 만 사용한다는 것은 사실입니다 . 따라서 (일부) 잘못되었을 수도 있습니다. 죄송합니다.
perror

13

나는 공룡 일지 모르지만 습관적으로 "-cvf"대신 "cvf"를 사용하는 것이 더 이식성이 좋다고 생각합니다. 나는 대부분의 리눅스 배포판은 GNU 타르를 사용 상상하고, 나는 * BSD의도 할 추측 것입니다,하지만 당신은 여전히하는 데 사용 된 시스템 V 타르, 사용 독점 유닉스 찾을 필요 를 사용하지 않는 당신을 - 옵션에서 '을' .

"-cvf"(또는 "-xf"등)를 사용하지 않으며 최첨단 아치 리눅스에서도 문제가 없습니다.

그리고 부수적으로, '-'를 사용하거나 사용하지 않고 Sun 표준 "jar"명령 옵션을 사용할 수 있다고 생각합니다.


tar (정보를 지정하는 세 가지 스타일에 대해 매우 분명한) 정보 페이지에 이전 옵션이 호환성을 위해서만 유지되고 이전에 대응하지 않는 옵션이 많이 있다고 말하더라도 귀하의 답변에 동의합니다.
David Costa

1
AT & T UNIX의 tar는-를 갖지 않도록 작성되었지만-를 승인하고 건너 뜁니다. tar를 호출 할 수있는 유일한 방법은-없이 호출하는 것입니다. 만약 "tar"구현이 없으면 "tar"구현을 찾으면 이것은 tar가 아닙니다.
schily

3

UNIX에는 현재 옵션 표준을 따르지 않는 프로그램이 거의 없습니다.

하나는 dd이지만 dd는 IBM 메인 프레임 프로그램 DDR(디스크 덤프 및 복원) 에서 파생되었습니다 .

하나는 ar다른 하나는 입니다 tar. 내 정보에서 tar는 ar과 비슷하기를 원했습니다.

모든 tar 구현은-없이 작동하며 유용한 구현에는-가 필요하지 않습니다. 따라서 이식 가능한 스크립트를 작성하려면 SUSv2 표준을 확인하고 SUSv2와 호환되는 명령 줄 만 사용하십시오.

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