66
GNU/Linux 편집기와 텍스트 조작 (Editor and Text Manipulation) GNU/Linux 편집기와 텍스트 조작 (Editor and Text Manipulation) Seo, Doo-Ok Clickseo.com [email protected]

04 (Linux) (Fundamental) Editor Text

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 04 (Linux) (Fundamental) Editor Text

GNU/Linux

편집기와 텍스트 조작(Editor and Text Manipulation)

GNU/Linux

편집기와 텍스트 조작(Editor and Text Manipulation)

Seo, Doo-Ok

[email protected]

Page 2: 04 (Linux) (Fundamental) Editor Text

목 차

편집기

텍스트 조작과 필터

문자열 패턴 및 파일 검색

2

Page 3: 04 (Linux) (Fundamental) Editor Text

편집기

편집기

Vim 편집기

텍스트 조작과 필터

문자열 패턴 및 파일 검색

3

Page 4: 04 (Linux) (Fundamental) Editor Text

개발 환경 (1/2)

Stack Overflow

개발 환경과 툴

4

[ 출처 : “Developer Survey Results 2019”, Stack Overflow, 2019. ]

Page 5: 04 (Linux) (Fundamental) Editor Text

개발 환경 (2/2)

PYPL Index

Top IDE index

5[ 출처 : “PYPL Index”, Pierre Carbonnelle, April 2020. ]

Page 6: 04 (Linux) (Fundamental) Editor Text

편집기 (1/6)

vi(visual edit) 편집기 : ex-vi.sourceforge.net 1976년 03월, 빌 조이(Billy Joy) 가 만든 텍스트 편집기

• 최초의 UNIX 시스템용 화면 편집기– UNIX 계열 운영체제에서 가장 많이 사용하는 텍스트 편집기– BSD 3.0 에 C Shell 과 함께 추가된 프로그램

• 라인 편집기인 ed 의 기능을 확장시킨 ex 편집기를 개발하고 이를 확장하여 개발

vi 호환 텍스트 편집기 : Vim(vi improved)• 1992년, 386BSD 배포판(FreeBSD, NetBSD)에서 Elvis 를 vi 대체 편집기로 채택• FreeBSD와 NetBSD 4.4-Lite2 에서 1994년 개발된 nvi 로 전환

vi 릴리즈• 1978년 03월, ex 1.1 -- BSD UNIX release• 1979년 05월, ex 2.0• 1979년 12월, ex 3.1

라이선스 : BSD License 프로그래밍 언어 : C

6

(read-only) ex-vi Project : sourceforge.net

http://ex-vi.cvs.sourceforge.net/

Page 7: 04 (Linux) (Fundamental) Editor Text

편집기 (2/6)

Vim(Vi improved) 편집기 : vim.org

1991년 11월, vi 호환 텍스트 편집기• gVim : GUI Vim

Vim 릴리즈• 1991년 11월, vim 1.14 -- Vi imitation

• 1993년 12월, Vim 2.0 -- Vi improved

• 2019년 12월, Vim 8.2

라이선스 : Vim License, Careware License

프로그래밍 언어 : C, Vim script

7

Vim GitHub : github.com

https://github.com/vim/vim

Vim Mercurial : https://bitbucket.org/

https://bitbucket.org/vim-mirror/vim/src/default/ -- GitHub mirror

Page 8: 04 (Linux) (Fundamental) Editor Text

편집기 (3/6)

neovim 편집기 : neovim.io

2014년, 확장 가능한 Vim 기반 텍스트 편집기• 2015년 12월, neovim 0.1 부터 거의 모든 Vim 의 기능과 호환된다.

neovim 릴리즈• 2015년 11월, neovim 0.1.0

• 2020년 04월, neovim 0.5.0

라이선스 : Apache 2.0 License

프로그래밍 언어 : C, Lua, Vim script

8

neovim GitHub : github.com

https://github.com/neovim/neovim

Page 9: 04 (Linux) (Fundamental) Editor Text

편집기 (4/6)

Emacs(Editor MACroS) 편집기 1976년, 리차드 스톨만(Richard Stallman)이 개발한 텍스트 편집기

• 간단한 문서 편집으로부터 프로그래밍까지 다양하게 사용

Gosling Emacs : Java 언어를 개발한 제임스 고슬링(James Gosling)

1984년, GNU Emacs(FSF Emacs) : gnu.org/software/emacs• Gosling Emacs를 기반으로 했지만, Lisp 인터프리터로 대체하기 위하여 재작성• XEmacs : 1991년 GNU Emacs에서 분기 된 변형

GNU Emacs 릴리즈• 2001년 10월, GNU Emacs 21.1• 2018년 05월, GNU Emacs 26.1

라이선스 : GNU GPL v3 프로그래밍 언어 : C, Lisp

9

GNU Emacs GNU Savannah : savannah.gnu.org

http://savannah.gnu.org/projects/emacs/

Page 10: 04 (Linux) (Fundamental) Editor Text

편집기 (5/6)

Emacs 편집기 : GNU Emacs

10

Page 11: 04 (Linux) (Fundamental) Editor Text

편집기 (6/6)

gedit 편집기 : wiki.gnome.org/Apps/Gedit

1999년 02월, GNOME 데스크톱 환경의 공식 텍스트 편집기• 목표 : 단순성과 사용 편의성

– 드래그 앱 드롭(DnD, Dorg and Drop)을 지원

• GTK+ 3.x 및 GNOME 3.x 라이브러리를 사용

• 2017년 07월까지 관리되지 않다가, 2017년 08월부터 두 개발자가 다시 작업 시작

gedit 릴리즈• 2020년 04월, gedit 3.36.1

라이선스 : GNU GPL v2.0+

프로그래밍 언어 : C, Python

11

gedit GNOME GitLab : gitlab.gnome.org

https://gitlab.gnome.org/GNOME/gedit

Page 12: 04 (Linux) (Fundamental) Editor Text

12

편집기

Vim 편집기

Page 13: 04 (Linux) (Fundamental) Editor Text

Vim 편집기

Vim 편집기 : 동작 모드

두 가지 동작 모드• 입력 모드(Insert mode)

• 명령 모드(Command mode)

13

Page 14: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 실행과 종료 (1/4)

Vim 편집기 실행

view file

• 파일을 읽기 전용 모드로 시작해서 편집한 후 다른 이름으로 저장할 때 사용

14

일반 형식 vi [옵션] 파일명

주요 옵션 -R (read-only) 파일을 읽기 전용으로 열 때 사용한다.

$ view 파일명

Page 15: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 실행과 종료 (2/4)

Vim 편집기 실행

불확실한 종료 시 되살리기

15

명령어 내 용

vi -r 되살릴 수 있는 모든 파일의 이름을 보여준다.

vi -r filename Vim 편집기를 시작하고 나서 지정한 파일을 되살려 준다.

Page 16: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 실행과 종료 (3/4)

16

파일 저장 명령어

파일 저장과 종료

명령어 내 용

:w(write) 버퍼에 내용을 파일로 저장하는 명령

단, Vim 편집기는 종료하지 않는다.

:w filename 문서의 내용을 지정한 파일에 저장한다.

:w! filename문서의 내용을 지정한 파일에 저장한다.

단, 기존 파일이 존재하면 삭제 후에 저장한다.

명령어 내 용

:q(quit) 버퍼에 수정 사항이 없을 시 Vim 편집기를 종료

(수정 사항을 이미 저장한 상태에서만 종료가 가능하다.)

:wq 버퍼의 내용을 파일로 저장하고, Vim 편집기를 종료한다.

:q! 버퍼의 내용을 파일로 저장하지 않고, Vim 편집기를 종료한다.

:x 버퍼에 마지막으로 수정된 내용을 저장하고, Vim 편집기를 종료한다.

Page 17: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 실행과 종료 (4/4)

파일 저장 명령어

17

명령어 내 용

:begin,end w filename begin 행부터 end 행까지 filename 으로 저장

:1,. w filename 1행부터 현재 행까지 filename 으로 저장

:1,. w >> filename 1행부터 현재 행까지 filename 으로 추가

Page 18: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 입력 및 삭제 (1/3)

입력 명령어

18

입력 키 내 용

i 입력모드로 전환, 커서 위치 앞에 삽입

a 입력모드로 전환, 커서 위치 뒤에서 삽입

I 입력모드로 전환, 현재 줄의 앞에 삽입

A 입력모드로 전환, 현재 줄의 끝에 삽입

o 입력모드로 전환, 현재 줄의 아래에 새로운 행을 열고 텍스트를 입력

O 입력모드로 전환, 현재 줄의 위에 새로운 행을 열고 텍스트를 입력

Page 19: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 입력 및 삭제 (2/3)

삭제 명령어

19

입력 키 내 용

x 현재 커서 위치의 문자를 삭제한다.

X 현재 커서 위치의 왼쪽 문자를 삭제한다.

dd 현재 줄의 전체를 삭제한다(커서를 포함하는 라인 전체 삭제).

D 현재 커서 위치부터 줄의 끝까지 삭제한다(오른쪽 라인).

dw 커서가 있는 한 단어를 삭제

db 커서 앞에 있는 한 단어를 삭제

dG 현재 커서 위치부터 편집 버퍼의 끝까지 삭제한다(파일의 끝까지).

d1G 현재 커서 위치부터 편집 버퍼의 맨 앞까지 삭제한다.

d) 문장의 나머지 삭제

d} 문단의 나머지 삭제

dH 화면의 시작까지 삭제

Page 20: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 입력 및 삭제 (3/3)

복원 명령어

마지막으로 지운 내용 복사하기

20

입력 키 내 용

p 마지막으로 지워진 내용을 커서의 뒤에 삽입한다.

P 마지막으로 지워진 내용을 앞에 삽입한다.

xp 두 문자를 바꾼다.

deep 두 단어를 바꾼다.

ddp 두 줄을 바꾼다.

u 작업 내용을 이전으로 되돌린다(마지막 변경만 취소한다).

Page 21: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 이동 (1/4)

이동 명령어

기본적인 커서의 이동 : 화살표 키(방향 키)를 사용하여 커서 이동

21

입력 키 내 용

h 커서를 한 칸 왼쪽으로 이동

j 커서를 한 줄 아래로 이동

k 커서를 한 줄 위로 이동

l 커서를 한 칸 오른쪽으로 이동

<Backspace> 커서를 한 칸 왼쪽으로 이동

<Space> 커서를 한 칸 오른쪽으로 이동

k

jh l

Page 22: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 이동 (2/4)

이동 명령어 : 특정 행 번호 및 패턴

특정 행 번호로 이동

패턴(정규 표현식)을 이용한 이동

22

입력 키 내 용

:n n 번째 행으로 이동

:$ 마지막 행으로 이동

:$= 현재 문서의 총 줄(행) 수

:.= 현재 위치의 행 번호

입력 키 내 용

/patterns 특정 patterns 과 일치하는 곳으로 이동한다.

?patterns 검색의 방향을 뒤쪽(backward)으로 진행한다.

Page 23: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 이동 (3/4)

이동 명령어 : 라인 단위

라인 단위 커서 이동

단어 단위 커서 이동

23

입력 키 내 용

- 커서를 이전 줄의 처음으로 이동

+ 커서를 다음 줄의 처음으로 이동

Enter 커서를 다음 줄의 처음으로 이동

0 커서를 현재 줄의 맨 앞으로 이동

$ 커서를 현재 줄의 맨 끝으로 이동

^ 커서를 현재 줄의 첫 글자 (공백이나 탭이 아닌)로 이동

입력 키 내 용

e 또는 E 커서를 다음 단어의 끝 글자로 이동

w 또는 W 커서를 다음 단어의 첫 글자로 이동

b 또는 B 커서를 이전 단어의 첫 글자로 이동

Page 24: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 이동 (4/4)

이동 명령어 : 문단 단위

문단 단위 커서 이동

24

입력 키 내 용

( 문장의 시작으로 이동

) 문장 끝으로 이동하여 다음 단어의 시작 첫 칸으로 커서 이동

{ 문단의 시작으로 이동

} 문단 끝으로 이동

G 문서의 마지막 줄로 이동

nG n번째 줄로 이동

M 화면 중간 줄에 커서 이동

Page 25: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 편집 (1/4)

문자 단위 치환 명령어

• (주의) r 명령 대신 R 명령을 사용한 경우

– ESC 키를 눌러 명령 모드로 전환한 후에 u 명령을 사용하여 변경내용 취소

25

입력 키 내 용

R커서가 있는 위치부터 덮어쓰기 시작한다.

단, ESC 키를 누를 때까지 덮어쓴다.

r 커서가 위치한 곳의 한 글자만 치환한다(덮어 쓴다).

s 커서가 있는 문자 삭제 후 입력모드로 전환

S 커서가 있는 줄을 삭제한 후 입력모드로 전환

cb 커서가 있는 앞 문자 삭제 후 입력모드

Page 26: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 편집 (2/4)

문자열 단위 치환 명령어

버퍼의 x 행과 y 행 사이에서 패턴을 찾아 치환 문자열로 바꾼다.• 행 번호 지시 대신 % 문자를 사용하면 전체 파일을 지칭할 수 있다.

– $는 파일의 마지막 행을 뜻한다.

– x, y를 적지 않으면 현재 행에 적용한다.

플래그• g : 일치하는 패턴 모두를 치환하라는 지시 사항

• c : 치환할 때마다 물어 보라는 지시 사항

• 예) 1,10s/Doo-Ok/Clickseo– 1행과 10행(10행도 포함) 사이에서 Doo-Ok 을 찾아 Clickseo 로 바꾼다.

26

:[ x, y ]s/패턴/치환문자열/플래그

Page 27: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 편집 (3/4)

다른 파일 포함시키기

여러 파일 편집

여러 파일을 동시에 개방한 후에 작업한다.• 처음 Vim 편집기 실행할 때 파일명을 하나 이상 지정한 후에, ex 명령어를 이용해서

파일 사이를 이동하면서 작업 할 수 있다.

• :w 로 file1 을 저장하고 :n 으로 다음 파일(file2)을 불러올 수 있다.

다른 파일 편집

명령어 내 용

:r filename 지정한 파일의 내용을 현재 커서가 있는 줄 다음에 불러온다.

vi filename Vim 편집기를 시작할 때부터 특정 파일을 불러와서 시작한다.

$ vi file1 file2

명령어 내 용

:e filename 현재 파일의 편집을 마치고, 다른 파일을 편집하고 싶을 때 사용한다.

Page 28: 04 (Linux) (Fundamental) Editor Text

Vim 편집기 : 편집 (4/4)

행 번호 붙이기

쉘 명령어 실행

28

입력 키 내 용

:set number

행 번호 붙이기:set nu

:se nu

:set nonumber

행 번호 없애기:set nonu

:se nonu

입력 키 내 용

:! Vim 내부에서 주어진 명령을 실행할 수 있다.

:r! 명령이 표준 출력에 보낸 결과 내용을 버퍼에 포함시킨다.

Page 29: 04 (Linux) (Fundamental) Editor Text

29[ 출처 : “Vi/Vim 단축키 모음”, KLDP.org ]

Page 30: 04 (Linux) (Fundamental) Editor Text

텍스트 조작과 필터

편집기

텍스트 조작과 필터

파일 비교

열의 추출 및 결합

파일 정렬과 분할

문자열 패턴 및 파일 검색

30

Page 31: 04 (Linux) (Fundamental) Editor Text

텍스트 조작 및 필터 (1/2)

파일의 종류 확인 : file

특정 파일의 종류를 알고 싶을 때 사용

31

일반 형식 file [옵션] 파일명

주요 옵션 -z 압축 파일의 형태만 검사한다.

Page 32: 04 (Linux) (Fundamental) Editor Text

텍스트 조작 및 필터 (2/2)

문자 및 문자열 개수 구하기 : wc

(Word Counter) 파일의 정보를 추출하는 명령어• 파일 내의 라인 수, 단어 수, 문자 수를 세어 표시해 주는 명령어

파이프라인과 조합하여 여러 정보를 확인• 현재 디렉터리 내의 파일 개수

• 현재 시스템의 사용자 수

32

일반 형식 wc [옵션] 파일명

주요 옵션

-l 라인들의 개수만 출력

-w 단어들의 개수만 출력

-c 문자들의 개수만 출력

[clickseo@localhost clickseo]$ ls | wc -l5[clickseo@localhost clickseo]$ finger | wc -l2

Page 33: 04 (Linux) (Fundamental) Editor Text

33

텍스트 조작 및 필터

파일 비교

cmp, comm, diff

Page 34: 04 (Linux) (Fundamental) Editor Text

파일 비교 (1/3)

파일 비교 : cmp

(Compare) 유사한 두 파일을 비교• 처음으로 틀린 문자가 나타나는 위치만을 출력한다(bytes 단위로 비교).

34

일반 형식 cmp [옵션] 파일명1 파일명2

주요 옵션 -l 파일 내의 모든 차이점을 알기 위해서 사용한다.

Page 35: 04 (Linux) (Fundamental) Editor Text

파일 비교 (2/3)

파일 비교 : comm

(Common) 행 단위 파일 비교 명령어• 두 파일의 동일한 내용을 찾는다(즉, 두 파일에 공통으로 있는 라인 출력).

– 왼쪽 칼럼 : 첫 번째 파일에만 있는 내용

– 중간 칼럼 : 두 번째 파일에만 있는 내용

– 오른쪽 칼럼 : 두 파일에 공통으로 존재하는 행이 출력

35

일반 형식 comm [옵션] 파일명1 파일명2

Page 36: 04 (Linux) (Fundamental) Editor Text

파일 비교 (3/3)

파일 비교 : diff

Different File Comparator

파일 사이의 다른 내용을 찾아내는 명령어• 표본이 되는 문서는 두 번째 파일

• a (append) : (파일2)에서 (파일1)로 첨가되어야 할 것을 표시

• c (change) : 두 파일의 내용이 바뀌어야 하는 내용을 표시

• d (delete) : (파일1)에서 제거되어야 하는 내용을 표시

36

일반 형식 diff [옵션] 파일명1 파일명2

Page 37: 04 (Linux) (Fundamental) Editor Text

37

텍스트 조작 및 필터

열의 추출 및 결합

cut, paste

Page 38: 04 (Linux) (Fundamental) Editor Text

열의 추출 및 결합 (1/5)

열의 추출 : cut

특정 필드를 추출해서 가공해야 하는 경우 사용하는 명령어• 데이터의 특정 열을 선택하거나, 파일 내의 특정 필드만을 표시할 때 사용한다.

38

일반 형식 cut [옵션] 파일명

주요 옵션

-c 목록

목록에 지정한 열을 출력

-c1,2 : 1번, 2번 열을 출력

-c1-10 : 1번에서 10번 열 까지를 출력

-f 목록목록에 지정한 필드를 출력

-f1,3 : 1번 필드와 3번 필드를 출력

-d 필드 구분자 필드를 구분하는 문자를 지정한다(기본값 : 탭 문자).

-s 필드 구분자를 포함할 수 없다면 그 행은 하지 않는다.

Page 39: 04 (Linux) (Fundamental) Editor Text

열의 추출 및 결합 (2/5)

열의 추출 : cut 옵션

39

1 ~ 3 열 만 표시

-f 옵션 사용 시…파일 안에 각 필드를 구분하기 위해서

반드시 탭으로 필드들이 구분되어 있어야 한다.

Page 40: 04 (Linux) (Fundamental) Editor Text

열의 추출 및 결합 (3/5)

열의 추출 : cut 옵션

40

-d 옵션 : 필드 구분자 지정

/etc/passw 파일 추출 시 필드 구분자로 “:” 를 지정

[clickseo@localhost clickseo]$ cat /etc/passwd( …생략… )

clickseo:x:1000:1000:Clickseo,,,:/home/clickseo:/bin/bash

Page 41: 04 (Linux) (Fundamental) Editor Text

열의 추출 및 결합 (4/5)

열의 결합 : paste

수직으로 파일을 결합하여 보여준다.• 각각의 정보를 가지고 있는 파일을 결합하여 하나로 통합된 파일을 만드는데

유용하게 사용할 수 있다.

41

일반 형식 paste [옵션] 파일명

주요 옵션-d 구분자 파일을 결합할 때 중간에 특정한 구분자를 넣고자 할 때 사용

-s 목록 연속적인 라인을 1개 라인으로 결합한다.

Page 42: 04 (Linux) (Fundamental) Editor Text

열의 추출 및 결합 (5/5)

열의 결합 : paste 옵션

42

-d 옵션 : 파일 결합 시 지정된 구분자를 추가하여 파일 구분

-s 옵션 : 연속적인 라인을 1개의 라인으로 결합

Page 43: 04 (Linux) (Fundamental) Editor Text

43

텍스트 조작 및 필터

파일 정렬과 분할

sort, split

Page 44: 04 (Linux) (Fundamental) Editor Text

파일 정렬과 분할 (1/5)

파일 정렬 : sort

주어진 필드나 문자의 위치를 기준으로 파일을 행 단위로 정렬• 정렬항목을 기준으로 오름차순, 내림차순으로 정렬한다.

– 알파벳 순서는 소문자보다 대문자가 우선

– 숫자들은 모든 문자보다 우선

44

일반 형식 sort [옵션] 파일명

주요 옵션

-r (Reverse) 내림차순으로 정렬한다.

-f (ignore-case) 대소문자 구분하지 않고 정렬한다.

-d (Dictionary-order) 알파벳 순으로 정렬한다.

-n (Numeric-sort) 숫자 순으로 정렬한다.

-m (Merge) 정렬된 파일들을 병합한다.

-o file (Output) 표준 출력 대신에 FILE 에 출력한다.

Page 45: 04 (Linux) (Fundamental) Editor Text

파일 정렬과 분할 (2/5)

파일 정렬 : sort 옵션

45

-r 옵션 : 내림차순 정렬

Page 46: 04 (Linux) (Fundamental) Editor Text

파일 정렬과 분할 (3/5)

파일 정렬 : sort 옵션

46

-m 옵션 : 정렬된 파일의 합병

-u 옵션 : 정렬된 파일에서 중복된 라인의 제거

Page 47: 04 (Linux) (Fundamental) Editor Text

파일 정렬과 분할 (4/5)

파일 분할 : split

하나의 파일을 여러 개의 작은 파일로 분할• 분할된 개수만큼의 새로운 파일을 생성한다.

– 파일을 분할하면 기본적으로 1000 라인 단위로 분할된다.

• 파일명은 “x” 문자와 계속해서 두 문자를 사용하여 만들어진다.

– 예: 첫 번째 파일은 “xaa”, 두 번째 파일은 “xab”로 만들어진다.

47

일반 형식 split [옵션] 파일명

주요 옵션

-b size (Bytes) 파일을 bytes 단위로 분리

-l line (Lines) 파일을 주어진 lines 수 단위로 분리

-c size 파일을 한 줄에 최대 size 바이트만큼 씩 분리

Page 48: 04 (Linux) (Fundamental) Editor Text

파일 정렬과 분할 (5/5)

파일 분할 : split 옵션

48

5줄 단위로 파일을 분할

xaa, xab, xac, xad 4개의 파일로 분리하여 새로운 파일 생성

조각난 파일을 하나의 큰 파일로 병합

$ cat x?? > new

Page 49: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 및 파일 검색

편집기

텍스트 조작과 필터

문자열 패턴 및 파일 검색

문자열 패턴 검색 : grep

파일 검색 : find

49

Page 50: 04 (Linux) (Fundamental) Editor Text

50

문자열 패턴 검색

grep

Page 51: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (1/9)

문자열 패턴 검색 : grep

문자열 및 문자열 패턴 검색, 조건에 맞는 문자열을 찾아서 출력

51

일반 형식 grep [옵션] [경로, 파일명]

주요 옵션

-c 파일 이름 다음에 숫자를 함께 출력한다(패턴이 들어 있는 라인의 개수).

-h 파일의 이름은 출력하지 않는다.

-i 대소문자 구분을 하지 않는다.

-l 파일 이름만 출력하고 패턴이 있는 라인은 출력하지 않는다.

-n 각 라인 앞에 라인 번호를 붙인다.

-w 패턴이 원하는 단어로 독립되어 있을 경우만 찾는다.

-v 패턴이 없는(inverse) 라인만 출력한다.

Page 52: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (2/9)

문자열 패턴 검색 : 표현식

표현식(expression)

52

간단한 문법

^ 라인의 첫 시작 ( ^a : a로 시작하는 라인)

$ 라인의 끝 ( a$ : a로 끝나는 라인 )

. 한 글자 ( a…b : a와 b 사이에 임의의 3글자를 포함하는 패턴 )

*이전의 글자나 정규식이 0회 이상 반복

abc* : ab, abc, abcc, abccc 등

[ ]한 글자의 대체 글자의 목록

[abc] : abc 중 한 글자라도 반드시 있는 단어

[^] 예: [^abc] : abc는 반드시 없는 라인

?기호 이전의 글자가 있거나 없거나...

abc? -- 문자 c 가 있거나 없거나(즉, ab 혹은 abc)하는 패턴

+ 이전의 글자나 정규식이 1회 이상 반복

Page 53: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (3/9)

문자열 패턴 검색 : 사용 예

53

$ grep test s* // s 로 시작하는 모든 파일에서 test 를 포함하는 모든 행을 찾음

Page 54: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (4/9)

문자열 패턴 검색 : 사용 예

54

$ grep ^t sample // sample 파일에서 문자 t 로 시작하는 모든 행을 출력

$ grep t$ sample // sample 파일에서 문자 t 로 끝나는 모든 행을 출력

Page 55: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (5/9)

문자열 패턴 검색 : 사용 예

55

$ grep [^0-9] sample // 숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력

Page 56: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (6/9)

문자열 패턴 검색 : 사용 예

56

// 지정된 문자 a 가 0 회 이상 반복되는 패턴 검색

$ grep a* sample$ grep aa* sample$ grep aaa* sample

Page 57: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (7/9)

문자열 패턴 검색 : 사용 예

57

// -n 옵션 : 행 번호를 함께 출력

$ grep -n test sample

// -i 옵션 : 대소문자를 구별하지 않는다.

$ grep -i test sample

// -l 옵션 : 행 번호 대신 단지 파일이름만 출력

$ grep -l test sample

Page 58: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (8/9)

문자열 패턴 검색 : 사용 예

58

// -v 옵션 : 문자열 ‘sample test’이 포함되지 않은 모든 행을 출력

$ grep -v sample sample$ grep -v ‘sample test’ sample

Page 59: 04 (Linux) (Fundamental) Editor Text

문자열 패턴 검색 : grep (9/9)

정규 표현식과 grep의 사용 예제

59

// -w 옵션 : 패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾음.

// abc나 aaa 등의 단어가 아니라, a라는 단어가 포함된 행만 출력

$ grep -w a sample

Page 60: 04 (Linux) (Fundamental) Editor Text

60

파일 검색

find

Page 61: 04 (Linux) (Fundamental) Editor Text

파일 검색 : find (1/5)

파일 검색

find 명령어• 시스템 내에 존재하는 파일을 찾고자 할 때 사용하는 명령어

61

일반 형식 find [경로] [옵션] 파일명

주요 옵션

-name filename 찾고자 하는 파일의 이름 지정(옵션 생략 가능)

-perm mode 지정된 권한과 일치하는 파일을 찾는다.

-type filetype파일종류, 심볼릭 링크, 디렉터리 등에 따라 검색

f : 일반 파일, d : 디렉터리, l : 심볼릭 링크,b : 블록 파일, p : 파이프 등의 기호를 사용

-size num지정된 크기와 일치하는 파일을 찾는다.

파일 크기는 블록단위로 지정(1block == 512KB)블록 숫자 뒤에 k 를 붙이면 1KB 크기의 블록 숫자로 간주

-links num num 개의 하드 링크를 갖는 파일을 찾는다.

-user name 파일 사용자의 이름에 따라서 검색

-group gname 그룹 이름에 속한 파일을 찾는다.

Page 62: 04 (Linux) (Fundamental) Editor Text

파일 검색 : find (2/5)

파일 검색 : find

주요 옵션 : 시간

62

일반 형식 find [경로] [옵션] 파일명

주요 옵션

-mtime num 파일의 데이터가 최근 num * 24시간(일)이 지난 파일을 찾는다.

-mmin num 파일의 데이터가 최근 num 분전에 수정된 파일을 찾는다.

-atime num num * 24시간(일) 전에 마지막 접근한 파일을 찾는다.

-amin num num 분 전에 마지막 접근한 파일을 찾는다.

-ctime num num *24 분 전에 마지막 변경한 파일을 찾는다.

-cmin num num분 전에 마지막 변경한 파일을 찾는다.

-print 찾은 파일을 화면에 출력

Page 63: 04 (Linux) (Fundamental) Editor Text

파일 검색 : find (3/5)

파일 검색 : find 활용 예

표현식을 활용한 검색

63

$ find ./ -name sample$ find ./ -name [^a-z]*.txt

Page 64: 04 (Linux) (Fundamental) Editor Text

파일 검색 : find (4/5)

파일 검색 : find 활용 예

마지막 수정한 일수로 검색

64

// (+) 기호는 “~보다 이상”을 의미하고 (-) 기호는 “~보다 이하”를 의미한다.

// 5일 이상 전에 마지막으로 수정한 파일 찾기

$ find ./ -mtime +5 -print

// 적어도 20일 전에 마지막으로 수정한 파일(일반 파일: -type f) 찾기

$ find ./ -type f -atime -20 -print

Page 65: 04 (Linux) (Fundamental) Editor Text

파일 검색 : find (5/5)

파일 검색 : find 활용 예

접근 권한을 이용한 검색

65

// 접근 권한이 521(r-x-w---x)인 파일 찾기# find / -perm 521 -print

// 모든 사용자에게 접근 권한이 전부 허가된 디렉터리(디렉터리 파일: -type d) 찾기# find / -type d -perm 777 -print

// root 계정의 SetUID 설정파일 찾기# find / -user root -perm 4000 -print

// 그룹 members에 대한 SetGID 파일 찾기# find / -group members -perm 2000 -print

// -o 옵션을 이용하여 OR 결합되고 괄호를 이용하여 그룹을 지음# find / -type f \( -perm 2000 -o -perm 4000 \) -print

Page 66: 04 (Linux) (Fundamental) Editor Text

참고문헌

66

[1] 이종원, “IT CookBook, 우분투 리눅스(개정판) : 시스템 & 네트워크”, 한빛아카데미, 2018.

[2] 백창우, “유닉스 리눅스 프로그래밍 필수 유틸리티”, 한빛미디어. 2010.

이 강의자료는 저작권법에 따라 보호받는 저작물이므로 무단 전제와 무단 복제를 금지하며,

내용의 전부 또는 일부를 이용하려면 반드시 저작권자의 서면 동의를 받아야 합니다.

Copyright © Clickseo.com. All rights reserved.