vim_명령어_정리.pdf



- 여러 종류의 편집기들

gedit : Xwindow 에서 사용하는 편집기

pico

nano

emacs : 프로그래머(?)     

vi : 


- vi 로 할 수 있는 것들

1. 프로그래밍

- C, shell, python, perl, php, 프로그래밍 언어

2. 서버의 설정파일을 변경

- 설정파일이 모두 text 형태의 파일로 되어있다.


- 확장된 vi(vim) 패키지 설치하기

# yum -y install vim-enhanced


- 확장된 vi인 vim  

# which vim

/usr/bin/vim


- 기본적인 vi 

# which vi

/bin/vi


- 간단한 vim 실행하기

# vim


F1 


- 사용법 alias 새로운명령어='기존명령어'


# alias vi='vim'

# alias

  :

  :

alias vi='vim'


- vi의 alias를 계속 유지하고 싶다면 로그인시 실행되는 스크립트인

  .bashrc에 내용을 넣으면 된다.

# vi .bashrc

-- .bashrc --

  :

alias vi='vim'

  :

-- .bashrc --


- text를 보는 여러가지 명령어들 

less, more

head,tail

cat, tac

vi, view


- vi 옵션 설정하기 

- vi -> :set all 전체 옵션을 확인할 수 있다.

- $HOME : 자신의 홈디렉토리를 의미한다.

- vi를 실행하면 아래 설정파일에 세팅된 내용대로 실행된다.

설정파일 위치 : $HOME/.vimrc 


옵션의 형식 : 

첫 번째 : set 옵션명(on), set no옵션명(off)

두 번째 : set 옵션명=값

- on/off 두 가지만 있을 때 

옵션 : on

no옵션 : off

set 옵션 : 현재 옵션을 활성화 시킨다.


-- .vimrc --

set nu

set ai

set ci

set bg=dark

set sw=2

set ts=2

-- .vimrc --


바이너리 : cat 으로 볼 수 없다.  hexdump, xxd, objdump, strings


- vi 를 실행하는 방법

1. 그냥 명령어를 실행하는 방법 : vi 

2. 파일명을 주고 명령어를 실행하는 방법 : vi 파일명


명령의 도움말을 확인하기 위해서는 

man 명령어 

명령어 --help  or -h

       ~~~~~~


ex) man ls, man vi

ex) ls --help, vi --help


- vi를 실행하고 아래 명령을 사용한다.

:set     <-- 현재 설정된 옵션을 출력한다.

:set all <-- 모든 옵션을 출력한다.


:set number 

:set



ex) set number , set nonumber

    set ts=8, set ts=10, set ts=2

    

*** 구글가서 set 옵션을 검색 ***


=======================================================================

LAB> 언어설정 테스트 


Xshell : 기본언어 선택

# LANG=ko_KR.eucKR

# vi eucKR.txt

-- eucKR.txt --

안녕하세요....

-- eucKR.txt --

# file eucKR.txt 

eucKR.txt: ISO-8859 text

# cat eucKR.txt 

안녕하세요....



Xshell : 유니코드 선택

# cat eucKR.txt 

¾??¼¼¿?..


# LANG=ko_KR.utf-8

# vi utf-8.txt 

-- utf-8.txt --

안녕하세요....

-- utf-8.txt --

# file utf-8.txt 

utf-8.txt: UTF-8 Unicode text

# cat utf-8.txt 

안녕하세요....


Xshell : 기본언어 선택

# LANG=ko_KR.eucKR

# cat utf-8.txt 

???????몄??....



-- /etc/sysconfig/i18n --

# cat /etc/sysconfig/i18n 

#LANG="en_US.UTF-8"

LANG="ko_KR.utf-8"

SYSFONT="latarcyrheb-sun16"

-- /etc/sysconfig/i18n --

=======================================================================


***** 조합 *****

키를 누르면 두 가지 종류의 키가 있다.

첫 번째 키 : 키를 누르는 순간 바로 동작하는 키

두 번째 키 : 키를 누르는 순간 사용자에게 한번 더 입력을 받는 키


숫자 : 반복하는 키 5j , 5W ...

d    : 삭제만 dd, dw, 3dW, d3W

c    : 삭제와 입력 cc, cw, 3cW

y    : 복사 yy p 

f    : 한 줄에서 한 문자를 찾을 때 사용  2fo, fk  

g    : 이동 gg G


1. 바로 반응 O (x,w,j ...)

2. 바로 반응 X (숫자, d, c, f, s, y, ^w ...)

***** 조합 *****


이동키 + 삭제키

이동키 + 복사키


현재 라인에서 아래쪽으로 3줄을 복사한 후 붙여넣기를 한다.

- 3yy p   y3yp

현재 커서 위치에서 3단어를 복사한 후 아무곳에 붙여넣기를 한다.

- 3yW p  y3W p

현재 라인을 10번 복사한 후 아무곳에 붙여넣기를 한다.

- yy 10p

현재 라인을 한 줄 짤라내서 아무곳에 붙여넣기를 한다. (한 줄 이동)

- dd  p


현재 문서 내용을 몽땅 삭제한다. (g를 이용)

- ggdG, Gdgg


10번 라인으로 위치

- 10gg, 10G  

10번 라인부터 30번 라인까지 삭제한다.

- d30G d30gg


복사

- yw -> p, P

- yy -> p, P


hello.txt 파일을 저장


# LANG=C

# vi 

-----

안녕하세요.

좋은 아침입니다

-----


ESC -> :wq hello.txt 

ESC -> :w hello.txt  -> :q



단일창에서 hello.txt 파일 불러오기 

# vi


:e hello.txt



다중창에서 hello.txt 파일 불러오기 

# vi


:new hello.txt  -> :qa!


hello.txt 파일에 내용 추가하기

# vi

Hi...

Good Morning!!!


:w >> hello.txt -> :q!



# cat hello.txt




- /etc/DIR_COLORS 를 복사해서 vi 연습하기


# cp /etc/DIR_COLORS .

# rdate -s time.bora.net

# date

# cmp DIR_COLORS /etc/DIR_COLORS

# diff DIR_COLORS /etc/DIR_COLORS


# vi DIR_COLORS


-  서버의 설정파일을 vi 로 수정하기


# netstat -nltp | grep ssh

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2232/sshd        


# vi /etc/ssh/sshd_config 

-- /etc/ssh/sshd_config --

  :

  :

Port 22          

Port 2200

  :

  :

-- /etc/ssh/sshd_config --


x -> o -> Port 2200 추가 -> :wq -> ssh restart


# /etc/init.d/sshd restart

# netstat -nltp | grep ssh

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      8053/sshd           

tcp        0      0 0.0.0.0:2200                0.0.0.0:*                   LISTEN      8053/sshd   


검색 


- 한 라인에서 검색하기 (f)


---> 정방향 찾기

f_ <- 찾을 문자 

fr : 현재 행에서 r 을 찾아서 이동한다.  ; (다음 찾기)  , (이전 찾기)


<--- 역방향 찾기

F_ <- 찾을 문자 

Fr : 현재 행에서 r 을 찾아서 이동한다.  ; (다음 찾기)  , (이전 찾기)


- 문서 전체에서 검색하기 (/)

/찾을단어


---> 정방향 찾기 (/)

n(소) : 정방향으로 다음 찾기

N(대) : 역방향으로 다음 찾기


ex) /TERM  n  N


<--- 역방향 찾기 (?)

n(소) : 정방향으로 다음 찾기

N(대) : 역방향으로 다음 찾기


ex) ?TERM  n  N




- 두 줄 삭제

d2d 2dd dj


- 복사/붙히기 (YP)

Y, yy, 1yy, y1y  


- 현재 커서의 위치에서 두 줄 복사해서 15라인에 붙히기를 하시오.

2Y14Gp

2yy15GP


- 이동/붙히기 (dP)

- 현재 커서의 위치에서 두 줄 삭제하고 15라인에 붙히기를 하면 이동된다.

2dd15GP


- 블럭잡기

v(소) : 문자 단위

V(대) : 라인 단위

^v    : 행 단위


- 한 줄 복사/붙히기

Vy10GP

 

- 한 줄 이동/붙히기

Vd20GP


- 세 단어 복사/붙히기

v3Wy10GP


- 3 행의 한 단어 블럭 삭제

^ve3jd


- 탭 한 칸 삽입

V>


- 탭 열 칸 삽입

V10>





c^ : 현재 커서에서 왼쪽을 삭제하고 입력 상태로 변경한다.

c$, C : 현재 커서에서 오른쪽을 삭제하고 입력 상태로 변경한다.

s, cc : 한 줄을 삭제하고 입력 상태로 변경한다.


문서 전체를 모두 삭제한다.

ggdG, 1GdG, Gd1G, G1dG, Gdgg



o 단어 치환

형식 : :범위s/찾을단어/바꿀단어/옵션


- 전체 문서에서 tty를 TTY 로 변경한다.

:%s/tty/TTY/g


- 1 라인부터 30 라인까지 tty를 TTY 로 변경한다.

:1,30s/tty/TTY


- 현재 라인에 tty를 TTY 로 변경한다.

:s/tty/TTY


- 범위 지정을 이용해서 복사나 이동 삭제를 할 수 있다.

:범위 키워드 라인번호


:6,9 del

:6,9 copy 0

:6,9 move 0


- 전체 문서를 삭제한다.

:% del  or :%d



- 현재 행의 첫 번째 TERM을 term 으로 변경한다.

:s/TERM/term


- 현재 행의 모든 TERM을 term 으로 변경한다.

:s/TERM/term/g



- 현재 행의 모든 TERM을 term 으로 확인하면서 변경한다.

:s/TERM/term/gc


- 전체 문서에서 TERM을 term 으로 확인하면서 변경한다.

:%s/TERM/term/gc


- 블럭이 지정되어 있는 곳의 모든 TERM을 term 으로 변경한다.

V 를 눌러서 블럭을 지정한 후 : 를 입력한다.

:'<,'>s/TERM/term/g



- 다중창

:new 

:new /etc/passwd 

:new /etc/fstab


Ctrl + w + w : 창 이동


Ctrl + w + j : 아래로 이동 

Ctrl + w + k : 위로 이동 


2 + Ctrl + w + k  : 두 칸 위로 이동 

Ctrl + w + 2 + k  : 두 칸 위로 이동 


Ctrl + w + 5 + +  : 창을 5 칸 늘린다.


^w_  : 커서가 있는 창을 최대로 늘린다.

^w=  : 창을 모두 동일하게 한다.



:qa! : 여러개의 창을 저장하지 않고 종료한다.




~  : 대/소 문자를 전환한다.

10~



r바꿀문자 : 


R : 수정모드

<- : 수정했던 것을 복구하는 키


^a : 1 증가

^x : 1 감소



:!명령어실행


:!ls -ld /   <-- /bin/ls 실행

:!bash       <-- /bin/bash

:!sh         <-- /bin/bash



/

?

*

f

F


보안툴 설치

다운로드 : http://sourceforge.net/projects/sentrytools/

파일명 : portsentry-1.2.tar.gz


- 파일을 압축해제 하고 디렉토리로 이동한다.

# tar xzf portsentry-1.2.tar.gz 

# cd portsentry_beta


# vi ~/.vimrc

-- ~/.vimrc --

  :

set fdm=marker

-- ~/.vimrc --


# vi portsentry.c

-- portsentry.c --

  :

  :                /main

int                /{ v]}zf n v]}zf n 

main (int argc, char *argv[])

{ /*{{{*/  <-- ]}       v]}zf  zo zc

  :

  :

} /*}}}*/  <-- [{

-- portsentry.c --



- 도움말에 관련된 내용을 확인할 때 사용한다.


:help zf 

:help D


F1 

:set mouse=a   vi 에서 마우스 활성화 하기

:set mouse=    vi 에서 마우스 비활성화 하기


|....|

 ~~~~

  ^] --> ^t



o map 기능 사용하기


<Esc>                  ESC 키

<CR>                   엔터키 (Carriaga retrun)

<C-A>                  Ctrl+A

<A-A>                  Art+A

<S-A>                 Shift+A

<F1>                   F1키

<Home>                Home 키

<End>                 End 키




o vi 에서 F2 번의 기능키를 등록한다.


map <F2> :w<CR> :!gcc -o %< % <CR> ;  ./%< <CR>


vi 파일명  -> 현재 디렉토리에 .파일명.swp 파일이 생성된다.


===================================================================

LAB> vi 에서 swap 파일이 생겼을 때 복구하는 방법


o swap 파일의 문제점


*** 웹페이지에서 swap 파일은 보안상 문제가 발생될 수 있으므로  ***

*** 홈페이지 운영시 웹페이지가 있는 디렉토리에서 swap 파일이  ***

*** 있는지 find 명령어로 반드시 점검해야 한다. ***

*** 사용법 : find <디렉토리명> -name "swap 파일명" 옵션


swap 파일의 형식 : .파일명.swp


# vi test.txt

-- test.txt --

  :

  :


:!ls -l .test.txt.swp

:wq

-- test.txt --


-rw------- 1 root root 12288 Oct 24 01:44 .test.txt.swp


# ls -l test.txt 

-rw-r--r-- 1 root root 73 Oct 24 01:45 test.txt


- swp 파일이 없다

# ls -l .test.txt.swp

ls: .test.txt.swp: No such file or directory


# vi test.txt

E325: ATTENTION

Found a swap file by the name ".test.txt.swp"

          owned by: root   dated: Fri Oct 24 01:48:40 2014

         file name: ~root/test.txt

          modified: YES

         user name: root   host name: localhost.localdomain

        process ID: 14265

While opening file "test.txt"

             dated: Fri Oct 24 01:45:18 2014


(1) Another program may be editing the same file.

    If this is the case, be careful not to end up with two

    different instances of the same file when making changes.

    Quit, or continue with caution.


(2) An edit session for this file crashed.

    If this is the case, use ":recover" or "vim -r test.txt"

    to recover the changes (see ":help recovery").

    If you did this already, delete the swap file ".test.txt.swp"

    to avoid this message.


Swap file ".test.txt.swp" already exists!

[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:


r -> :w -> rm -f .test.txt.swp 

     ~~~

     1. 저장 O : :wq -> swap 파일을 삭제

     2. 저장 X : :q! -> swap 파일을 삭제

     만약에 swap 파일을 삭제하지 않고 다시 test.txt 파일을 열면

     .test.swo 파일이 만들어진다.

     -rw-r--r-- 1 root root 12288 Oct 24 01:59 .test.txt.swn

     -rw-r--r-- 1 root root 12288 Oct 24 01:58 .test.txt.swo

     -rw-r--r-- 1 root root 12288 Oct 24 01:55 .test.txt.swp


# find -name "*.sw*" -ls

575459   16 -rw-r--r--   1 root     root        12288 Oct 24 01:55 ./.test.txt.swp

575517   16 -rw-r--r--   1 root     root        12288 Oct 24 01:58 ./.test.txt.swo


===================================================================


'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] 13. 사용자관리  (0) 2016.07.10
[CentOS] 12. HDD 추가하기  (0) 2016.07.10
[CentOS] 10-2. suidtest  (0) 2016.07.10
[CentOS] 10-1. suidtest  (0) 2016.07.10
[CentOS] 9. 환경변수 테스트  (0) 2016.07.10

+ Recent posts