CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
    • 1.파일과 디렉터리 명령: 리눅스 파일 시스템을 손끝으로 다루기
    • 2.텍스트 처리: 유닉스의 진짜 힘, 파이프라인으로 데이터를 다듬다
    • 3.vi/vim 정밀 정복: 손을 떼지 않고 편집하는 에디터의 미학
    • 4.압축과 아카이브, 그리고 도움말: 파일을 묶고 줄이고, 스스로 배우는 법
    • 5.Week 2 종합 복습: 명령행에서 살아남기 위한 모든 것
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
  • Week 14
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 1급/Week 2/Day 5

기준: 리눅스마스터 1급 출제 기준·오류 제보

리눅스마스터 1급· AssociateWeek 2 · Day 5읽기 약 8분
핵심 정리
  • 이번 주 도구는 따로 노는 지식이 아니다. find → grep → awk → tar → vi가 한 흐름으로 맞물린다.
  • 파일: cp -r(디렉터리 복사 필수), rmdir은 빈 디렉터리만, find -exec의 {}와 \;.
  • 텍스트: grep(행 필터) · sed s///g(치환) · awk $1(필드) · sort|uniq -c(빈도).
  • vi: 세 모드, i/a/o 진입, dd·yy·p, :%s/old/new/g, :wq와 :x의 차이.
  • 압축: tar czvf(만들기)·xzvf(풀기)·tzvf(보기). 도움말은 man·info·whatis·apropos.

Day 5 - Week 2 종합 복습: 명령행에서 살아남기 위한 모든 것

Day 1 핵심 정리: 파일과 디렉터리

명령행 사고방식. 명령행의 핵심은 "작은 도구를 파이프로 연결한다"는 것이다. 하나의 거대한 프로그램이 모든 것을 처리하는 대신, find, grep, sort, awk 같은 단순한 도구들을 |로 이어 복잡한 작업을 조립한다. 이번 주에 배운 명령들은 모두 이 조립의 부품이다.

  • 경로에는 루트(/)부터 시작하는 절대 경로와 현재 위치 기준의 상대 경로가 있다.
  • 상대 경로의 핵심 기호는 .(현재), ..(상위), ~(홈)이다.
명령역할자주 쓰는 옵션
pwd현재 위치 출력-P(실제 경로)
cd디렉터리 이동cd -(직전 위치)
ls목록 보기-l, -a, -h, -ltr
mkdir디렉터리 생성-p(중간 경로 생성)
rmdir빈 디렉터리 삭제-p
touch빈 파일/시간 갱신-t(시각 지정)
cp복사-r, -p, -i
mv이동/이름변경-i, -f
rm삭제-r, -f
find실시간 파일 검색-name, -type, -exec
locateDB 기반 검색-i, updatedb
which명령 경로 찾기-a

⚠️ 함정 모음: Day 1 디렉터리 복사는 cp -r이 필수(없으면 오류), rmdir은 빈 디렉터리만 삭제, gzip이 아니라 rm에는 휴지통이 없음, locate는 DB 기반이라 최신 파일을 못 찾을 수 있음. find의 -exec에서 {}는 파일명 치환, \;는 명령의 끝.

Day 2 핵심 정리: 텍스트 처리

텍스트 처리의 출발점은 표준 스트림과 파이프(|)이다. 한 명령의 출력을 다음 명령의 입력으로 연결한다.

명령역할핵심 사용법
cat전체 출력/이어붙이기-n(행 번호)
head/tail처음/끝 일부-n, tail -f
grep패턴 검색-i, -v, -r, -n, -c
sed스트림 편집s/old/new/g, -i
awk필드 처리{print $1}, -F, NR, NF
sort정렬-n, -r, -k, -u
uniq중복 제거-c, -d (sort와 짝)
cut열 추출-d, -f, -c
tr문자 변환-d, -s
wc개수 세기-l, -w, -c
  • 정규표현식 핵심 메타문자: .(아무 한 글자), *(앞 문자 0회 이상), ^(행 시작), $(행 끝), [](문자 집합).
  • 확장 정규식(ERE, grep -E)에서는 +, ?, |, ()가 백슬래시 없이 동작한다.

자주 쓰는 파이프라인 패턴. "에러 개수 세기"는 grep error log | wc -l, "고유 IP 빈도"는 awk '{print $1}' log | sort | uniq -c | sort -nr, "특정 사용자 정보"는 grep user /etc/passwd | cut -d: -f1,6. 이런 조합이 손에 익으면 로그 분석이 즐거워진다.

Day 3 핵심 정리: vi/vim

vi의 세 가지 모드는 다음과 같다. 명령 모드(시작 기본, 이동/편집), 입력 모드(i/a/o로 진입, 텍스트 입력), 마지막 행 모드(:로 진입, 저장/종료/치환).

작업명령
입력 시작i(앞), a(뒤), o(아래 행), O(위 행)
이동h j k l, w/b, 0/$, gg/G
삭제x(글자), dd(행), dw(단어)
복사/붙여넣기yy(복사), p/P(붙여넣기)
취소/반복u(취소), Ctrl+r(재실행), .(반복)
검색/패턴, ?패턴, n/N
저장/종료:w, :q, :q!, :wq, :x, ZZ
치환:%s/old/new/g

⚠️ 함정 모음: Day 3 a는 커서 뒤 입력(i는 앞), o는 아래 행/O는 위 행, :wq는 항상 저장/:x와 ZZ는 변경 시에만 저장, :%s의 %는 파일 전체. nano의 저장은 Ctrl+O, 종료는 Ctrl+X.

Day 4 핵심 정리: 압축과 도움말

아카이브(묶기)와 압축(크기 줄이기)은 다른 작업이다. tar는 묶고, gzip/bzip2/xz는 압축한다.

작업명령
묶고 gzip 압축tar czvf x.tar.gz dir/
gzip 아카이브 풀기tar xzvf x.tar.gz
내용 목록 보기tar tzvf x.tar.gz
특정 위치에 풀기tar xvf x.tar -C /tmp
단일 파일 압축gzip file(원본 삭제), -k로 보존
zip 압축zip -r x.zip dir/
  • tar 옵션: c(생성), x(풀기), t(목록), v(자세히), f(파일명), z(gzip), j(bzip2), J(xz).
  • 압축률은 xz > bzip2 > gzip 순이다.
  • 도움말은 man(섹션별 매뉴얼), info(상세 문서), whatis(한 줄 요약, man -f), apropos(키워드 검색, man -k)로 활용한다.
  • 매뉴얼 섹션 1은 명령, 5는 파일 형식, 8은 시스템 관리이다.

한 주를 관통하는 유닉스 철학. 이번 주 도구들은 모두 켄 톰슨과 데니스 리치가 1970년대에 세운 유닉스 철학을 따른다. "하나의 일을 잘하라", "프로그램이 함께 동작하게 하라", "텍스트 스트림을 다뤄라". grep도 sort도 tar도 각자 한 가지만 잘하고, 파이프로 협력한다. 이 설계가 50년이 지나도 유효한 이유이다.

직접 쳐보기: 종합 실습

배운 모든 것을 한 흐름으로 엮은 종합 실습이다.

# 1. 작업 공간과 로그 데이터 생성
mkdir -p ~/review/logs
cd ~/review
cat > logs/access.log << 'EOF'
192.168.0.1 GET /index 200
192.168.0.2 POST /login 401
192.168.0.1 GET /about 200
192.168.0.3 GET /index 500
192.168.0.2 GET /index 200
EOF
 
# 2. find로 로그 찾기
find . -name "*.log" -type f
 
# 3. grep + wc로 에러(401, 500) 세기
grep -E "401|500" logs/access.log | wc -l
 
# 4. awk + sort + uniq로 IP 접속 빈도 순위
awk '{print $1}' logs/access.log | sort | uniq -c | sort -nr
 
# 5. sed로 상태코드 200을 OK로 표시
sed 's/ 200$/ OK/' logs/access.log
 
# 6. tar로 백업하고 확인
tar czvf backup.tar.gz logs/
tar tzvf backup.tar.gz
 
# 7. 도움말로 확인
whatis awk
 
# 8. 정리
cd ~
rm -rf ~/review
  • 이 실습을 막힘없이 해낼 수 있다면 Week 2의 목표는 충분히 달성한 것이다.
  • 각 단계에서 옵션을 바꿔 실험해 보면 이해가 더 깊어진다.

📖 용어

  • 절대 경로 / 상대 경로 : /에서 시작하는 완전한 주소와, 현재 위치를 기준으로 한 주소.
  • cp -r : 디렉터리를 통째로 복사할 때 반드시 필요한 재귀 옵션.
  • find -exec : 찾은 파일마다 명령을 실행하는 옵션. {}가 파일명으로 치환되고 \;로 끝맺는다.
  • locate : 미리 만들어 둔 데이터베이스를 뒤지는 빠른 검색. 최신 파일은 못 찾을 수 있다.
  • 파이프(|) : 앞 명령의 출력을 뒤 명령의 입력으로 잇는 연결자. 명령행 사고방식의 핵심.
  • sort | uniq -c : 정렬 후 중복을 세는 조합. 로그 빈도 분석의 기본기다.
  • ERE(확장 정규식) : grep -E가 쓰는 문법. + ? | ( )를 백슬래시 없이 쓸 수 있다.
  • 명령 모드 / 입력 모드 / 마지막 행 모드 : vi의 세 가지 상태. 각각 편집·입력·저장종료를 담당한다.
  • :%s/old/new/g : vi에서 파일 전체를 치환하는 명령. %가 "전체 행"을 뜻한다.
  • 아카이브 vs 압축 : 여럿을 하나로 묶는 일(tar)과 크기를 줄이는 일(gzip 등)은 서로 다르다.
  • man 섹션 : 매뉴얼 분류 번호. 1=명령, 5=파일 형식, 8=시스템 관리 명령.
  • apropos : 기능 키워드로 명령 이름을 거꾸로 찾는 도구. man -k와 같다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

현재 디렉터리 이하에서 .conf로 끝나는 일반 파일만 찾는 명령은?

문제 2

sed -i 's/dev/prod/g' config.txt의 동작으로 옳은 것은?

문제 3

awk -F: '{print $1}' /etc/passwd의 결과는?

문제 4

vi에서 현재 커서가 있는 행 아래에 새 행을 만들며 입력 모드로 진입하는 키는?

문제 5

vi에서 변경된 경우에만 저장하고 종료하여, 변경이 없으면 타임스탬프를 보존하는 명령은?

문제 6

디렉터리 data를 bzip2 압축 형식의 아카이브로 묶는 명령은?

문제 7

gzip -k report.txt를 실행했을 때의 결과로 옳은 것은?

문제 8

"network"라는 키워드를 매뉴얼 설명에서 검색해 관련 명령을 찾는 것과 동일한 명령 쌍은?

문제 8

로그 파일에서 IP별 접속 횟수를 많은 순으로 정렬해 보려고 한다. 가장 적절한 파이프라인은?

문제 9

다음 중 cp 명령으로 디렉터리 전체를 권한과 타임스탬프까지 보존하며 복사하는 옵션 조합으로 가장 적절한 것은?

문제 10

grep -E "^[0-9]+$" data.txt가 찾아내는 행은?

문제 11

tar로 만든 backup.tar.gz의 내용을 풀지 않고 목록만 확인하는 명령은?

이전압축과 아카이브, 그리고 도움말: 파일을 묶고 줄이고, 스스로 배우는 법Week 2 · Day 4다음 셸의 정체: 명령을 해석하는 프로그램과 변수의 세계Week 3 · Day 1

참고 공식 자료

  • 리눅스마스터 1급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • Day 1 핵심 정리: 파일과 디렉터리
  • Day 2 핵심 정리: 텍스트 처리
  • Day 3 핵심 정리: vi/vim
  • Day 4 핵심 정리: 압축과 도움말
  • 직접 쳐보기: 종합 실습
  • 용어
  • 연습 문제