CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
    • 1.vi 편집기의 세 가지 모드
    • 2.vi 검색·치환과 다른 편집기
    • 3.프로세스의 개념과 유형
    • 4.프로세스 명령과 작업 예약
    • 5.Week 6 종합 복습: 에디터와 프로세스
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

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

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

리눅스마스터 2급· AssociateWeek 6 · Day 2읽기 약 9분
핵심 정리
  • 검색은 /패턴(아래로) · ?패턴(위로), 다음 결과는 n, 반대 방향은 N 이다.
  • 치환의 기본형은 :s/찾을것/바꿀것/ 이다.
  • %는 파일 전체, g는 한 줄 안의 전부를 뜻한다. :%s/A/B/g 가 대표적인 형태다.
  • vi 설정은 ~/.vimrc(개인)와 /etc/vimrc(전역)에 저장한다.
  • nano는 화면 아래에 단축키가 보이고, emacs는 모드가 없다. vi만 모드를 가진다.

Day 2 - vi 검색·치환과 다른 편집기

검색

명령방향
/패턴커서에서 아래로 검색
?패턴커서에서 위로 검색
n같은 방향으로 다음 결과
N반대 방향으로 다음 결과
   /error        아래로 error 찾기
   ?error        위로 error 찾기
   n             다음 결과
   N             반대 방향 다음 결과
  • 검색은 명령 모드에서 시작한다. /를 누르면 화면 맨 아래에 입력줄이 나타난다.
  • n과 N의 관계가 시험 포인트다. N은 "위로"가 아니라 처음 검색한 방향의 반대다. ?로 검색했다면 N이 아래로 간다.
처음 검색한 방법n이 가는 쪽N이 가는 쪽
/패턴아래위
?패턴위아래

패턴에 쓰는 기호

검색찾는 것
/^rootroot로 시작하는 줄
/bash$bash로 끝나는 줄
/a.ca와 c 사이에 아무 한 글자 — abc, a1c
/\<the\>단어 the만 (there, other는 제외)
/\/etc\/hosts슬래시가 든 문자열 — \/로 적는다
  • / 자체가 "검색 시작" 기호이므로, 찾을 문자열에 슬래시가 있으면 역슬래시를 앞에 붙인다.
  • 끝까지 가도 검색은 멈추지 않는다. 처음으로 돌아가 계속 찾으며 맨 아랫줄에 search hit BOTTOM, continuing at TOP 이 나온다.
  • 못 찾으면 E486: Pattern not found: 패턴 이 나온다.
  • 대소문자를 가리지 않으려면 :set ic, 검색 강조를 잠시 끄려면 :noh (vim)를 쓴다.

치환

   :  %  s / 서울 / 부산 / g
   │  │  │    │      │     │
   │  │  │    │      │     └── g  그 줄의 모든 것
   │  │  │    │      └──────── 바꿀 문자열
   │  │  │    └─────────────── 찾을 문자열
   │  │  └──────────────────── s  substitute(치환)
   │  └─────────────────────── %  파일 전체
   └────────────────────────── :  ex 모드
명령범위
:s/A/B/커서가 있는 줄의 첫 번째 A만
:s/A/B/g커서가 있는 줄의 모든 A
:%s/A/B/g파일 전체의 모든 A
:1,10s/A/B/g1~10번째 줄의 모든 A
:%s/A/B/gc전체를 바꾸되 하나씩 확인(confirm)

%와 g를 구분한다. %는 어느 줄까지를, g는 한 줄 안에서 몇 개를 정한다. 둘 다 붙인 :%s/A/B/g 가 "파일 전체의 모든 것을 바꿔라"다.

바꾸기 전과 후

커서가 1번 줄에 있을 때, 같은 두 줄에 네 가지 명령을 각각 써 본 결과다.

   원본            1  banana apple          2  grape banana
 
   :s/a/A/         1  bAnana apple          2  grape banana      현재 줄의 첫 번째만
   :s/a/A/g        1  bAnAnA Apple          2  grape banana      현재 줄의 전부
   :%s/a/A/        1  bAnana apple          2  grApe banana      모든 줄의 첫 번째만
   :%s/a/A/g       1  bAnAnA Apple          2  grApe bAnAnA      모든 줄의 전부
  • 세 번째 줄이 함정이다. %만 붙이면 "줄마다 하나씩"만 바뀐다. 2번 줄의 banana가 그대로 남았다.

범위를 적는 방법

범위대상
(생략)커서가 있는 줄
%파일 전체 — 1,$ 와 같다
1,101~10번째 줄
.,$현재 줄부터 마지막 줄까지
10,$10번째 줄부터 마지막 줄까지
.,+5현재 줄과 그 아래 다섯 줄
  • 범위에서 .은 현재 줄, $는 마지막 줄이다. %는 1,$를 줄여 쓴 것이다.
  • 범위는 치환뿐 아니라 다른 ex 명령에도 쓴다 — :1,5d 는 1~5번째 줄 삭제다.

자주 쓰는 치환 꼴

명령하는 일
:%s/A//gA를 전부 삭제 (바꿀 것을 비운다)
:%s/^/#/모든 줄 앞에 # 붙이기 — 한꺼번에 주석 처리
:%s/^#//줄 맨 앞의 # 떼기
:%s/A/B/gi대소문자를 가리지 않고 바꾸기
:%s#/usr/local#/opt#g구분자를 #로 — 슬래시가 많은 경로를 바꿀 때
:g/패턴/d그 패턴이 있는 줄을 통째로 삭제
  • 구분자는 /가 아니어도 된다. s 바로 뒤에 온 글자가 구분자가 된다.
  • c를 붙이면 일치할 때마다 replace with B (y/n/a/q/l/^E/^Y)? 라고 묻는다. y 바꾸기 · n 건너뛰기 · a 나머지 전부 · q 그만이다.
  • 잘못 바꿨으면 명령 모드에서 u 로 되돌린다. 치환 한 번이 통째로 취소된다.
  • 맨 끝의 g(옵션)와 맨 앞의 :g(명령)는 다른 것이다. 옵션 g는 "줄 안의 전부", 명령 :g는 "패턴이 있는 줄마다 뒤의 명령을 실행"이다.

자주 쓰는 설정

명령하는 일
:set nu줄 번호 표시
:set nonu줄 번호 숨기기
:set ai자동 들여쓰기 (autoindent)
:set ts=4탭 크기 지정 (tabstop)
:set ic검색 시 대소문자 무시 (ignorecase)
:set hlsearch검색 결과 강조
:set sw=4자동 들여쓰기 폭 (shiftwidth)
:set sm괄호의 짝 보여 주기 (showmatch)
:set list탭(^I)과 줄 끝($)처럼 보이지 않는 문자 표시
:set all모든 옵션의 현재 값 보기
:syntax on문법 강조 켜기 (vim)
줄임본딧말줄임본딧말
nunumberaiautoindent
icignorecasetstabstop
swshiftwidthsmshowmatch
  • 끌 때는 앞에 no를 붙인다 — nonu, noai, noic, nolist. 옵션마다 끄는 명령이 따로 있는 것이 아니다.

  • 값을 받는 옵션은 =로 준다 — ts=4. 켜고 끄는 옵션과 모양이 다르다.

  • 지금 값이 궁금하면 물음표를 붙인다. :set ts? 는 tabstop=8 처럼 답한다(기본값이 8이다).

  • 이렇게 준 설정은 편집기를 닫으면 사라진다.

  • 계속 쓰려면 설정 파일에 적는다.

파일범위
~/.vimrc개인 설정
/etc/vimrc전역 설정 (모든 사용자)
~/.exrc예전 vi의 개인 설정 파일
   " ~/.vimrc 예
   set nu
   set ai
   set ts=4
  • 셸의 .bashrc와 같은 구조다. ~/로 시작하면 개인, /etc/면 전역이다.
  • 설정 파일 안에서는 콜론 없이 set nu 처럼 적는 것이 보통이다. 주석은 큰따옴표(") 로 시작한다. 셸의 #과 다르다.
  • 전역 파일을 먼저 읽고 개인 파일로 덮는다. 전역 파일의 위치는 배포판마다 달라서 레드햇 계열은 /etc/vimrc, 데비안 계열은 /etc/vim/vimrc 다.
헷갈리는 파일실제 역할
~/.vimrc내가 직접 적는 설정
~/.viminfovim이 자동으로 남기는 기록 — 검색어, 명령 이력, 복사한 내용. 설정 파일이 아니다
~/.exrc원조 vi·ex의 설정 파일. vim은 ~/.vimrc가 없을 때에만 이것을 읽는다
.파일명.swp편집 중에 만들어지는 스왑 파일. 비정상 종료 때 복구에 쓴다

다른 편집기들

nano

   ^G Get Help    ^O Write Out    ^X Exit
   └ ^ 는 Ctrl 키를 뜻한다
단축키하는 일
Ctrl+O저장(Write Out)
Ctrl+X종료(Exit)
Ctrl+W검색
Ctrl+K한 줄 잘라내기
Ctrl+G도움말
  • 모드가 없다. 열면 바로 글자를 입력할 수 있다.
  • 화면 아래에 단축키 목록이 항상 보인다. 초보자에게 쉬운 이유다.
  • pico의 개선판이며 GNU 프로젝트에서 만들었다.
단축키하는 일
Ctrl+U잘라낸 줄 붙여넣기
Ctrl+R다른 파일의 내용 읽어 넣기
Ctrl+\문자열 바꾸기
Ctrl+C현재 커서 위치 표시
   Ctrl+X
   Save modified buffer?   Y Yes   N No   ^C Cancel     ← Y
   File Name to Write: memo.txt                         ← Enter
  • 고친 뒤 Ctrl+X를 누르면 저장할지 묻는다. Y 다음에 파일 이름을 확인하고 엔터를 치면 저장하며 끝난다. vi처럼 경고만 하고 버티지 않는다.
  • 화면 아래 목록에서 ^는 Ctrl, M-는 Alt(Meta) 키다.
  • pico는 원래 Pine이라는 메일 프로그램에 딸린 편집기였다. 이것을 자유 소프트웨어로 다시 만든 것이 nano다.

emacs

단축키하는 일
Ctrl+X Ctrl+S저장
Ctrl+X Ctrl+C종료
Ctrl+G명령 취소
  • Richard Stallman이 만들었다. GNU 프로젝트의 편집기다.
  • 모드가 없고 대신 Ctrl과 Meta(Alt) 조합키로 모든 기능을 부른다.
  • Lisp으로 기능을 확장할 수 있어 편집기를 넘어선 환경으로 불린다.
단축키하는 일
Ctrl+X Ctrl+F파일 열기 (find file)
Ctrl+S / Ctrl+R아래로 / 위로 검색
Ctrl+K커서부터 줄 끝까지 잘라내기 (kill)
Ctrl+Y붙여넣기 (yank)
Ctrl+A / Ctrl+E줄의 맨 앞 / 맨 끝
Ctrl+X u실행 취소
  • Ctrl+X Ctrl+S 는 Ctrl을 누른 채 x, 이어서 s 를 누른다는 뜻이다. emacs 문서는 이것을 C-x C-s 로 적는다. C-는 Ctrl, M-는 Meta(Alt)다.
  • 저장과 종료가 모두 Ctrl+X로 시작하고 뒤의 글자만 다르다 — Ctrl+S가 붙으면 저장(save), Ctrl+C가 붙으면 종료다.
  • yank의 뜻이 vi와 반대다. vi의 yy는 복사, emacs의 Ctrl+Y는 붙여넣기다.
  • bash 명령행의 Ctrl+A·Ctrl+E·Ctrl+K·Ctrl+R 이 바로 emacs 방식 단축키다. 지난주에 쓴 키가 여기서 왔다.
  • emacs는 콘솔에서도, X 윈도의 그래픽 창으로도 실행된다.

세 편집기 비교

구분vi / vimemacsnano
만든 사람Bill JoyRichard StallmanGNU (pico 개선)
모드있다 (3개)없다없다
저장:wCtrl+X Ctrl+SCtrl+O
종료:qCtrl+X Ctrl+CCtrl+X
설정 파일~/.vimrc~/.emacs~/.nanorc
성격어디에나 있다확장성이 크다배우기 쉽다

"모드가 있는 편집기는?" 이라는 문제의 답은 vi 다. emacs와 nano는 모드가 없다.

같은 일을 세 편집기에서

하려는 일vi / vimemacsnano
저장하고 끝내기:wqCtrl+X Ctrl+S 다음 Ctrl+X Ctrl+CCtrl+X 다음 Y, 엔터
저장하지 않고 끝내기:q!Ctrl+X Ctrl+C 다음 저장 여부에 아니오Ctrl+X 다음 N
검색/패턴Ctrl+SCtrl+W
한 줄 잘라내기ddCtrl+K (커서부터 줄 끝)Ctrl+K
붙여넣기pCtrl+YCtrl+U
  • 단축키가 Ctrl 조합이면 emacs나 nano, 콜론이나 글자 하나면 vi 다. 보기에 섞여 나올 때 이 기준으로 먼저 가른다.
  • Ctrl+X 하나로 끝나면 nano, Ctrl+X Ctrl+C 두 번이면 emacs 다. 종료 키가 비슷해 바꿔 묻는다.
  • Ctrl+K는 두 편집기 모두 잘라내기지만, 붙여넣기는 emacs가 Ctrl+Y, nano가 Ctrl+U 로 다르다.

내일은 실행 중인 프로그램 — 프로세스의 개념과 유형을 다룬다.

📖 용어

  • /패턴 : 커서 아래 방향으로 문자열을 검색하는 vi 명령.
  • n / N : 검색 결과를 같은 방향 / 반대 방향으로 이동하는 키.
  • 치환(substitute) : :s/A/B/ 형식으로 문자열을 바꾸는 ex 명령.
  • % : 치환에서 파일 전체를 대상으로 지정하는 범위 기호.
  • g : 치환에서 한 줄 안의 모든 일치를 바꾸도록 지정하는 옵션.
  • ~/.vimrc : vim의 개인 설정 파일. 전역 설정은 /etc/vimrc다.
  • nano : pico를 개선한 GNU 편집기. 모드가 없고 화면 아래에 단축키가 표시된다.
  • emacs : Richard Stallman이 만든 확장성 높은 편집기. 모드 없이 조합키로 조작한다.

📝 연습 문제

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

문제 1

다음 중 vi 편집기에서 파일 전체의 모든 apple을 orange로 바꾸는 명령으로 알맞은 것은?

문제 2

다음 중 vi 편집기에서 화면에 줄 번호를 표시하는 명령으로 알맞은 것은?

문제 3

다음 중 vim의 개인 환경 설정을 저장하는 파일로 알맞은 것은?

문제 4

다음 중 편집 모드의 구분이 없어 실행 직후 바로 문자를 입력할 수 있는 편집기로 알맞은 것은?

문제 5

다음 중 nano 편집기에서 작성한 내용을 저장하는 단축키로 알맞은 것은?

이전vi 편집기의 세 가지 모드Week 6 · Day 1다음 프로세스의 개념과 유형Week 6 · Day 3

참고 공식 자료

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

이 페이지

  • 검색
  • 패턴에 쓰는 기호
  • 치환
  • 바꾸기 전과 후
  • 범위를 적는 방법
  • 자주 쓰는 치환 꼴
  • 자주 쓰는 설정
  • 다른 편집기들
  • nano
  • emacs
  • 세 편집기 비교
  • 같은 일을 세 편집기에서
  • 용어
  • 연습 문제