나는 셸에서 일하는 것이 처음이며 이러한 명령의 사용법은 임의적입니다. 하나의 플래그에 단일 대시가 있고 다른 플래그에 이중 대시가있는 이유가 있습니까?
답변
하나의 하이픈 뒤에 여러 개의 단일 문자 플래그가 올 수 있습니다. 이중 하이픈은 단일 다중 문자 옵션 앞에 붙습니다.
이 예제를 고려하십시오.
tar -czf
이 예에서는 -czf
3 개의 단일 문자 플래그를 지정 c
, z
및 f
.
이제 다른 예를 보자.
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
단일 대시로 긴 옵션을 허용하면 모호성이 발생합니다. 이를 해결하기 위해 긴 옵션에는 이중 대시를 사용합니다.