왜 옵션 플래그를 tar에 전달하기 위해 superflous 대시 (-)를 사용합니까? 작성하려면 tar와

디렉토리에 tar 파일의 작성하려면 tar와 명령을 compress, verbose그리고 file옵션에 따라서 입력 할 수 있습니다 :

$ tar -cvf my.tar my_directory/

그러나이 방법으로도 작동합니다.

 $ tar cvf my.tar my_directory/

즉, 옵션 앞에 대시 (-)가없는 것입니다. 왜 옵션 목록에 대시 (-)를 전달 하시겠습니까?



답변

UNIX 응용 프로그램에서 역사적으로 사용 된 옵션에는 여러 가지 패턴이 있습니다. tar 와 같은 몇 가지 오래된 것들은 위치 체계를 사용합니다.

명령 옵션 인수

예를 들어 tar는

tar * something * f “파일에서 작동 된 파일” * “조작 할 파일 경로”*

혼동을 피하기위한 첫 번째 시도에서 tar 와 old flags-arguments 스타일을 가진 몇 가지 다른 프로그램에서는 대시로 플래그를 구분할 수 있었지만 대부분의 노인들은 단순히 무시했습니다.

다른 일부 명령에는 플래그, 등호, 경로 이름, 인수 및 배 트리의 파트 리지를 모두 사용하는 dd (1) 과 같이보다 복잡한 명령 줄 구문이 있습니다.

BSD 및 이후 버전의 유닉스에서는 이것이 ‘-‘로 표시된 단일 문자 플래그로 다소 수렴되었지만 몇 가지 문제가 발생하기 시작했습니다.

  • 깃발은 기억하기 어려울 수 있습니다
  • 때로는 실제로 ‘-‘와 함께 이름을 사용하고 싶었습니다.
  • 특히 GNU 도구의 경우 가능한 많은 플래그로 인해 제한이 시작되었습니다. 따라서 GNU 도구는와 같은 GNU 긴 옵션을 추가했습니다 --output.

그런 다음 Sun은 여분의 ‘-‘가 중복되고 단일 ‘-‘로 긴 스타일 플래그를 사용하기 시작했다고 결정했습니다.

그리고 그것이 지금 엉망이 된 방법입니다.


답변

tar -c -f foo -v -B file1 file2 file3명령 행 끝에 옵션과 매개 변수 또는 파일 이름을 구별하기 위해 대시가 필요한 표준 유닉스 방식으로 tar 옵션을 제공 할 수 있습니다 . 또는 첫 번째 인수에 모든 옵션을 함께 넣을 수 있습니다.이 경우 대시는 선택 사항입니다.

그런 다음 psSysV-ish 옵션을 사용하는 경우 대시를 사용하고 BSD-ish 옵션을 사용하는 경우 대시를 사용하지 않으면 더 혼란 스럽습니다.

그리고 이야기조차 할 수 없습니다 find.


답변

대시는 옵션 매개 변수 이름과 값을 명확하게하기 위해 사용됩니다. 나는 그것이 표준 관습에 가깝다고 생각합니다.


답변

유닉스 명령 행 옵션을 사용하기 위해 최대 4 개의 규칙이 있습니다 :

  1. -o -p -t (각 옵션 앞에 대시)
  2. -opt (옵션 세트 앞에 대시)
  3. 옵트 (옵션 세트 이전에는 대시 없음)
  4. –long-option (옵션 이름 앞에 이중 대시)

예를 들면 다음과 같습니다.

$ tar -x -v -z -f package.tar.gz
$ tar -xvzf package.tar.gz
$ tar xvzf package.tar.gz
$ tar --extract -verbose -gzip -file package.tar.gz


답변

선행 빼기 / 대시 기호 (-)를 사용하면 옵션을 정확한 순서로 유지해야합니다. 빼기 순서없이 옵션을 변경할 수 있습니다.

예를 들면 다음과 같습니다.

# tar -xvf yourfile.tar
# tar vxf yourfile.tar


답변