유돌이

calendar

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

Notice

2008. 12. 20. 22:03 PHP/Java Script/html

vi 사용법 익히기

1. 유닉스 편집기

1) 종류

- 행 단위 편집기 : ed, ex, sed
- 화면 단위 편집기 : vi, 이맥스

2) 모드형과 비모드형 편집기

: vi(모드형), 이맥스(비모드형)

2. vi 사용 방법(vi는 캘리포니아 대학에서 '빌조이'가 개발)
1) vi의 동작 모도

- 명령모드 : 입력한 키들은 커서 이동이나 화면 이동 같은 명령으로 해석되어 실행
- 입력모드 : 입력한 키들은 보통의 편집기처럼 내용으로 입력
- 마지막 행 모드 : 화면의 가장 하단으로 커서가 이동해 특별한 명령들을 사용할 수 있는 모드


2) vi의 시작과 종료

- vi 시작하기 : vi [파일명] ( 파일을 열거나 새로운 파일을 생성 )

- vi 종료하고 파일 저장하기
a. ':q' : 종료하기(작업한 것이 없을때)
b. ':q!' : 강제종료(작업한 것을 저장하지 않고 종료)
c. ':w [파일명]' : 저장, 파일명을 적어주면 새 파일로 저장
d. ':wq, wq!' : 작업 내용을 저장하고 종료
e. 'ZZ(shift+zz)' : 작업 내용을 저장하고 종료

3) 입력 모드로 전환

- i : 현재 커서 위치에 삽입
- a : 현재 커서 위치 다음에 삽입
- o : 현재 커서가 위치한 줄의 아랫줄에 삽입
- I : 현재 커서가 위치한 줄의 제일 앞에 삽입
- A : 현재 커서가 위치한 줄의 제일 뒤에 삽입
- O : 현재 커서가 위치한 줄 위에 삽입
※ ESC : 명령모드로 재전환

4) 커서 및 화면 이동

- k : 위로 이동
- j : 아래로 이동
- l : 오른쪽으로 이동
- h : 왼쪽으로 이동
- ^ 또느 0: 라인의 첫 문자로 이동
- $ : 라인의 맨 끝으로 이동
- - : 앞 라인의 첫문자로 이동
- +  또는 enter키 : 다음 라인의 첫문자로 이동
- H : 화면의 첫 라인으로 이동
- M : 화면의 중간으로 이동
- L : 화면의 끝라인으로 이동
- w : 다음 단어의 처음으로 이동
- b : 한 단어 앞으로 이동
- e : 한 단어 뒤로 이동

5) 화면 이동하기

- ctrl+u : 반 화면 위로 이동
- ctrl+d : 반 화면 아래로 이동
- ctrl+b : 한 화면 위로 이동
- ctrl+f : 한 화면 아래로 이동
- ctrl+y : 한 행만 위로 이동
- ctrl+e : 한 행만 아래로 이동
- G : 제일 끝줄로 이동
- 'n'G : n번째 행으로 이동

6) 수정 및 삭제

- 수정
r : 현재 위치의 문자를 바꾼다.
cw : 현재 위치의 단어를 바꾼다.
'n'cw : 현재 위치부터 'n'개의 단어를 바꾼다.
s : 현재 위치부터 단의 끝까지 수정
'n's : 수정할 문자의 수를 'n'으로 지정
cc : 현재 커서가 위치한 줄을 바꾼다.      
C  : 현재 커서가 위치한 곳으로부터 줄의 끝까지 바꾼다.

- 삭제
x : 현재 커서 위치의 문자를 지운다.
'n'x : 삭제할 문자 수 지정해서 지운다.
dd : 현재 커서가 위치한 줄을 지운다. (단어 뒤의 스페이스 포함)
'n'dd : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 지운다.
dw : 현재 커서가 위치한 단어를 지운다.
'n'dw : 현재 커서가 위치한 단어로 부터 뒤로 n개 만큼의 단어를 지운다.
u : 이전의 수행한 명령 취소한다.
U : 해당 행에서 실행한 명령을 모두 취소한다.
:e! : 마지막으로 저장한 내영 이후의 것을 버리고 새로 작업한다.

7) vi 편집 기능

- 복사하기/ 붙이기/ 잘라내기
yy  : 현재 커서가 위치한 줄을 버퍼에 복사한다.
'n'yy : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 버퍼에 복사한다.
p : 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 아래에 붙인다.
P : 버퍼에 들어 있는 내용을 현재 커서가 위치한 줄의 위에 붙인다.
dd : 현재 커서가 위치한 줄을 잘라둔다.
'n'dd : 잘라둘 행의 수를 지정한다.

- 마지막 행 모드에서 복사하기와 잘라내기
1, $또는% : 1행부터 마지막 행까지 지정한다.
.-3 : 현재 행부터 3번째 행가지 지정한다.
10, 20 : 10번째 행에서 20번째 행까지 지정한다.
Y : 현재 커서가 위치한 줄을 버퍼에 복사한다.
'n'Y  : 현재 커서가 위치한 줄에서 아래로 n개 만큼의 줄을 버퍼에 복사한다.


- 검색하기/바꾸기
/문자열 : 문자열의 아래 방향으로 검색한다.
?문자열 : 문자열의 위 방향으로 검색한다.     
n : 찾는 문자열의 다음을 찾는다.
N : n의 역방향으러 찾는다.
:s/문자열1/문자열2/ : 커서가 위차한 행의 첫번째 문자열1을 문자열2로 바꾼다.
:'n's/문자열1/문자열2/ : 'n'안에 모든 행에 대해서 각행의 첫 번째 문자열1을 찾아 문자열2로 바꾼다.

8) 기타 유용한 명령키
- :r 파일명: 지정한 파일을 읽어 현재 커서 위치로 삽입한다.
- :e 파일명: 지정한 파일로 전환한다.(기존 파일을 :w 저장한 후 실행)
- :n : 여러 파일 실행 시, 다음 파일로 작업을 이동
- :! 쉘명령 : vi작업을 잠시 중단하고 쉘 명령을 실행(enter키를 누르면 vi로 이동)
- :sh : vi작업을 잠시 빠져 나가서 쉘 명령을 실행(exit 명령을 입력하면 vi로 이동)
- ctrl+l : 화면을 다시 출력한다.
- ctrl+g : 현재 행을 마지막 행에 출력한다.
- shift+J : 현재 행과 아래 행을 연결하여 하나의 행으로 만든다.

9) 버퍼의 사용
- 언네임드 버퍼 : 한번에 하나씩만 저장
- 네임드 버퍼 : 버퍼별로 다른 값을 저장("a", "b", "c"..)
- 숫자 버퍼("1", "2", "3"..)
 
3. vi의 환경설정 (마지막행 모드에서 실행)

1) :set 
       => 여러가지 환경 변수를 설정한다.

2) :set all
       =>하면 현재 설정되어 있는 환경변수를 보여준다.

2) :set nu
       => 행의 앞에 행번호를 표시한다. ':set number'와 같다.

3) :set nonu
       => 행의 앞에 붙은 행번호 표시를 없앤다.

4) :set list
       => 눈에 보이지 않는 특수문자를 표시한다.

5) :set nolist
       => 특수문자를 감춘다.

6) :set showmode
       => 현재 모드를 표시한다. 

7) :set noshowmode
       => 현재 모드를 감춘다.


파일 사용 권한 관리하기

1. 파일의 속성 (R:읽고 W:쓰거 X:실행)

1) 파일의 종류

- file 명령 : 지정한 파일의 종류를 알려준다. (file /etc/admin)
- groups 명령 : 사용자가 속한 그룹을 알려준다. (groups [사용자명])

2) 파일의 사용 권한

- 사용 권한의 종류 : 읽기, 쓰기, 실행
- 사용 권한 표기 방법 : 읽기(r), 쓰기(w), 실행(x)

3) 기호를 이용한 파일 사용 권한 변경

- chmod 명령 : 파일이나 디렉토리의 사용 권한을 변경 (chmod [옵션])
※ -R(옵션) : 하위 디렉토리까지 모두 변경

- 기호 모드를 이용한 권한 변경 (사용자 카테고리, 연산자, 권한으로 구성)
a. 사용자 카테고리 : u(파일 소유자), g(소유자가 속한 그룹), o(소유자와 그룹 이외의 기타 사용자), a(전제 모든 사용자)
b. 연산자 : +(권한부여), -(권한제거), =(사용 권한 설정)
c. 권한 : 읽기(r), 쓰기(w), 실행(x)

4) 숫자를 이용한 파일 사용 권한 변경

- 8진수로 환산한기
a. rwx -> 7 -> 읽기, 쓰기, 실행
b. rw- -> 6 -> 읽기, 쓰기
c. r-x -> 5 -> 읽기, 실행
d. r-- -> 4 -> 읽기
e. -wx -> 3 -> 쓰기, 실행
f. -w- -> 2 -> 쓰기
g. --x -> 1 -> 실행
h. --- -> 0 -> 권한 없음

※ 숫자가 클수록 권한이 많아진다.

5) 기본 사용 권한의 설정

- umask 명령 : 기본 사용 권한을 출력하거나 변경(umask [마스크값])

-마스크 값이란?(022) : 파일이나 디렉토리의 사용 권한을 XOR에 적용한 것


posted by 유돌이