본문 바로가기
C.W.K.
Stream
Lesson 05 of 10 · published

명령, 인자, 플래그

~15 min · command, argument, flag, getopt

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

모든 명령줄이 따르는 문법

셸 명령은 대체로 command [flags] [arguments]라는 모양을 따라. 명령은 실행할 프로그램이고, 플래그 또는 옵션은 그 동작을 바꾸며, 인자는 동작의 대상을 가리켜. 이 세 역할을 구분할 수 있으면 처음 보는 도구의 --help도 훨씬 쉽게 읽혀.

짧은 플래그와 긴 플래그

POSIX 계열 도구는 -l, -a, -h처럼 한 글자 플래그를 많이 써. GNU 계열과 현대 도구는 --long-format, --all, --help 같은 긴 플래그도 제공해. 짧은 플래그는 ls -lah처럼 합칠 수 있고, 이는 ls -l -a -h와 같아. 긴 플래그는 서로 합칠 수 없지만 이름만 읽어도 뜻을 짐작하기 쉽다는 장점이 있어.

값을 받는 플래그

어떤 플래그는 뒤에 값을 요구해. -o output.txt, --output output.txt, --output=output.txt가 대표적인 세 형식이야. 공백을 둔 형식은 고전적인 POSIX 방식이고 등호를 쓴 형식은 GNU 도구에서 흔해. 해당 도구가 지원하는 형식을 도움말에서 확인해야 해. BSD 계열의 짧은 플래그 가운데에는 -ofile.txt처럼 값과 붙여 쓰는 것도 많아.

-- 구분자의 힘

대시로 시작하는 파일 이름을 명령에 그대로 넘기면 옵션으로 해석될 수 있어. --는 그 뒤에 오는 모든 토큰을 위치 인자로 다루라는 경계야. 따라서 rm -- -ohnoes.txt는 알 수 없는 -o 옵션이라는 오류를 내는 대신 실제로 이름이 -ohnoes.txt인 파일을 대상으로 삼아.

--help의 사용법 줄 읽기

USAGE: tar [OPTION]... [FILE]...처럼 표시되는 사용법 줄은 전체 문법을 압축해 보여 줘. 대괄호는 선택 항목, 줄임표는 반복 가능, 세로 막대는 여러 선택지 가운데 하나를 뜻해. 이 표기법을 읽고 나면 아래의 긴 옵션 목록은 각 자리에 넣을 수 있는 값을 찾는 사전처럼 사용할 수 있어.

Code

같은 플래그, 다른 표현·bash
# 짧은 옵션을 붙여 쓰기
ls -lah ~
# 같은 뜻의 긴 옵션
ls --format=long --all --human-readable ~
# 짧은 옵션과 긴 옵션 함께 쓰기
ls -l --all -h ~
대시로 시작하는 파일명은 `--`로 보호·bash
touch -- -weird.txt
ls -- -weird.txt
rm -- -weird.txt           # 안전하게 파일명으로 전달
# rm -weird.txt  # 옵션으로 해석되어 오류가 남

External links

Exercise

Linux에서는 ls --help | head -20을, macOS에서는 man ls를 열어 사용법 요약을 찾아. 이어서 ls -lah ~, ls -l -a -h ~, ls --all --long ~을 비교하되 현재 구현이 지원하지 않는 긴 옵션도 구분해. 마지막에는 touch -- -test.txt로 대시로 시작하는 파일을 만들고 rm -- -test.txt로 안전하게 지워.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.