Time for Security

블로그 이미지
제가 교육을 받으며 이해한 보안 지식을 복습하고, 정리해가는 작은 블로그입니다.
by 하꼬방
  • Total hit
  • Today hit
  • Yesterday hit

 안녕하세요!


 이번 포스팅은 vi 편집기입니다.


 vi 편집기는 윈도우의 메모장 같은 프로그램입니다.


 vi는 visual editor의 약자입니다.


 이번에 배울 vi 편집기는 특히 리눅스를 처음 사용해 보시는 분에게는 완전 낯선 부분입니다.


 메모장처럼 생겨서 메모장이지 않은... 마우스를 사용했던 메모장과는 다르게 오로지 키보드로 사용을 해야하기 때문에 상당히 애먹는 부분입니다.


 하지만 모든 명령어에 익숙하다면 훨씬 더 편하다고 말하더군요.


 저는 아직 거기까지는 모르겠습니다.


 그럼 포스팅을 시작하도록 하겠습니다. 


 먼저 vi를 실행시켜 줍니다.



 실행법은 vi (파일명)입니다.


 여기서 저는 파일명을 test.txt라고 했는데 아무거로나 하셔도 상관없습니다.


 아시리라 믿지만 리눅스에서 . 뒤에 확장자처럼 보이는 것은 확장자가 아닙니다. 


 여러 파일을 분간하기 위해 사용할 뿐입니다.


 저는 텍스트 파일임을 알려주기 위해 눈에 익숙한 .txt를 사용하였습니다.



 그렇게 되면 이런 메모장과 비슷한 화면이 보여집니다.


 이 화면은 현재 커멘드 모드입니다.


 vi에는 총 3가지의 모드가 있는데요.


 그 중 하나입니다.


 여기서 i를 눌러봅니다.



 이 모드는 에디트 모드입니다.


 파일을 수정할 수 있는 모드예요.


 메모장처럼 글씨를 쓸 수 있는 모드라고 생각하시면 됩니다.


 아무 글씨나 써주세요.


 그 이유는 파일을 저장한 후 다시 켯을 때 제대로 저장이 되어 있나 확인해보기 위함입니다. 



 esc를 누른 후, :wq라고 입력해주시면 원래 입력하던 곳이 아닌 맨 밑에 글씨가 써지게 되는데요.


 이 모드가 바로 라스트 라인 모드입니다.


 :wq는 write하고, quit을 한다는 의미입니다.


 저장후 종료라는 말이라고 생각하시면 됩니다.


 더 자세한 명령어는 뒤에서 설명하도록 하겠습니다.



 vi 명령어로 파일을 다시 열어주시면 아까 전 그 내용이 그대로 임을 확인할 수 있답니다.


 아까와 같이 i를 눌러 here을 써줍시다.



 방금 커서가 있던 곳의 앞에서부터 써집니다.


 처음의 상황으로 돌아가 a를 눌러주시고 here을 써줍니다.



 커서의 뒤에 here이 써지는 것을 확인할 수 있어요.


 처음에는 커서 위치도 헷갈리고, i와 a가 복잡하시겠지만 조금 익숙해지시면 능숙하게 다루실 수 있을거에요!


 다시 처음의 상황으로 돌아가 a를 눌러주시고 here을 써보세요.



 커서 밑에 줄에 here이 써지는 것을 확인할 수 있답니다.


 입력할 수 있는 큰 단축키는 이렇게 i, a, o 입니다.


 그 외의 명령어도 한 번 보고 넘어 갈게요.


명령어 

설명 

a

 텍스트 뒤에 커서를 위치시키고 입력을 받습니다. 

A

 텍스트가 위치한 줄의 가장 뒷부분에 커서를 위치시키고 입력을 받습니다. 

i

 텍스트가 앞에 커서를 위치시키고 입력을 받습니다.

I

 텍스트가 위치한 줄의 가장 앞부분에 커서를 위치시키고 입력을 받습니다. 

o

 커서가 위치한 줄의 아래에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받습니다. 

O

 커서가 위치한 줄의 위에 새로운 줄을 추가하여 커서를 위치시키고 입력을 받습니다. 


 처음부터 전부 외울 필요는 없다고 생각해요.


 하지만 알고 넘어가는 것과 모르고 넘어가는 것은 많이 다르겠죠?


 다음은 커멘드 모드에서 커서를 이동하는 명령어를 살펴보겠습니다.


 이 부분은 정리된 표만으로 충분하다고 생각해 표만 올립니다.


키 조합 

커서 이동 설명 

h, 왼쪽 화살표, 백스페이스 키 

 왼쪽으로 한 칸 이동 

j, 아래쪽 화살표 

 한 줄 아래로 이동 

k, 위쪽 화살표 

 한 줄 위로 이동 

l, 오른쪽 화살표, 스페이스 키 

 오른쪽으로 한 칸 이동 

w 

 한 단어 앞으로 이동 

b 

 한 단어 뒤로 이동 

e 

 현재 단어의 끝으로 이동 

$ 

 한 줄 끝으로 이동 

0(숫자) 

 한 줄의 시작으로 이동 

Enter 키 

 한 줄 아래로 이동 

G 

 파일의 제일 마지막 줄로 이동 

1G 

 파일의 제일 첫 번째 줄로 이동 

:n 

 n번째 줄로 이동 

nG 

 n번째 줄로 이동 

Ctrl + F 

 화면 사이즈만큼 다음 화면으로 이동 

Ctrl + D 

 화면 사이즈의 절반만큼 다음 화면으로 이동 

Ctrl + B 

 화면 사이즈만큼 이전 화면으로 이동 

Ctrl + U 

 화면 사이즈의 절반만큼 이전 화면으로 이동 

Ctrl + L 

 화면 재 갱신 


 w, b, G 정도 암기해두시고 가면 편리할거에요! 



 다음 실습을 위해 몇 글자 더 적었습니다.


 이번엔 삭제에 관련된 명령어입니다.


 마찬가지로 표를 먼저 확인할게요.


명령어 

기능 

R

 ESC 키를 입력할 때 까지 커서가 위치한 부분의 오른쪽부터 텍스트를 대체하여 입력합니다. 기존에 있던 내용은 삭제됩니다. 

C

 텍스트를 입력 후 ESC 키를 입력할 대 까지 커서가 위치한 부분으로부터 줄의 끝 부분까지 삭제되고 입력한 텍스트로 대체됩니다. 

s

 커서가 위치한 부분의 글자를 삭제한 후 입력합니다. 

x

 커서가 위치한 부분의 글자를 삭제합니다. 

dw

 커서가 위치한 부분부터 한 단어를 삭제합니다. 

dd

 커서가 위치한 줄을 삭제합니다. 

D

 커서가 위치한 부분부터 해당 줄의 끝부분까지 삭제합니다. 

:n,nd

 n번째 줄부터 n번째 줄까지 삭제합니다. 


 경험상 dd와 x를 자주 이용해요.


 여기서 R과 C가 설명이 조금 헷갈릴 수 있을 것 같아 화면으로 준비했습니다.


 먼저 R 입니다.


 R은 한마디로 한글에서 insert 키를 눌러 수정 상태가 되었다고 보면 돼요.



 이렇게 line위를 바로 덮어 쓸 수 있답니다.


 다음은 C 입니다.


 C도 R과 비슷한데 커서 뒤의 줄을 전부 삭제 후 입력해주는 명령어입니다.


 아래 화면에서 확인하실 수 있습니다.



 다음은 수정과 관련된 명령어입니다.


명령어

기능 

cw

 커서가 위치한 부분의 단어 끝까지 변경하여 덮어쓰기 합니다. 

r

 커서가 위치한 부분의 글자 하나를 대체합니다. 

J

 커서가 위치한 부분의 아랫줄의 내용을 커서가 위치한 줄로 이동시킵니다. 

xp

 커서가 위치한 부분의 글자와 오른쪽의 글자의 위치를 변경합니다. 

~

 커서가 위치한 부분의 글자의 대소문자를 변경합니다. 

u

 명령어 실행 전으로 되돌립니다. 

U

 커서가 위치한 줄의 모든 변경사항을 변경이전으로 되돌립니다. 

.

 바로 전에 입력한 명령어를 재실행합니다. 


 자주 쓰이는 명령어는 r, u정도 되겠습니다.


 vi에 익숙하지 못한 사용자는 자주 Ctrl + Z 로 되돌아가려고 할텐데요.


 그때마다 화면이 이상하게 개지기 마련입니다.


 u라는 명령어는 Ctrl + Z와 같은 기능이므로 꼭 기억해주세요! 


 다음은 커멘드 모드에서 패턴을 검색하고 변환하는 명령어입니다.


명령어 

기능 

/string

 현재 화면에서 다음 화면 순으로 단어를 검색합니다. 

?string

 현재 화면에서 이전 화면 순으로 단어를 검색합니다. 

n

 단어를 검색한 상태에서 다음 검색 결과를 확인합니다. 

N

 단어를 검색한 상태에서 이진 검색 결과를 확인합니다. 

:%s/(바꿀 단어)/(새 단어)/g

 찾아 바꾸기 입니다. 


 이 중에서 맨 마지막 찾아 바꾸기에 대해 조금 더 알아보도록할게요.


 만약 line을 line/jul로 바꾸고 싶다면


 :%s/line/line/jul/g 일까요?


 정답은 밑에서 확인해보도록 하겠습니다.



 글씨가 깨져 잘 안보이기 때문에 다시 써드리면


 :%s/line/line\/jul/g 입니다.


 C언어에서 특수문자를 출력하고 싶을 때와 상황을 같게 생각하시면 됩니다.


 \라는 문자를 사용하면 그 뒤 문자는 특수 행동을 하지 않습니다.


 아래는 변환 결과 출력 화면입니다.



 다음은 복사 및 붙여넣기 명령이입니다.


 마우스로 클릭이 되지 않다보니 상당히 불편한데요.


 리눅스에서는 보통 줄 단위로 복사를 하게 됩니다.


명령어 

기능 

yy

 한 줄을 복사하여 임시 버퍼 공간에 저장합니다. 

p

 임시 버퍼 공간에 저장된 텍스트를 커서의 아랫줄에 붙여 넣습니다. 

P

 임시 버퍼 공간에 저장된 텍스트를 커서의 윗줄에 붙여 넣습니다. 

:n,n co n

 n번째 줄부터 n번째 줄까지 복사하여 n번째 줄의 아래에 붙여 넣습니다. 

:n,n m n

 n번째 줄부터 n번째 줄까지 잘라내어 n번째 줄의 아래에 붙여 넣습니다. 


 다음은 라스트 라인 모드에서 저장 및 종료하는 명령어입니다.


명령어 

기능 

:w

 수정한 파일을 저장합니다. 

:w (파일명)

 수정한 파일을 다른 이름으로 저장합니다. 

:wq

 수정한 파일을 저장 후 종료합니다. 

:x

 수정한 파일을 디스크에 저장한 후 종료합니다. 

ZZ

 수정한 파일을 디스크에 저장한 후 종료합니다. 

:q!

 수정한 파일을 저장하지 않고 종료합니다. 


 전부 많이 쓰이는 명령어이므로 잘 외워두세요!


 마지막으로 환경 변수 활성화 및 비활성화 명령어입니다.


 라스트 라인 모드에서 실행할 수 있습니다.



먼저 가장 잘 쓰이는 :set nu 입니다.



 화면에 줄 번호를 출력해줍니다.


 매우 편리한 기능이에요!


 다음은 :set list 입니다.



 이 기능은 아래 화면처럼 숨겨진 기호를 표시해줍니다.


 줄의 끝이나 tab 등을 표시해줍니다.



 다음은 :set showmode 입니다.


 이 명령어는 초기에 미리 설정되어 있습니다.


 아까 위에서 보신 에디트 모드로 들어갔을 때 하단에 INSERT가 보이는 것이 이 때문입니다.



 반대로 :set noshowmode를 해주시면 없앨 수 있어요.


 전 아직 왜 없애는 기능이 있는 지 모르겠습니다.


 저 표시가 있어야만 안심하고 vi를 쓸 수 있다고 믿고 있답니다.



 중요한 명령어만 살펴보았지만 표로 한 번 더 정리해보았습니다.


명령어 

기능 

:set nu

 화면에 줄 번호를 출력합니다.

:set nonu

 화면에 줄 번호를 숨깁니다. 

:set ic

 검색시 대소문자를 구분하지 않습니다. 

:set noic

 검색시 대소문자를 구분합니다. 

:set list

 숨겨진 기호들을 표시합니다. 

:set nolist

 숨겨진 기호들을 표시하지 않습니다.

:set showmode

 vi 편집기의 현재 모드를 표시합니다. 

:set noshowmode

 vi 편집기의 현재 모드를 표시하지 않습니다. 

:set

 vi 편집기의 모든 환경변수를 출력합니다. 

:set all

 vi 편집기의 모든 환경변수를 활성화합니다. 




 여기까지 vi 편집기 명령어에 대한 포스팅이었습니다.


 이 외에도 많은 명령어가 있지만 이정도만 알아두셔도 vi 편집기를 사용하시는 데는 충분할거에요!


 저는 다음에 또 다른 포스팅으로 찾아뵙겠습니다. 

AND

ARTICLE CATEGORY

전체 (115)
블로그 소개 (1)
KITRI 교육 (95)
보안 지식 창고 (16)
한 잔의 여유 (2)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE