모든 명령줄이 따르는 문법
셸 명령은 대체로 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]...처럼 표시되는 사용법 줄은 전체 문법을 압축해 보여 줘. 대괄호는 선택 항목, 줄임표는 반복 가능, 세로 막대는 여러 선택지 가운데 하나를 뜻해. 이 표기법을 읽고 나면 아래의 긴 옵션 목록은 각 자리에 넣을 수 있는 값을 찾는 사전처럼 사용할 수 있어.