[server] 쉘 명령에서 단일 대시 및 이중 대시 플래그 사이의 차이점은 무엇입니까?

나는 셸에서 일하는 것이 처음이며 이러한 명령의 사용법은 임의적입니다. 하나의 플래그에 단일 대시가 있고 다른 플래그에 이중 대시가있는 이유가 있습니까?



답변

하나의 하이픈 뒤에 여러 개의 단일 문자 플래그가 올 수 있습니다. 이중 하이픈은 단일 다중 문자 옵션 앞에 붙습니다.

이 예제를 고려하십시오.

tar -czf

이 예에서는 -czf3 개의 단일 문자 플래그를 지정 c, zf.

이제 다른 예를 보자.

tar --exclude

이 경우 --exclude라는 단일 다중 문자 옵션을 지정 exclude합니다. 이중 하이픈 그 보장, 명령 줄 인수들의 차이를 tar그와 같은 해석 exclude보다는 조합 e, x, c, l, u, d,와 e.


답변

그것은 모두 프로그램에 달려 있습니다. 일반적으로 “-“는 ‘짧은’옵션 (한 글자, -h)에 사용되고 “-“는 “long”(er) 옵션 (–help)에 사용됩니다.

일반적으로 짧은 옵션을 결합 할 수 있습니다 ( “-h -a”는 “-ha”와 동일)

유닉스 계열 시스템에서 ASCII 하이픈-마이너스는 일반적으로 옵션을 지정하는 데 사용됩니다. 문자 뒤에 보통 하나 이상의 문자가옵니다. 문자가없는 단일 하이픈 빼기 인수는 일반적으로 프로그램이 표준 입력에서 오는 데이터를 처리하거나 표준 출력으로 데이터를 보내도록 지정합니다. 일부 프로그램에서는보다 설명적인 옵션 이름이 사용되는 “긴 옵션”을 지정하기 위해 두 개의 하이픈 (-) 문자 (-)가 사용됩니다. 이것은 GNU 소프트웨어의 일반적인 기능입니다.

출처


답변

정말 컨벤션입니다. 그러나 파서는 프로그램에 전달 된 옵션에 대해보다 효율적으로 알 수 있습니다. 또한 프로그램의 인수를 구문 분석하는 데 도움이 getopt(3)되는 비표준 과 같은 이러한 명령을 구문 분석하는 데 도움이되는 깔끔한 유틸리티가 있습니다 getopt_long(3).

다른 답변 에서처럼 여러 개의 짧은 옵션을 결합 할 수 있기 때문에 tar -xzf myfile.tar.gz좋습니다.

에 대해 “리사”인수가 있었다면 ls, 아마 입력 할 다른 의미가있는 것 ls -lisa이상을 ls --lisa. 전자는있다 l, i, s, 및 a매개 변수가 아닌 단어.

실제로, ls -l -i -s -a와 정확히 동일한 의미로 쓸 수는 ls -lisa있지만 프로그램에 따라 다릅니다.

이 규칙을 따르지 않는 프로그램도 있습니다. 특히 내 시야에, dd그리고 gcc.


답변

단일 대시가있는 짧은 옵션과 이중 대시가있는 긴 옵션

짧은 옵션은 단일 인수로 결합 될 수 있습니다.

for example: ls -lrt #instead of ls -l -r -t

단일 대시로 긴 옵션을 허용하면 모호성이 발생합니다. 이를 해결하기 위해 긴 옵션에는 이중 대시를 사용합니다.


답변