쉘 스크립트 출제 유형 분석
리눅스마스터 2급 시험을 처음 접하면 어디서부터 준비해야 할지 막막합니다. 이 절에서는 시험 구조를 먼저 파악하고, 쉘 스크립트와 연결되는 출제 영역을 정리합니다.
시험 구성 개요
리눅스마스터 2급은 한국정보통신진흥협회(KAIT)가 주관하는 국가공인 자격증입니다. 시험은 필기와 실기로 나뉩니다.
필기 시험.
- 1과목: 리눅스 운영 및 관리 (50문항)
- 2과목: 리눅스 활용 (50문항)
- 합격 기준: 과목별 40점 이상, 평균 60점 이상
- 문제 형식: 4지선다 객관식
실기 시험.
- 단답형 + 서술형 혼합
- 명령어 작성, 설정 파일 내용, 출력 결과 예측 등
- 합격 기준: 60점 이상
쉘 스크립트 관련 출제 비중
필기 시험 기준으로 쉘 스크립트와 직결되는 영역을 정리합니다.
| 출제 영역 | 예상 비중 | 관련 PART |
|---|---|---|
| 변수와 특수변수 | 약 8% | PART 03 |
| 조건문/반복문 문법 | 약 10% | PART 04 |
| 리다이렉션과 파이프 | 약 8% | PART 02 |
| 정규표현식, grep/sed/awk | 약 12% | PART 06, 07 |
| 파일 권한과 chmod | 약 10% | PART 02 |
| 프로세스 관리 | 약 10% | PART 08 |
| 네트워크 명령어 | 약 8% | 이 PART |
| 기타 시스템 관리 | 나머지 | — |
출제 비중은 회차마다 다소 차이가 있지만 위 영역은 꾸준히 출제됩니다.
자주 출제되는 유형별 정리
변수와 특수변수
#!/bin/bash# 파일: 특수변수 예시echo "스크립트명: $0"echo "인수 개수: $#"echo "모든 인수: $@"echo "직전 종료코드: $?"echo "현재 PID: $$"
시험에서는 다음 특수변수를 자주 묻습니다.
| 변수 | 의미 |
|---|---|
$0 |
스크립트 파일명 |
$1 ~ $9 |
위치 매개변수 |
$# |
전달된 인수의 개수 |
$@ |
모든 인수 (각각 따로) |
$* |
모든 인수 (하나의 문자열) |
$? |
직전 명령의 종료 코드 |
$$ |
현재 쉘 프로세스 PID |
$! |
마지막 백그라운드 프로세스 PID |
조건문과 반복문 문법
if 문의 조건 표현식에서 자주 출제되는 옵션입니다.
# 파일 존재 여부 확인if [ -f /etc/passwd ]; then echo "파일 존재"fi# 디렉토리 확인if [ -d /tmp ]; then echo "디렉토리 존재"fi# 문자열 비교if [ "$VAR" = "hello" ]; then echo "일치"fi# 숫자 비교if [ "$NUM" -gt 10 ]; then echo "10보다 큼"fi
| 옵션 | 의미 |
|---|---|
-f |
일반 파일 |
-d |
디렉토리 |
-e |
존재 여부 (모든 파일 유형) |
-r / -w / -x |
읽기/쓰기/실행 권한 |
-z |
문자열 길이가 0 |
-n |
문자열 길이가 0이 아님 |
-eq / -ne |
정수 같음/다름 |
-lt / -gt |
정수 작음/큼 |
-le / -ge |
정수 작거나 같음/크거나 같음 |
리다이렉션과 파이프
# 표준 출력을 파일로ls > list.txt# 표준 오류를 파일로ls nofile 2> error.txt# 표준 출력과 오류를 같은 파일로ls nofile > all.txt 2>&1# 파이프로 연결cat /etc/passwd | grep root | cut -d: -f1
시험에서 2>&1의 의미를 묻거나, 출력 결과를 예측하는 문제가 자주 나옵니다.
정규표현식과 grep/sed/awk
# 기본 정규표현식grep "^root" /etc/passwd # root로 시작하는 줄grep "bash$" /etc/passwd # bash로 끝나는 줄grep "ro*t" /etc/passwd # r 다음에 o가 0번 이상# 확장 정규표현식 (grep -E 또는 egrep)grep -E "root|daemon" /etc/passwd# sed 치환sed 's/old/new/g' file.txt# awk 필드 처리awk -F: '{print $1}' /etc/passwd
자주 출제되는 함정 패턴 5가지
함정 1: $@와 $*의 차이.
큰따옴표로 감쌀 때 동작이 달라집니다. "$@"는 각 인수를 별도 단어로, "$*"는 모든 인수를 하나의 단어로 처리합니다.
함정 2: [ 와 [[ 의 차이.
[는 POSIX 표준 명령어이고, [[는 Bash 확장입니다. [[ ]] 안에서는 &&, ||를 사용할 수 있고, 변수를 따옴표 없이 써도 단어 분리가 일어나지 않습니다.
함정 3: 2>&1 순서.
> file 2>&1과 2>&1 > file은 결과가 다릅니다. 앞의 경우 표준 출력과 오류가 모두 file에 저장되지만, 뒤의 경우 표준 오류만 원래 표준 출력(터미널)으로 가고 표준 출력만 file에 저장됩니다.
함정 4: for 루프의 세미콜론 위치.
for i in 1 2 3; do echo $i; done # 올바른 형식
do 앞에 반드시 세미콜론 또는 줄바꿈이 있어야 합니다.
함정 5: case 문의 패턴 종결자.
각 패턴 블록은 ;;으로 끝납니다. )는 패턴 뒤에, ;;는 명령 뒤에 옵니다.
case "$VAR" in yes|YES) echo "긍정" ;; no|NO) echo "부정" ;; *) echo "기타" ;;esac
학습 전략 — 이 교재와의 연계
이 교재의 PART별 학습 내용이 시험 영역과 어떻게 연결되는지 정리합니다.
| 시험 영역 | 학습 PART | 핵심 내용 |
|---|---|---|
| 변수, 특수변수 | PART 03 | 변수 선언, 산술 연산, 특수변수 |
| 조건문/반복문 | PART 04 | if, case, for, while, until |
| 함수와 배열 | PART 05 | 함수 정의, 반환값, 배열 처리 |
| 정규표현식, grep | PART 06 | BRE, ERE, grep 옵션 |
| sed와 awk | PART 07 | 치환, 필드 처리, 패턴 매칭 |
| 프로세스, 시그널 | PART 08 | ps, kill, trap, 백그라운드 |
| 파일 권한 | PART 02 | chmod, chown, 특수 권한 |
| 네트워크 | 이 PART 04절 | ifconfig, netstat, 방화벽 |
시험을 앞두고 있다면 각 PART를 복습하면서 이 장의 예제 문제를 병행하는 방식을 권장합니다. 다음 절부터는 출제 빈도가 높은 영역을 유형별로 묶어 예제 문제와 함께 풀어봅니다.