명령행(command-line)이란, 리눅스 시스템에서 프롬프트가 나타나고 커서가 사용자가 명령을 입력하는 행을 말한다.
명령행 인자(Command Line Arguments, CLA)란, 사용자가 명령을 실행할 때 해당 명령(실행파일명)과 함께 지정하는 인자를 말한다.
명령행 인자(CLA)의 전달
CLA는 자동으로 프로그램의 main()함수에 전달된다.
int main(int argc, char *argv[]){
...
}
main() 함수에서 CLA를 전달받으려면 위와 같이 정의해야 한다.
옵션처리 : getopt()
getopt() 함수는 argv에 optstring에 지정된 옵션과 동일한 옵션 문자가 있으면 해당 문자를 리턴한다.
POSIX에서 정의한 명령에 대한 기본 규칙(Basic Utility Syntax Guideline)을 준수해서 명령행 인자(CLA)를 입력해야, getopt() 함수로 옵션을 처리할 수 있다.
아래는 POSIX에서 정의한 명령에 대한 기본 규칙(Basic Utility Syntax Guideline) 입니다.
Guideline 1:
유틸리티 이름은 2~9자 사이여야 합니다.
Guideline 2:
유틸리티 이름에는 소문자(하위 문자 분류)와 이식 가능한 문자 집합의 숫자만 포함되어야 합니다.
Guideline 3:
각 옵션 이름은 이식 가능한 문자 집합에 있는 단일 영숫자 문자(숫자 문자 분류)여야 합니다.
-W(capital-W) 옵션은 공급업체 옵션용으로 예약되어 있습니다.
여러 자리 옵션은 허용되지 않습니다.
Guideline 4:
모든 옵션 앞에는 '-' 구분 기호 문자가 와야 합니다.
Guideline 5:
옵션 인수가 없는 하나 이상의 옵션과 옵션 인수를 취하는 최대 하나의 옵션이 하나의 '-' 구분 기호 뒤에 그룹화되면허용되어야 합니다.
Guideline 6:
각 옵션과 옵션 인수는 유틸리티 인수 구문, 항목 (2)에 명시된 경우를 제외하고 별도의 인수여야 합니다.
Guideline 7:
옵션 인수는 선택사항이 아니어야 합니다.
Guideline 8:
단일 옵션 뒤에 여러 옵션 인수가 지정되는 경우
해당 인수 내의 <쉼표> 문자 또는 해당 인수 내의 <공백> 문자를 사용하여 단일 인수로 표시해야 합니다.
Guideline 9:
모든 옵션은 명령줄에서 피연산자 앞에 와야 합니다.
Guideline 10:
option-argument가 아닌 첫 번째 -- 인수는 옵션의 끝을 나타내는 구분 기호로 허용되어야 합니다.
다음 인수는 '-' 문자로 시작하더라도 피연산자로 처리되어야 합니다.
Guideline 11:
옵션이 상호 배타적이라고 문서화되어 있지 않고 해당 옵션이 이전의 호환되지 않는 옵션을 재정의하도록 문서화되어 있지
않는 한 서로 다른 옵션의 순서는 중요하지 않습니다.
옵션-인수를 갖는 옵션이 반복되는 경우 옵션과 옵션-인수 조합은 명령줄에 지정된 순서대로 해석되어야 합니다.
Guideline 12:
피연산자의 순서가 중요할 수 있으며 위치 관련 해석은 유틸리티별로 결정되어야 합니다.
Guideline 13:
피연산자를 사용하여 읽기 또는 쓰기용으로 열 파일을 나타내는 유틸리티의 경우,
'-' 피연산자는 표준 입력(또는 출력 파일이 지정되고 있다는 것이 문맥상 분명할 경우 표준 출력) 또는 -라는 파일명.
Guideline 14:
인수가 지침 3~10에 따라 옵션으로 식별되거나
하나의 '-' 구분 기호 뒤에 옵션 인수가 없는 옵션 그룹으로 식별될 수 있는 경우
인수는 그렇게 처리되어야 합니다.
'Fundamental of Software Develop > : : Linux System Programming' 카테고리의 다른 글
디렉터리 관리하기 (위치 검색, 이름 변경, 이동) (0) | 2023.11.09 |
---|---|
디렉터리 생성과 삭제 : mkdir(), rmdir() (0) | 2023.11.09 |
동적 메모리 할당 (0) | 2023.11.09 |
오류 처리 함수 : perror(), strerror() (0) | 2023.11.09 |
Linux : Build System (Makefile, CMake) (0) | 2023.11.09 |