노무현 대통령 배너
  김성태의 Tech Tips(Linux, PHP, Apache, DBMS, Mobile)
  http://www.supersky.pe.kr  
안녕하십니까? 김성태입니다.
Linux, Apache, PHP, Mysql, Mobile 관련 Tech Tips 정보를 제공합니다.
 
<<   2007 Feb   >>
S M T W T F S
28293031123
45678910
11121314151617
18192021222324
25262728123
1281725 268
  
  + Article List  :  2007년 2월 (3)
2007/02/08     리눅스 초간단 메뉴얼  (6)
2007/02/08     리눅스 명령어 정리  (8)
2007/02/02     건강 위한 13가지 습관[치실 사용 수명 6년 늘린다]  (6)

DNS Powered by DNSEver.com
  ++ 리눅스 초간단 메뉴얼  -  2007/02/08 14:03

Ⅰ. 리눅스
1. 리눅스의 정의
□ 운영체제란 하드웨어와 응용프로그램 사이에서 응용 프로그램을 그 목적에 맞게 수행하도록 하드웨어를 제어하고 그 처리결과를 다시 응용 프로그램으로 보내는 역할.
□ 리눅스는 유닉스타입의 운영체제로 리누스 토발즈에 의해 그 커널이 최초 개발.
□ 초기에는 서버용 운영체제였으나 현재는 서버/데스크탑용 운용체제로서 각광.

2. 리눅스의 탄생
리눅스가 등장 배경 :  대표적인 서버 운영체제인 유닉스가 개인용 운용체제로 거듭난 것. 1991년 리누스 토발스라는 헬싱키의 대학생이 개인용 PC에서 멀티태스팅을 구현하기 위한 운영체제를 연구하였고, 그 연구결과를 인터넷상에 공개해 수많은 프로그래머들이 새로운 기능을 보강하여 오늘날의 리눅스체제를 만들어 냄.

1) 유닉스의 등장
리눅스의 모태가 되는 유닉스는 다중 사용자와 멀티태스킹 기능을 효과적으로 수행할 수 있는 운영체체를 만들기 위한 프로젝트에 참여한 미국 벨 연구소의 켄 톰슨 (Ken Tompson)에 의해 1969년에 개발.
유닉스는 PDP-7 기종에 맞게 설계된 어셈블리 언어(특정한 기종에서만 사용될 수 있는 언어)였기 때문에 호환성이 없어서 데니스 리치가 개발한 C언어로 다시 쓰이게 됨.
 C언어의 특징은 어셈블리 언어처럼 하드웨어를 직접 통제할 수 있을 뿐만 아니라 특정한 하드웨어에 관계없이 프로그램을 작성할 수 있는 상반된 두 가지 성질을 모두 가지고 있다. 따라서 C언어로 작성된 소스코드는 필요할 때에 이식될 하드웨어 환경에 맞게 다시 컴파일하는 과정을 통해서 다른 기종에서도 사용될 수 있게 됨.

2) 유닉스의 진화
 □ 1969년 버클리 대학에서는 유닉스에 네크워크 기능를 집중적으로 보강하는 연구를 하여 BSD라고 명명함. 통신 기능과의 결합으로 더욱 강력해짐
            □ AT&T에서도 System V개발.

3) 리눅스 탄생
 헬싱키 대학의 리누즈 토발즈(Linus B.Torvalds)가 유닉스의 커널을 PC에서 사용 가능한 커널로 만들어 인터넷에 공개.

4) 리눅스의 발전
리누즈 토발즈가 커널을 개발 : 리눅스의 아버지
Free Software Foundation의 회장인 리챠드 스톨만 : 리눅스의 성자


3. 리눅스의 장단점

 1) 장점
□ 유닉스와 완벽하게 호환 가능
□ 공개 운영체제
□ PC용 OS보다 안정적
□ 리눅스는 무료

□ 하드웨어의 기능의 효율적 사용
□ 강력한 네트워크를 구축
□ 다양한 응용프로그램을 제공
□ 다중작업이 가능합니다.
□ 인터넷의 모든 기능을 지원

 2) 단점
□ 공개운영체제이기 때문에 문제점 발생시 보상받을 수 없다
□ 한글입출력이 어렵습니다.
□ 보안에 취약할 것이라는 선입관
 
4. 리눅스 배포판들
 해외 배포판 : 슬랙웨어 (Slackware), 레드햇 (Red Hat), 데비안 (Debian), 오픈 리눅스(Open Linux), Linux-Mandrake, SuSE-Linux등
 한글 배포판 : K 리눅스, 엑셀 리눅스, 알짜 리눅스, 미지리눅스, 파워리눅스, q리눅스, 와우리눅스, 한컴리눅스

5. 리눅스의 미래
□ 인터넷이용으로 리눅스의 중요성이 더욱 부각
□ 소스코드를 무료로 제공으로 수많은 프로그래머들에 의해 엄청난 속도로 개발

Ⅱ 리눅스 기초
1. 수퍼 유저와 일반 유저
□일반 유저: 보통의 작업을 수행하는 사용자. 시스템 전체에 영향을 주는 조작은 하지 못함. 다른 사용자의 파일변경이 불가능, $ 프롬프트가 나타남.
□수퍼 유저 : 소프트웨어 설치, 디스크 백업, 사용자 등록 등 시스템 전체를 관리하는 사용자. 시스템에 관한 모든 권한을 가짐, # 프롬프트가 나타남.

2. 로그인, 로그아웃
□ 로그인 : 시스템을 사용하는 사람이 누구인가를 시스템에 알리는 작업
           (사용자 명과 패스워드 입력)
□            로그아웃 : 시스템 사용의 종료
           (logout 또는 [ctrl]+D 입력)

3. 명령어 실행
 ex) $ cal
     $ cal -y(올해의 달력 표시)
     $ date
     $ date -u
4. 수퍼 유저로 변경
     $ su
     Password:(패스워드는 표시 안됨)
     #
     # exit
     $
5. 시스템 종료
     # shutdown -h +1 ***Attention***(1분후 메시지 표시하고 종료)
     # halt(시스템 종료)
     # reboot(리부팅)
6. 셀(shell)
   사용자와 커널 사이의 중개 역할


                              
7. 명령어 히스토리
   ↑↓ : 명령어의 히스토리 표시
   ctrl+r : 명령어의 히스토리 검색
   history : 명령어의 히스토리 화면 표시
   ex) his [tab] : 자동 완성 기능
       !9 : 실행 명령 선택
8. 표준 입출력
   < : 표준 입력          > : 표준 출력        >> : 추가 입력
   ex) cat > a.txt    cat >> a.txt    cat < a.txt

9. 복수 명령어 실행 : ;   
    ex) date ; cal

10. 표준 출력을 다른 명령에 연결 :  |
    ex) cal -y | less
        less cal.txt : (페이지 단위로 출력)

* tree 명령 : 디렉토리의 계층적 표시


Ⅲ 파일관리
 리눅스의 디렉토리 구조는 /(루트)라는 디렉토리가 있고 그 아래에 디렉토리가 연결되는 트리(tree)구조를 가지고 있다.

1. 경로명
  1) 절대 경로 : 디렉토리 구조의 최상위 계층인 /에서부터 표기
  2) 상대 경로 : 현재 디렉토리부터 경로명을 지정
2. 현재 디렉토리 확인
   pwd
3. 디렉토리를 이동하는 명령
   cd
   - : 이전의 디렉토리        ~ : 홈 디렉토리
   .. : 바로 윗 단계            . : 현재 디렉토리
  지정안함 : 홈 디렉토리
4. ls
  DOS의 dir과 비슷한 명령어인데, 디렉토리명 등을 출력시키며 옵션에 따라 다양한 정보와 함께 출력된다.
옵션
-a: 디렉토리 내의 모든 파일 출력
-i : 파일의 inode와 함께 출력한다.
-l : 파일 허용 여부, 소유자, 그룹, 크기, 날짜 등을 출력한다.
-m: 파일을 쉼표로 구분하여 가로로 출력한다.
-r : 정렬 옵션이 선택되었을 때, 그 역순으로 출력한다.
-s : KB 단위의 파일 크기를 출력한다.
-t : 최근에 만들어진 파일 순서대로 출력한다.
-x : 파일 순서를 세로로 출력한다.
-F : 파일의 형태와 함께 출력한다.
-R : 서브 디렉토리의 내용을 포함하여 출력한다.
-S : 파일 크기가 큰 순서로 출력한다.
-U : 정렬하여 출력한다.
-1 : 라인당 한 파일씩 출력한다.
--help : 도움말을 화면상에 나타낸다.
--version : 'ls'의 파일 버전과 함께 출력한다.

5. mkdir
  디렉토리 생성
  ls -dl 디렉토리
6. cp
  파일이나 디렉토리 복사
  -r : 디렉토리 전체 복사        -v : 복사전에 파일명 표시

7. mv
  다른 디렉토리로 이동 및 이름 변경

8. rm
  파일이나 디렉토리 삭제
  -f : 강제 삭제         -r : 디렉토리 삭제

9. rmdir : 디렉토리 삭제

* 와일드카드 이용하여 실습 : *

* 참고 : man : manual(도움말)

10. more
   명령어로 한 페이지씩 문서를 보여준다.

11. less
   more와 비슷한 명령어로 한 페이지씩 문서를 보여준다. 문서의 앞으로도 이동이 가능하다.

12. cat
  파일의 모든 내용을 한번에 화면에 나타나게 한다.

13. echo
  주어진 인자를 단순히 화면에 나타나게 한다.

14. grep
  주어진 패턴을 포함하는 파일의 라인을 출력시킨다.
옵션
-C : 일치하는 문장의 상하 두 라인까지 포함하여 출력한다.
-c : 일치하는 라인의 갯수를 출력한다.
-h : 파일명은 출력하지 않는다.
-i : 대소문자 구분하지 않는다.
-l : 일치하는 내용을 가지는 파일명만 출력한다.
-n : 일치하는 내용을 가지는 라인 번호를 출력한다.
-s : 에러 메시지만을 출력한다.
-v : 일치하지 않는 내용을 출력한다.
-x : 전체 라인이 일치해야 출력한다.
예)
rm이라는이름이 들어간 파일을 ls중에서 찾을 때 - ls | grep rm

 

15. find
 원하는 파일을 디렉토리를 탐색하면서 지정된 조건에 만족하는 파일을 찾는다. 이름이나, 크기, 날짜, 사용자등의 조건을 지정하여 찾을 수 있다.
-name : 찾고자 하는 파일의 이름을 정하면 된다.
-perm : 파일의 권한 (permission)이 일치하는 것을 찾는다.
-user : 사용자의 ID에 따라서 검색한다.
-atime : 최근 며칠내에 접속한 파일을 검색한다
-newer : 최근에 갱신된 모든 파일을 검색한다.
예)
maria라는 이름을 가진 파일을 찾으려면, find -name maria

17. mount
  cdrom이나 floppy disk를 사용하게 만들어 준다.
floppy mount : -t msdos /dev/fd0 /mnt/floppy
cdrom mount : mount -t iso9660 /dev/cdrom /mnt/cdrom

18. umount (언마운트; unmount)
 디렉토리와 연결되었던 시디롬이나 플로피 디스크를 분리시켜 주는것을 말한다. 플로피나 시디롬을 다 쓰고 나면 항상 언마운트를 시켜주어야 한다.

19. 리디렉션 (redirection)
- 리디렉션이란 어떤 명령을 실행한 후에 생기는 내용물을 사용자가 원하는 곳으로 출력하기 위해 만들어졌는데 표준 입력, 표준 출력, 에러 출력 등의 방향을 다른 곳으로 바꾸는 것이다.
리디렉션의 기호는 ">"이다. 보통, ">" 을 이용하여 명령의 결과를 파일로 리디렉트시켰을 때 그 파일이 존재해 있었다면 그것을 덮어쓴다. ">>"를 쓰면 파일을 덧붙여 쓰게 된다.

20. 파이프라인
 파이프라는 것은 여러 명령을 함께 사용할 때, 한 명령의 결과가 다른 명령으로 전송되는 통로이다. 명령어를 하나 하나씩 일일이 치지 않고도 한꺼번에 여러가지를 실행할 수 있어 편리하다.
예)
ls화면을 한 페이지씩 출력하려면 ls | more , 중단 하려면 q를 치면 된다.


Ⅳ Process 관리

1. ps ( process )
 현재 진행중인 프로세스에 대한 정보를 출력한다.

2. pstree ( process tree)
 ps 에 의해서 출력되는 프로세스 정보를 트리 형태로 나타낸다.

3. top
 cpu와 메모리를 사용하는 작업들에 대한 시스템 정보를 출력한다.
원래 화면으로 되돌아 가려면 q를 입력한다.

4. arch (architecture)
 현재 사용하고 있는 cpu의 모델을 출력(i686- 인텔 펜티엄)

5. cal (calendar)
 현재의 달을 출력해 주는데, cal과 함께 원하는 월과 연도를 숫자를 입력하면 원하는 달 의 달력을 볼 수 있다.
-j를 입력하면 율리우스달 력을 볼 수 있다.

6. clock
 CMOS 설정 시간을 출력하거나 변경할 수 있다.

7. date
 현재의 시간과 날짜를 출력한다.
 
8. df (disk free)
 하드의 전체 용량 및 남은 용량 볼 때 사용한다.
옵션
-h(human) 사람이 쉽게 알 수 있는 형태인 바이트 단위로 출력한다.

9. du (disk usage)
각각의 디렉토리와 파일들이 차지하고 있는 디스크 용량을 출력한다.
예) temp2 디렉토리가 차지하는 용량을 보려고 할 때, du temp2

10. free (free memory)
 현재 사용중인 시스템의 메모리 상태를 출력한다.
옵션
-m(Megabyte) 메모리의 양을 메가 바이트 단위로 출력한다.
-k (Kilobyte) 메모리의 양을 킬로 바이트 단위로 출력한다.

11. quota
 각각의 사용자들이 사용할 수 있는 디스크의 용량을 나타낸다.

12. uname (unix name)
 사용중인 운영체제에 대한 정보를 출력한다.
옵션
- a(all) 현재 사용중인 운영체제와 커널의 컴파일 정보 등을 출력한다.

13. su
 현 상태에서 다른 사용자로 다시 login한다. 만약 사용자 id를 입력하지 않으면, root로 login 된다.

14. shutdown
 시스템을 종료할 때 일반적으로 사용되는 명령어이다.
옵션
- t n 옵션 t 뒤에 n 초만큼 후에 경고 메시지 후에 kill 신호를 보낸다.
- h (halt) 완전히 닫는다.
- r (reboot) 종료후 재부팅을 한다.
- f (fast) 빠른 리부팅을 한다 .(파일 시스템 검사 생략 )

15. reboot
- 재 부팅 시키는 것을 말한다.
옵션
- q 현재의 실행프로그램을 종료하지 않고 부팅만 다시 시킨다.

16. kill
- 프로세스 종료하기. 현재 실행중인 프로세스를 강제로 종료시키는데 사용
kill signal ID PID
kill -l
옵션
-2 : 실행 중인 프로세스에게 인터럽트 키 신호를 보냄
-9 : 가장 확실하게 실행 중인 프로세스를 종료시킴

17. tty
 현재 사용하고 있는 단말기 장치의 경로명과 파일명을 보여줌

18. whereis
 실제 프로그램이 어떤 디렉토리에 존재하는지 관련된 모든 경로명을 보여줌
예) whereis vi

19. fsck (file system check)
 파일 시스템의 상태가 올바른지 검사하고, 잘못된 것이 있으면 바로 잡는다.
옵션
- a : 검사도중 발견된 에러를 자동적으로 복구한다.
- r : 검사도중 에러가 발견되면 복구 여부를 물어본다.(사실 사용되지 않는다.)
- s : 순차적인 방법으로 검색한다.
- V : 검색 중 각종 정보를 자세하게 보여준다.
- N : 실제로 검사 작업을 하지는 않도록 한다.


Ⅴ 사용자 관리

1. chgrp
 파일의 그룹 소유권을 바꾼다.
옵션
-c : 실제로 소유자가 바뀐 파일에 대해서 자세하게 설명
-f : 소유권을 바꿀 수 없어도 에러 메시지를 나타내지 않는다.
-v : 소유권의 이전에 대해서 자세히 기술한다.
-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.
* 파일의 소유자나 슈퍼 유저만이 파일의 그룹 소유권을 바꿀 권한이 있는데,
chgrp + 옵션 바꾸고자 하는 그룹의 이름+ 디렉토리+ 파일 이름
예) /root그룹에 있는 ak이라는 파일을 white라는 그룹으로 소유권을 이전하려면,
chgrp white /root/ak

2. chmod
 파일의 모드를 바꿀 때 사용하는데 파일의 모드는 권한(permission)을 제어한다.
옵션
-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.
* r(read 읽기), w(write 쓰기), x(execute 실행)의 3가지 권한이 있는데, 각 단위당 2진법으로 표현된다. 따라서 읽기, 쓰기, 실행 등의 모든 권한을 주려면, 4+2+1, 따라서 합계 7이된다.
만약 모든 그룹의 권한을 다 허용해 줄 경우, 777이 된다.
예)
우선 권한을 보기위해, ls -al을 쳐보면 wow 라는 파일이 rw-r--r--로 되어있다는 것을 알 수 있다.
여기서, 첫 번째 3자리는 소유자, 두 번째 3자리는 그룹, 마지막 3자리는 타인에게 허용할 것인지 여부를 보여주는 것이다.
여기서의 소유자는 읽고 쓰기가, 그룹과 타인은 읽기만 허용이 되어있다.
모두가 사용할 수 있게 하려면 777이 된다.
chmod 777 wow

3. chown
 파일의 소유권을 다른 사람에게 변경할 때 사용한다.
옵션
-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.
-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 소유권에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.
파일의 소유권을 다른 사람에게로 바꾸는 것은 슈퍼 유저만이 할 수 있다.
예)
root/에 있는 wow라는 파일을 test라는 그룹으로 소유권을 바꿀 때
chown test /root/wow
ll을 쳐서 소유권이 바뀌었는지 확인해 보면 된다.

5. 시스템의 사용자 정보에 대한 명령어

* finger
 시스템을 사용하고 있는 사용자들의 이름과 주소등 신상 명세를 출력한다.
변경할 때는 chfn(change finger name)을 사용하면 된다.
* id (identification)
- 사용자의 개인 id 와 그룹의 id 번호를 출력한다.
* logname
 로그인해 있는 사용자의 이름을 출력한다.
* uptime
 현재의 시간과 로그인 시간의 총합, 평균적인 시스템 사용 현황을 출력한다.
* w (who is logged on and what they are doing)
 로그인 되어있는 사람과 현재 실행중인 작업의 종류를 출력한다.
* who
 시스템을 사용하고 있는 사용자들의 이름과 터미널 번호, 로그인 시간 출력한다.
* whoami
- 가상 콘솔 기능을 사용하거나 여러명의 사용자로 동시에 로그인해 있을 때, 현재 시스템을 사용하고 있는 자신이 누구인가를 출력한다.
* adduser
 사용자를 추가하기 위한 명령어인데 명령어 뒤에 원하는 사용자 명을 써 넣는다.


Ⅵ Network

[1] ping
Ping은 현재 사용하고 있는 시스템이 네트워크로 연결된 원격지 호스트를 인식하고 있는지를 테스트하여 네트워크로 연결되어 있는지의 여부와 접근할 원격지 호스트가 정상적으로 작동되고 있는지 알아봅니다. 따라서 ping의 중요한 기능은 상대편 네트웍을 테스트 할 수 있다는 것입니다.
현재 보낸 패킷과 받은 패킷사이의 통계치를 보여주면 제대로 실행된 것입니다.

[2]ifconfig
Interface 란 NIC(Network Interface Card)를 세팅하는 것입니다.여기서는 ifconfig유틸러티를 사용하여 어떻게 IP address, netmask, gateway등을 설치하는지를 알보도록 하겠습니다.
우선 한텀에서 다음처럼 입력을 합니다.
ifconfig [interface]
ifconfig interface [atype] options | address...
옵션
up : interface를 활성화 시킵니다
down: interface를 비활성화 시킵니다.
address : [aaa.bbb.ccc.ddd]의 모양을 가집니다.

Ⅶ vi 에디터

[1] 시작
vi의 실행은 한글 환경에서 vi를 입력하면 되고, 콘솔모드에서 한글을 다루려면, han을 먼저 입력한 뒤, vi를 입력하면 됩니다. vi를 실행시키는 방법은 간단합니다. 셸상에서 'vi'라고 입력하고 Enter 키만 누르면 된다. 그러면 새로운 문서를 편집할 수 있는 환경이 만들어집니다.
예) >vi
기존의 문서를 편집하고자 할 때에는 파일의 이름을 구체적으로 명시합니다.
예) >vi file1
지정한 파일의 내용을 읽기 전용으로 열어서 볼 때는 다음과 같이 명시합니다.
예) >vi -R file
>view file
[2] vi의 세가지 모드
① 입력 모드 - i, a, o, I, A, O를 누른 후 텍스트를 입력할 수 있는 상태
② 명령 모드(Esc모드) - ESC키를 누른 상태
③ 콜론 모드(Ex모드) - ESC키를 누르고, :(콜론)을 입력한 상태

그리고, 이러한 기본적인 모드들을 다른 편집기의 활용과 비교해보자면, 다음과 같습니다.

① 입력 모드 - 다른 편집기에서 타이핑을 하여 파일의 내용을 입력하는 과정
② 명령 모드 - 다른 편집기의 편집(Edit) 메뉴에서 제공하는 복사(Copy), 붙이기(Paste),삭제(Delete) 등의 편집 기능의 활용
③ 콜론 모드(ex 모드) - 다른 편집기의 파일(File) 메뉴에서 수행하는 열기(Open), 저장 (Save), 다른 이름으로 저장(Save as) 등의 명령 수행

vi는 실행될 때 명령 모드에서 시작하고, 실행을 종료할 때에는 콜론 모드에서 종료 명령을 수행한다. 또한 vi는 대문자와 소문자 구분을 확실히 해두어야 한다

(1) 입력 모드
- i : Insert, 현재 커서의 위치에 글자를 삽입
- I : Insert, 커서가 있는 줄(line)의 맨 앞에 글자를 삽입
- a : Append, 현재 커서 위치의 다음 칸에 글자를 추가
- A : Append, 커서가 있는 줄(line)의 맨 뒤에 글자를 추가
- o : Open line, 현재의 줄 다음에 새로운 줄을 삽입
- O: Open line, 현재의 줄 앞에 새로운 줄을 삽입
(2) 명령 모드
입력 모드에서 명령 모드로 다시 전환하려면 Esc 키
명령모드는 편집모드라고도 하는데, 글을 입력시키는 방법이 아닌 수정과 편집을 할 수 있는 상태
잘못된 명령을 내렸을 때 'u'라는 명령어를 통해서 Undo, 즉 복구가 가능
(3) 콜론 모드
명령모드에서 콜론 모드로 전환하려면 ':'명령을 실행
[3] 종료
편집한 데이터를 저장하고 종료하려면, wq(Write and Quit)를 입력.
예) :wq
저장하지 않고, 강제로 종료하려면, q!(Quit!)를 입력
예) :q!
vi를 끝내지 않고, 현재 작업 중인 내용을 저장만 하려면, w를 입력
예) :w
[4] 정규표현식의 특수 기호들
- . : 한글자를 대표하는 기호 (dos 의 ? 와 동일)
- * : 여러개의 문자를 동시에 대표하는 기호
- ^ : 줄의 처음시작
- $ : 줄의 맨끝
- % : 처음줄부터 끝줄까지
- [a-z] : a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 를 대표
- [A-Z] : A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 를 대표
- [AB] : A 또는 B
[5] 명령 모드(ESC 모드)에서 사용되는 몇가지 기호
- G : 화일의 맨끝으로
- ^ : 현재줄의 맨앞 (빈칸무시)으로
- 0 : 현재줄의 맨앞으로
- $ : 현재줄의 맨 뒤로
- w : 다음 단어로
- b : 이전 단어로
[6] 커서 움직이기
 명령모드 상태에서 커서를 마음대로 움직일 수 있습니다.
① 글자 단위 이동

- h : 커서를 한칸 왼쪽으로 이동하는 명령
- j : 커서를 한줄 아래로 이동하는 명령
- k : 커서를 한줄 위로 이동하는 명령
- l : 커서를 한칸 오른쪽으로 이동하는 명령
② 줄 단위 이동
- ^ : 빈칸을 무시하고, 커서를 현재 줄의 첫글자로 이동하는 명령
- 0 : 커서를 현재줄의 처음으로 이동하는 명령
- $ : 커서를 현재줄의 맨끝으로 이동하는 명령
- % : 짝을 이루는 기호 확인하기
- + : 커서를 다음줄의 처음으로 이동하는 명령
- - : 커서를 이전 줄의 처음으로 이동하는 명령
- Return : 커서를 다음줄의 처음으로 이동하는 명령
- n| : 현재줄의 n 번째 열로 (n은 임의의 숫자)
- H(Home) : 커서를 화면상에 처음줄로 이동하는 명령
- M(Middle) : 커서를 화면상에 중간줄로 이동하는 명령
- L(Last) : 커서를 화면상의 마지막줄로 이동하는 명령
- nH : 화면상의 처음줄로부터 n 줄 밑으로 이동(n은 임의의 숫자)
- nL : 화면상의 마지막줄로부터 n 줄 위로(n은 임의의 숫자)
- gg : 맨 마지막줄로
- n : n 번째줄로
③ 단어 단위 이동 - w(word) : 커서를 다음단어의 첫글자로 이동하는 명령
- b(back) : 커서를 이전단어의 첫글자로 이동하는 명령
- e(end) : 커서를 다음단어의 끝 글자로 이동하는 명령
- E : ?, ! 등 구두점을 무시하고, 현재 단어의 끝으로 이동
④ 화면단위 이동
- Control + F (Forward) : 한화면 밑으로 이동
- Control + B (Backward) : 한화면 위로 이동
- Control + D (Down) : 반쪽화면 밑으로 이동
- Control + U (Upon) : 반쪽화면 위로 이동
- Control + L : 화면 재표시 (글자가 깨졌을 경우; 윈도의 F5와 비슷)
- Control + R(edraw) : 화면 재표시 (글자가 깨졌을경우)
[7] 편집하기
① 복사, 붙이기, 합치기
- y (Yank) : 복사하기
- yy : 한 줄 전체의 내용을 복사한다
- y$ : 현재 위치에서 그 줄의 끝까지 복사한다
- yG : 현재 위치에서 파일의 끝까지 복사한다(G는 파일의 마지막 줄)
- p (Put or Paste) : 붙이기
- np : n번만큼 p 명령을 반복. 2p라면 버퍼의 내용을 두 번 붙여넣는다
- P : 위로(왼쪽으로) 붙이기

② 지우기, 복구하기, 바꾸기
- d$ : 커서가 있는 위치에서 그 줄의 끝까지 지우기
- D : 커서부터 줄의 끝까지 삭제합니다. (d$ 와 동일)
- d (Delete) : 지우기

- dd : 현재커서가 위치한 줄의 전체를 삭제합니다.
- ndd : n줄지우기 (n 은 임의의숫자)
- dw : 한단어 지우기
- d move : 커서가 위치한 곳부터 move까지 삭제
- u (Undo) : 되살리기 명령으로 버퍼에 저장되어 있는 원래의 내용을 복구
- 2u : 두번복구하기
- c (Change) : 바꾸기
- cw : 한단어 바꾸기
- r (Replace) : 한글자 바꾸기
- R : 바꾸면서 삽입이 아닌 수정(modify) 모드로 들어간다. 윈도에서 Insert 키를 누르고 수정 상태로 들어가는 것과 같다
[9] 찾기
- /요 : 현재 위치에서 아래쪽 방향으로 '요'라는 단어를 찾는다
- ?요 : 현재 위치에서 위쪽 방향으로 '요'라는 단어를 찾는다
[10] 편집모드 지정하기
- i : insert 현재커서위치
- I : 현재커서가 위치한 줄의 맨처음에
- a : append 현재커서위치 바로 다음에
- A : 현재커서가 위치한 줄의 맨끝에
- o : open 현재커서위치 바로 아래줄에
- O : Open 현재커서위치 바로 윗줄에

[12] 버퍼 이용하기
- "xyy : x 라는 이름의 버퍼에 한줄 복사 하기
- "xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기
- := : 현재 줄번호 보여주기
- :/pattern/ = pattern 이 위치한 줄번호 보여주기

[13] ex 명령어 익히기
① ex 명령어의 기본형식
예)
- :1,10 co 50 : 1 줄 부터 10 줄 까지를 50 줄 이후로 복사
- :34,50 d : 34 줄 부터 50 줄 까지 삭제
- :100,150 m 10 : 100 줄 부터 150 줄까지를 10 줄 이후로 옮김
- :.,$ d : 현재줄부터 끝까지 지우기
- :/pattern/ d : pattern 이 들어있는 줄 지우기
② g 옵션 붙여 문서전체에 적용하기
- :g/리눅스 : 파일 전체에서 '리눅스'가 있는 마지막 줄로 이동한다
- :g/리눅스/ p : 파일 전체에서 '리눅스'가 있는 줄을 보여준다
- :g/리눅스/ nu : 파일 전체에서 '리눅스'가 있는 줄을 번호와 함께 보여준다
- :60,100 g/리눅스/ p : 60~100줄 사이에서 '리눅스'가 있는 줄을 보여준다
- :g/리눅스/d : 문서 전체에서 '리눅스'가 있는 줄을 제거한다
③ 저장 및 종료하기
- :w : 저장하기 (write)
- :q : 종료하기 (quit)

- :wq : 저장하고 종료하기
- :w! : 강제로 저장하기 (read-only 로 열었을경우)
- :q! : 편집한 내용을 저장하지 않고 종료하기
- :w new_file_name : 새로운 파일이름으로 저장하기
- :230,$ w file_name : 230 줄부터 끝줄까지 file_name 으로 저장하기
- :.,600 w file_name : 현재줄부터 600줄까지 file_name 으로 저장하기
- :340,$ w >> new_file : 340줄부터 끝줄까지 new_file 에 추가하기

[14] 쉘 명령실행
- :!! : vi를 중단하고 이전의 셸 명령을 실행
- :sh : vi를 중단하고 셸을 실행
- :!csh : vi를 중단하고 새로운 C쉘을 실행
[19] 패턴에 의한 치환
- :s/pattern/replace/ : 현재 줄을 치환한다
- :lines/pattern/replace/ : 지정한 줄을 치환한다
- :line,lines/pattern/replace/ : 지정한 범위를 모두 치환한다
- :%s/pattern/replace/ : 모든 줄을 치환한다







      << prev     1  2  3     next >>