레이블이 OS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 OS인 게시물을 표시합니다. 모든 게시물 표시

2010년 2월 8일 월요일

bat 파일 명령어

 

 배치파일 연산자  정의
 %  명령어줄 매개변수 접두사
 /  명령어 옵션 플래그
 ₩  디렉토리 패스 구분자
 ==  문자열비교, 같음
 !==!  문자열비교, 다름
 |  파이프, 또는
 @  현재 명령어를 출력(echo)하지 말것
 *  파일명, 와일드카드
 >  파일 재지향 (덮어쓰기)
 >>  파일 재지향 (덧붙여쓰기)
 <  표준입력 재지향
 %VAR%  환경 변수
 REM  주석
 NOT  뒤에 나오는 명령어 부정
 NUL  명령어 출력 없애기
 ECHO  화면출력
 ECHO.  화면출력(빈줄하나)
 ECHO OFF  다음에 나오는 명령어를 화면출력하지 말것.
 FOR %%VAR IN (LIST) DO  루프
 :LABEL  라벨
 GOTO  지정된 곳으로 건너뜀
 PAUSE  잠시 멈춤
 CHOISE  메뉴 선택
 IF  조건문
 IF EXIT filename  파일이 존재하는지 확인
 IF !%N==!  변경 가능한 매개변수인 N이 없다면...
 CALL  다른 스크립을 호출
 COMMAND /C  다른 스크립을 호출
 SET  환경 변수를 세트
 SHIFT  명령어줄 변수 목록을 왼쪽으로 이동
 SGN  부호(정수)
 ERRORLEVEL  종료 상태
 CON  콘솔(표준입력)
 PRN  프린터 디바이스 (일반)
 LP1  프린터 디바이스 (LP)
 COM1  시리얼 포트 디바이스

 

명령어

 명령어  정의
 ASSIGN  파일 디렉토리 링크
 ATTRIB  파일 퍼미션 변경
 CD  디렉토리 변경
 CHDIR  디렉토리 변경
 CLS  출력화면 깨끗이
 COMP  파일비교
 CLS  출력화면 지우기
 Ctl - C  정지
 Ctl - Z  끝(EOF)
 DEL  삭제
 DELTREE  하위모두 삭제
 DIR  디렉토리 보이기
 ERASE  파일삭제
 EXIT  프로세스 종료
 FC  파일비교
 FIND  찾기
 MD  디렉토리 생성
 MKDIR  디렉토리 생성
 MORE  텍스트 파일 쪽단위 필터
 MOVE  이동
 PATH  경로
 REN  이름바꾸기
 RENAME  이름바꾸기
 RD  디렉토리 삭제
 RMDIR  디렉토리 삭제
 SORT  파일 정렬
 TIME  시스템 시간 보여주기
 TYPE  파일을 출력
 XCOPY  파일복사(확장)

 

참고주소 :  http://kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/dosbatch.html

[DOS 배치] echo off 명령어

## @echo off

 

 

배치파일(Batch File)의 첫 부분에는 거의 모두
@echo off
이런 부분이 있습니다.

 

@echo off 는, 배치 파일이 명령들을 쓸데없이 '복창'하지 않도록 만들어서, 화면을 간결하게 하기 위한 명령입니다.

배치 파일 안에는 수많은 명령어들이 있습니다. 배치 파일이 그 명령어들을 하나 실행시킬 때마다, 그 명령어들 자체도 화면에 출력한다면 산만해지게 됩니다. echo off 는 명령어의 결과만을 출력하라는 명령입니다.

그런데 echo off 자체도 하나의 명령이기 때문에, 이 echo off 명령 자체가 화면에 쓸데없이 출력됩니다.

배치 파일에서는, 어떤 명령어 앞에 골뱅이(@)를 하나 붙이면 그 명령어에 대해 '복창'하지 말라는 의미이기 때문에, @echo off 라고 하면 이제, 완벽하게 모든 복창을 금지시킬 수 있습니다.

 

@echo off 와 @echo on
배치 파일의 첫 줄에 항상 @echo off 를 추가하는 것이 좋습니다.
그런데 드문 경우지만, 명령어의 복창이 필요할 때가 있습니다.
그럴 때는 복창이 필요한 부분에 @echo on 을 간단히 추가하면 됩니다. (OFF가 아닌 ON 입니다.) 복창의 필요성이 없는 부분에서는 다시 @echo off 를 추가하면 됩니다.


즉 @echo off 와 @echo on 은, 배치 파일의 꼭 첫줄에 있지 않아도 되고, 필요한 부분에 마음껏 추가하여 에코를 켜고 끌 수 있습니다.

 

도스명령어

(2) 도스 명령어

기본 명령어

 CLS 명령
     : CLS는 현재 화면에 나타난 내용을 지우는 명령이다.
 
 
<일반 형식>  CLS -> Enter
   (화면상에 나타난 내용이 지워지고, 커서가 화면 위쪽으로 옮겨져 간다.)
 
 
DIR 명령
     : DIR은 현재 사용 중이거나 지정한 디스크에 저장된 파일과 디렉터리 목록을 화면에
       출력하는 명령이다.

   < 일반 형식> DIR [드라이브명] [경로명] [파일명] [/P] [/W]  -> Enter

        [/P] - 페이지 단위로 화면에 출력.
        [/W] - 파일과 디렉터리 목록을 한 줄에 5개씩 출력.
        [  ] - 대괄호 안에 있는 내용은 생략 가능함.

    : 디렉터리는 디렉터리명이 디렉터리임을 나타내는 <DIR> 문자, 디렉터리가 작성되는
      날짜와 시간 순으로 출력된다. 또한, 파일 목록은 파일명, 확장자, 파일의 크기, 날
      짜, 시간 등을 기준으로 원하는 순서로 볼 수 있다.
 
   (실습) 다음 명령을 실행시켜 목록을 출력시켜 보자.
 
      A > DIR B:   Enter <- B:의 디스크에 저장된 파일과 디렉터리 목록을 출력한다.
      A > DIR/P    Enter <- A:의 디스크에 저장된 목록을 페이지 단위로 한 화면에 23줄씩
                               출력한다.
      A > DIR/W    Enter <- 파일과 디렉터리 목록을 한 줄에 5개씩 출력한다.
      A > DIR *.* Enter <- A:의 디스크에 저장된 파일과 디렉터리 목록을 모두 출력한다.

 FORMAT 명령
     : 새로 구입한 플로피 디스크를 초기화할 때 사용하는 명령. 초기화는 디스크를 사용
       하려고 하는 컴퓨터에 맞게 트랙과 섹터로 구분하여 정보를 저장할 수 있는 상태로
       만들어 주는 것이다.

  < 일반 형식 > FORMAT [드라이브명] [/S] [/V] [/4]  <- Enter

       [/S] - 디스크를 시스템 디스크로 초기화할 때 사용한다.
       [/V] - 디스크에 볼륨명을 부여할 때 사용한다.
       [/4] - 360KB로 초기화할 때 사용한다.

   (보기) A 드라이브에 디스크를 넣은 후 초기화 시켜보자.
 
     1. FORMAT A: 명령을 입력하고 Enter 키를 누르면, 드라이브 A에 새 디스크를 넣고
        Enter 키를 누르라는 메시지가 나타난다.

     2. 새 디스크를 드라이브 A에 넣고, 손잡이를 닫은 다음 Enter 키를 누르면, 초기화
        작업이 시작된다.

     3. 초기화 작업이 완료되면, 볼륨명을 입력할 것을 지시하는 메시지가 나타난다.

     4. 볼륨명을 입력하고 Enter 키를 누르거나, 볼륨명이 없으면 바로 Enter 키를 누른다.
        그러면 디스크 전체 용량, 사용 가능 용량, 불량 용량이 출력된다.

     5. 또 다른 디스크를 초기화할 것인지를 묻는 메시지가 나타난다. 이 때, 다른 디스크를
        초기화하려면 Y를 입력하고, 초기화를 끝내려면 N을 입력한다.

   (실습) 다음 명령을 실행시켜 확인하여 보자.

      A > FORMAT A:/S  Enter <- A:의 디스크를 초기화하고, 시스템 파일을 복사한다.
      A > FORMAT A:/V  Enter <- A:의 디스크를 초기화시킨 뒤, 볼륨명을 부여할 수 있다.
      A > FORMAT A:/4  Enter <- 고밀도(1.2MB) 디스크 드라이브에서 360KB의 디스크를 초기화.
 
   DISKCOPY 명령
     : DISKCOPY는 디스크에 있는 전체 내용을 복사하려고 할 때 사용하는 명령으로, 디스크
       단위로 복사한다.

  <일반형식> DISKCOPY [d1:] [d2:]  Enter

        [d1] - 파일이 저장된 원시 디스크가 있는 드라이브.
        [d2] - 파일을 복사할 대상 디스크가 있는 드라이브.

   (보기) A 드라이브의 디스크에 있는 전체 내용을 B 드라이브의 디스크에 복사하기.

       1. 복사하려는 원시 디스크를 A 드라이브에 넣고 손잡이를 닫은 다음, DISKCOPY A: B:
          를 입력하고, Enter 키를 누른다.

       2. 대상디스크를 넣어 달라는 메시지가 나타나면 대상 디스크를 B 드라이브에 넣고 손
          잡이를 닫은 후 임의의 키를 누른다. 복사를 다하면 디스켓의 복사 위치를 표시한다.
          또 다른 디스크를 복사하려면 B 드라이브에 디스크를 삽입한 뒤에 Y를 입력하고,
          그렇지 않으면 N을 입력한다.

 PROMPT 명령
   : PROMPT는 도스 상태에서 프롬프트의 모양을 바꾸어 주는 명령이다.

  <일반형식> PROMPT $[지정 문자]   Enter

       $ - 지정 문자 앞에 붙이는 기호

     : 프롬프트는 보통 현재 드라이브를 'A>'로 나타내는 PROMPT 명령은 '$' 기호와 지정 문자
       를 이용하여 프롬프트를 변경할 수 있다.
 

 도스에서 사용되는 프롬프트


   (보기) 프롬프트 변경하기.

        1. 프롬프트를 현재의 날짜 1996년-04-03(수)로 나타내려면 PROMPT $D를 입력하고 Enter
           키를 누른다.

        2. 프롬프트를 원래 상태로 복귀하려면 PROMPT $P$G를 입력하고 Enter 키를 누르면 된다.
 

 DATE 명령
   : DATE는 날짜를 화면에 나타내거나 나타난 날짜를 수정할 때, 사용하는 명령이다.

  <일반 형식> DATE   <- Enter
 

 TIME 명령

  <일반형식> TIME  <- Enter
 
 
파일에 관한 명령어

 DEL 명령
   : DEL 디스크에 저장된 파일 중에서 지정된 파일을 찾아 삭제하는 명령이다.

  <일반 형식> DEL [드라이브명] [경로명] <파일명>  Enter

  (보기) B 드라이브에 있는 모든 파일을 삭제하기.
    드라이브 B의 디스크에 저장된 파일을 모두 삭제하려면 다음과 같이 입력하고 Enter 키를
    누른다. 그러면 '맞습니까(Y/N)?'라는 메시지가 출력된다. 이 때, 파일 전체를 삭제하려면
    Y를 입력하고, 삭제해서는 안 될 경우라면 N을 입력한다.

      A>DEL B:*.*  Enter  <- B 드라이브에 있는 디스크의 모든 파일을 삭제한다.
        맞습니까(Y/N)?
 
     (실습) 다음 명령을 실행시켜 디스크에 수록된 파일을 삭제하여 보자.
     A>DEL SAM.DAT  Enter <- A 드라이브에 있는 디스크에서 SAM.DAT 파일을 삭제한다.

     A>DEL *.EXE  Enter <- 확장자가 .EXE인 파일을 모두 삭제한다.

     A>DEL A:\DOS *.BAK   Enter <- DOS 디렉터리에 종속된 파일 중에서 확장자가 BAK인 파일
                                    을 모두 삭제한다.

     A>DEL A:\DOS  Enter <- 디렉터리만 지정하고, 삭제할 파일을 지정하지 않으면 DOS
                            디렉터리에 종속된 파일을 모두 삭제한다.

 REN 명령
   : REN은 지정한 파일의 이름을 바꾸어 주는 명령이다.

  <일반 형식> REN [드라이브명] [경로명] <파일1> <파일2>  Enter
 
         <파일1> - 기존의 파일명과 확장자.
         <파일2> - 새로운 파일명과 확장자.

  (실습) 다음 명령을 실행시켜 파일명을 바꿔 보자.

     A>REN B:TEST1.DAT TEST2.DAT  Enter <- B 드라이브의 디스크에 있는 TEST.DAT를 TEST2.DAT
                                             파일명으로 바꾼다.

     A>REN B:*.DAT *.TXT  Enter <- B 드라이브의 디스크에 저장된 파일 중에서 확장자가 .DAT
                                    인 파일의 확장자를 모두 .TXT로 바꾼다.

 COPY 명령
   : COPY는 파일을 복사할 때 사용하는 명령이다. 이 명령은 작성된 파일을 보관하거나 복수
     개의 파일을 결합하여 준다.

  <일반 형식> COPY [d1] [Pn] <파일1> [d2] [Pn] <파일2> Enter

        [d1] - 파일이 저장된 원시 디스크가 있는 드라이브.
        [d2] - 파일을 복사할 대상 디스크가 있는 드라이브.
        [Pn] - 경로명.

   (실습) 다음 명령을 실행시켜 확인하여 보자.

      1. 파일 복사하기
         A>COPY B:TEST.BAS  Enter  <- B 드라이브의 디스크에 있는 TEST.BAS 파일을 A 드라
                                       이브의 디스크에 복사한다.

         A>COPY B:*.*  Enter  <- B 드라이브의 디스크에 있는 모든 파일을 A 드라이브의
                                 디스크에 복사한다.

      2. 파일 인쇄하기
         A>COPY B:TEST.DAT PRN:  Enter  <- B 드라이브의 디스크에 있는 TEST.DAT를 인쇄한다.
 
      3. 파일 결합하기
         A>COPY B:TEST.BAS+B:TEST2.BAS B:TESTALL.BAS  Enter
                 <- B 드라이브의 디스크에 있는 TEST1.BAS 파일과 TEST2.BAS 파일을 결합하여
                   TESTALL.BAS라는 이름으로 복사한다.

      4. 파일 생성하기
         A>COPY CON B:TEST.DAT  Enter <- B 드라이브의 디스크에 TEST.DAT라는 파일을 생성.

      5. 화면으로 보내기
         A>COPY TEST.DAT CON:  Enter <- A:의 디스크에 저장된 TEST.DAT라는 파일을 화면
                                         으로 복사한다.

 TYPE 명령
   : TYPE은 지정한 파일의 내용을 화면에 출력시키는 명령이다. 이 명령은 아스키 코드로
     작성된 파일만 볼 수 있다.

  <일반 형식> TYPE [드라이브명] [경로명] [파일]   Enter

  (실습) 다음 명령을 실행시켜 확인하여 보자.

     A>TYPE B:SAM.TXT  Enter <- B:에 저장된 SAM.TXT 파일의 내용을 화면에 출력한다.
 
     A>TYPE AAA.TXT >\XYZ.DAT   Enter <- A 드라이브의 디스크에 있는 AAA.TXT 파일의 내용
                                          을 XYZ.DAT 파일로 복사한다.

 CHKDSK 명령

  <일반 형식> CHKDSK [드라이브명] <파일명> [/F] [/V]   Enter

       [/F] - 디스크의 상태를 검색하고, 이성이 있으면 복구한다.
       [/V] - 디스크를 검색한 다음, 파일 목록을 화면에 출력한다.

  (실습) 다음 명령을 실행시켜 디스크 상태를 점검하여 보자
       A>CHKDSK A:   Enter <- A 드라이브에 있는 디스크의 상태를 점검.

       A>DHKDSK B:/V   Enter <- B 드라이브에 있는 디스크를 점색한 다음, 디렉토리와
                                파일의 목록을 화면에 출력한다.

 XCOPY 명령
   : XCOPY는 디렉터리와 그 디렉터리가 가지고 있는 파일은 물론 하위 디렉터리와 파일까지
     모두 복사하는 명령이다.

  <일반 형식> XCOPY [/d1:] [/d2:] [/Pn] [/S] [/E] [/P]  Enter

        [/S] - 현재의 디렉터리와 서브디렉터리를 복사한다.
        [/E] - 파일이 없는 디렉터리도 복사한다.
        [/P] - 파일의 복사 여부를 일일이 확인한다.

  (실습) 다음 명령을 실행시켜 디렉터리를 만들어 보자.

     A>XCOPY B:/S  Enter <- A 드라이브의 디스크에 있는 모든 디렉터리와 같은 형태로 B
                            드라이브의 디스크로 복사된 DOS가 생성된다.

     A>XCOPY\ABC\XYZ/S/E  Enter <- 서브디렉터리 ABC의 모든 파일과 디렉터리를 서브디렉
                                    터리 XYZ에 복사한다.

     A>XCOPY B:/S/P  Enter <- A 드라이브의 디스크의 모든 디렉터리와 파일이 같은 형태로
                              B에 복사되는데, 한 파일이 복사될 때마다 복사 여부를 확인한다.

  디렉터리에 관한 명령어

    도스에서 사용할 수 있는 새 플로피 디스크나 새 하드 디스크에는 루트 디렉터리 하나만
    있지만, 파일을 효과적으로 관리하기 위하여 필요한 경우 디렉터리를 임의로 만들거나
    삭제할 수 있다.

 MD 명령
   : MD는 Make Directory의 약자이며, 디스크에 새로운 디렉터리를 만들 때 사용하는 명령.
     디렉터리명은 영문자, 숫자, 특수 문자로 구성하며, 최대 8자까지 가능한데, 한글은
     4자까지 지정할 수 있다.

  <일반 형식> MD [드라이브명] [경로명] Enter

  (실습) 다음 명령을 실행시켜 디렉터리를 만들어 보자.

     A>MD DOS  Enter <- 루트 디렉터리 밑에 서브디렉터리 DOS가 생성된다.

     A>MD \DOS\AAA  Enter <- 서브디렉터리 DOS 밑에 하위 서브 디렉터리 AAA가 생성된다.

 CD 명령
   : CD는 Change Directory의 약자이며, 사용자가 원하는 파일이 있는 위치로 디렉터리를 변경
     할 때, 사용하는 명령이다.

  <일반 형식> CD [드라이브명] [경로명]  Enter

  (실습) 다음 명령을 실행시켜 디렉터리를 변경시켜 보자.

    A:\>CD DOS  Enter <- 루트 디렉터리에서 'DOS'로 변경된다.

    A:\DOS>_

    A:\>CD DOS\AAA\BBB  Enter <- 루트 디렉터리에서 서브디렉터리인 'DOS'와 'AAA'를 거쳐
                                 'BBB'로 이동한다.

    A:\DOS\AAA\BBB>_

    A:\DOS\AAA\BBB>CD..   Enter <- 디렉터리 'BBB'에서 한 단계 상위 디렉터리인 'AAA'로
                                    이동한다.

    A:\DOS\AAA>_

    A:\DOS\AAA\BBB>CD\  Enter <- 디렉터리인 'BBB'에서 바로 루트 디렉터리 'A:\'로 이동한다.

    A:\>_

 RD 명령
   : RD는 Remove Directory의 약자이며, 디스크에 있는 기존의 디렉터리를 삭제할 때 사용하는
     명령이다.

  <일반 형식> RD [드라이브명] [경로명]  Enter

   RD 명령은 삭제하려고 하는 디렉터리에 종속된 파일이나 서브 디렉터리가 있으면 RD 명령은
   실행되지 않는다. 그러므로 삭제하려는 디렉터리에 종속된 파일이나 서브 디렉터리를 먼저
   삭제한 다음 디렉터리를 삭제하여야 한다.

  디렉터리를 삭제하는 방법

   ⑴ 삭제하려는 디렉터리에 종속된 파일이나 서브 디렉터리가 있는지 DIR 명령으로 확인한다.
   ⑵ 서브 디렉터리가 있으면 먼저 삭제한다.
   ⑶ 종속 파일이 있으면, DEL 명령으로 모두 삭제한다.
   ⑷ CD 명령을 이용하여 상위 디렉터리로 이동한다.
   ⑸ RD 명령으로 삭제하려는 디렉터리를 삭제한다.
   ⑹ DIR 명령을 이용하여 디렉터리 삭제 여부를 확인한다.

 PATH 명령
   : PATH는 다른 디렉터리에 있는 외부 명령을 편리하게 사용할 수 있도록 경로를 지정할 때
     사용되는 내부 명령이다.

  <일반 형식> PATH [경로명]  Enter

   사용하려는 명령어가 현재 디렉터리에 없을 때, 그 명령어를 사용하면 오류가 발생한다.
   이 때, PATH를 지정하면 다른 디렉터리에 있는 명령어를 사용할 수 있다.

  (실습) 다음 명령을 실행시켜 확인하여 보자.

    A>PATH   Enter <- 현재 지정된 경로가 화면에 나타난다.

    A>PATH   Enter <- 현재 지정된 경로를 해제한다.

    A>PATH A:\DOS  Enter <- 'DOS'에 대한 경로가 지정되었으므로, 사용자는 어느 디렉터리
                            에서도 'DOS'가 종속된 외부 명령어를 사용할 수 있다.

    A>PATH A:\DOS;A:\DOS\HWP  Enter <- 하나의 'PATH' 명령으로 여러 개의 경로를 지정하려면
                                        세미콜론으로 구분한다.

배치 파일에 관한 명령

 ㈎ 배치 파일
  : 일련의 명령들을 하나의 파일로 만들어 디스크에 저장시켜 놓고, 필요할 때 파일명을 입력
    하면 명령들이 입력된 순서에 따라 자동적으로 실행되도록 구성된 파일이다.
    도스에서는 일반적으로 명령을 하나씩 실행시키지만, 배치 파일은 여러 개의 명령을 한꺼번에
    실행시킬 수 있기 때문에 매우 효과적이다.
    배치 파일의 파일명은 임의로 부여하지만, 확장자는 반드시 '.BAT'로 붙여 주어야 한다.

 ㈏ 자동 배치 파일
  : 배치 파일은 배치 파일명을 입력하여야 명령이 실행되지만, 자동 배치 파일은 컴퓨터 기동시
    자동적으로 실행되는 파일이다. 자동 배치 파일은 파일명과 확장자를 반드시 'AUTOEXEC.BAT'
    로 부여하고, 루트 디렉터리에 저장하여야 한다.
 
  자동 배치 파일을 작성하는 방법

   ⑴ 배치 파일을 작성하기 위하여 COPY CON 명령과 자동 배치 파일명인 'AUTOEXEC.BAT'를 입력
      하고, Enter 키를 누른다.
   ⑵ 자동 배치 파일에 포함할 명령들을 각각 입력하고, Enter 키를 누른다.
   ⑶ 파일 작성을 종료시키기 위하여 Ctrl 키와 Z 키를 동시에 누른다.
   ⑷ '1개의 파일을 복사했습니다.'라는 메시지가 출력되고, 파일 작성이 종료된다.

2010년 2월 4일 목요일

VI EDITOR

vi editor 명령어. (참고 원문 : http://apmtip.com/board/data/download/vi.mht)

 

01. 커서 이동하기(명령모드).

 A. 상하좌우로 이동하기
  -> [h][j][k][i]KEY를 이용하여 이동

 B. 기타 이동 KEY
  0 -> 현재 행의 맨 앞으로 이동한다.
  $ -> 현재 행의 맨 마지막 문자로 이동한다.
  ^ -> 현재 행의 맨 앞 문자로 이동한다.

 

<페이지 이동>
 gg -> 전체 페이지의 맨 앞 으로 이동한다.
  G -> 전체 페이지의 맨 끝 으로 이동한다.


 nG -> n행으로 이동한다.
  H -> 스크린의 첫 행의 맨 앞으로 이동한다.
  M -> 스크린의 가운데 행의 맨 앞으로 이동한다.
  L -> 스크린의 맨 마지막 행의 맨 앞으로 이동한다.
  { -> 단락의 맨 앞으로 이동한다.
  } -> 다음 단락의 선두로 이동한다.
<Enter> ->
다음 행의 맨 앞으로 이동한다.


02. 편집하기(명령모드).

 A. 지우기
  x -> 현재 커서가 위치한 문자를 삭제한다.
  X -> 현재 커서의 위치에서 앞의 글자를 삭제된다.
 dd -> 현재 행을 삭제한다.
 dw -> 커서 위치에서 단어 끝까지 삭제한다.

 d0 -> 커서 위치부터 줄의 처음까지 삭제한다.
  D ->
커서 위치부터 행 끝까지 삭제한다.

 

 B. 블록 지정하기
  v -> <v> KEY를 누른 후 방향키를 조정한다.

 

 C. 복사&오려두기
  y -> 블록 지정된 내용을 복사한다.
  d -> 블록 지정된 내용을 오려둔다.

 y0 -> 커서 위치부터 줄의 처음으로 복사한다.

 y$ -> 커서 위치부터 줄의 끝까지 복사한다.
 yy -> 커서가 있는 줄을 복사한다.

 yj -> 커서가 있는 줄과 그 다음 줄을 복사한다

 yk -> 커서가 있는 줄과 그 앞줄을 복사한다.

 dd -> 현재 행을 오려둔다.

 

 D. 붙여넣기
 
p -> 커서 다음에 붙여넣는다.

  P -> 커서 있는 위치에 붙여넣는다.

 

 E. 기타

  u         -> 작업취소(undo)

  U         -> 그 줄에 행해진 작업을 모두 취소한다.

  Ctrl + r  -> 작업 재실행(redo)

  .          -> 조금 전에 했던 명령을 반복한다.

  J          -> 현재 줄과 아래 줄을 연결한다

 ~          -> 대문자를 소문자로, 소문자를 대문자로 바꾼다.

 %          -> 괄호의 반대쪽 짝으로 이동한다.

 Ctrl + l   -> 현재 화면을 지우고 다시 그린다.

 Ctrl + g  -> 파일에 관한 정보를 표시한다.

 

 D. 붙여넣기
 
p -> 커서 다음에 붙여넣는다.

  P -> 커서 있는 위치에 붙여넣는다.
03. 문자열 검색하기
 A. 아래로 검색하기
  /문자열 -> 계속 검색하고 싶으면 <n> KEY, 위로 검색하고 싶으면 <N> KEY.

 B. 위로 검색하기
  ?문자열

 

04. 문자열 치환하기
 A. :%s/old/new/g
 B. 문자열 치환의 예
  :%s/cheju/jeju/g -> 파일 내에 있는 모든 문자열 cheju를 jeju로 치환한다.
  :%s/cheju/jeju/10 -> 파일 내에 있는 모든 문자열 cheju를 처음부터 10번째까지만 jeju로 치환한다.
  :s/cheju/jeju/ -> 현재 커서가 위치해 있는 행의 첫 번째 문자열 cheju를 jeju로 치환한다.
  :10,20s/cheju/jeju/g -> 10행부터 20행까지의 문자열 cheju를 jeju로 치환한다.
  :.,$s/cheju/jeju/g -> 현재행
(.)부터 마지막 행($)까지의 문자열 cheju를 jeju로 치환한다.

 

2010년 2월 3일 수요일

"0x7c0c5a6c"에 있는 명령이 "0x7c0c5a6c"의 메모리를 참조했습니다.

---------------------------
iexplore.exe - 응용 프로그램 오류
---------------------------
"0x7c0c5a6c"에 있는 명령이 "0x7c0c5a6c"의 메모리를 참조했습니다. 메모리는 "written"될 수 없었습니다.


프로그램을 마치려면 [확인]을 클릭하십시오.
프로그램을 디버그하려면 [취소]를 클릭하십시오.
---------------------------
확인   취소  
---------------------------

 

위와같은 오류발생시 해결방법 특히 ActiveX 컨트롤이 뜨는경우 발생함.

 

internet exploer 8 의 온라인 보호기능 때문에 발생됨.

 

해결책)

인터넷익스플로러8 속성 -> 고급 -> 온라인 공격 방지를 위해 메모리 보호 [해제]

 

브라우져 재시작

 

 

2010년 1월 21일 목요일

Vi 팁

vi 고급 ====

:set nu 각 행마다 행 번호를 붙여서 보여준다.
:set nonu 각 행마다 표시했던 행 번호 보이지 않게 한다.
:set all set 명령에 의해 설정된 모든 내용을 보여준다.
:map y dd y키가 dd(한줄삭제)로 동작하도록 한다.
:ab 축양형 전체문자열
:s/old/new/ 현재 행의 첫 번째 old를 new로 치환한다.
:s/old/new/g 현재 행의 모든 old를 new로 치환한다.
:s/old/new/gc 현재 행의 모든 old를 new로 치환하되 치환하기 전에 사용자의 확인을 받는다.
:%s/unix// 파일의 전체에서 unix를 삭제한다.(%s는 붙여써야 한다.)
:10 s/old/new/g 10번째 행에 있는 모든 old를 new로 치환한다.
:1, 10 s/old/new/ 파일의 첫 번째 행에서 10번째 행에서 첫 번째 나타나는 old를 new로 치환한다.
:1, 10 s/old/new/g 파일의 첫 번째 행에서 10번째 행까지의 모든 old를 new로 치환한다.
:1, $ s/old/new/g 파일의 첫 번째 행부터 마지막 행까지의 모든 old를 new로 치환한다.
:1, $ s/old/new/gc 파일의 첫 번째 행부터 마지막 행까지의 모든 old를 new로 치환하되 치환하기 전 사용자의 확인을 받는다.
:.-5,.+10 s/unix/UNIX/g 현재 행으로부터 위 5줄(.-5)에서 현재 행으로부터 아래 10줄(.+10)사이에 있는 모든 unix를 UNIX로 치환한다.
:%s/^/unix:/g 파일전체의 각 행의 첫 번째 칸에 unix:를 넣는다.
:r 파일명 현재 커서가 있는 위치에 지정된 파일을 추가시킨다.(붙인다.)
:!sh 잠시 shell로 빠져나간다.(다시 vi로 들어오려면 shell상에서 exit를 입력한다.)
:!ls -l shell명령어인 ls -l을 실행한다.
:r !ls -l shell명령어인 ls -l의 실행결과를 현재 커서가 있는 위치에 추가시킨다.
:g/old/s/old/new/g 파일의 모든 행에서 old를 찾아서 new로 치환한다.
:g/old/s//new/g
:%s/old/new/g
vi -r 파일명 vi작업도중 정전 등으로 작업내용을 잃어버렸을 경우 그 파일을 복구한다.
vi -R 파일명 파일을 읽기 모드로 연다.
vi file1 file2 file3 file1, file2, file3을 동시에 연다.
(파일간의 이동은 n, n!, e#을 사용한다.)
vi +n 파일명 파일의 n번째 행에 커서가 위치한다.
vi + 파일명 파일의 마지막 행에 커서가 위치한다.
vi +/unix 파일명 파일에서 처음 나오는 unix를 찾아 커서가 위치한다.



-------------------------------

vi 고급명령어 I

perl -pi -e 's/http(.*)html/blank.html/g' filename
vi내에서 공백으로 시작되거나, 공백 문자로 끝나는 줄에서
요런 공백들을 없애려면 다음과 같이 하세요.

:%s/^(\s*)//g -- 공백문자(\s)가 0개이상(*)으로 시작(^)되는 놈들을 없앤당~~

:%s/(\s*)$//g -- 공백문자(\s)가 0개이상(*)으로 끝나는($) 놈들을 없앤당~~
==================================================
#grep -r test /usr/local/
# grep -r test .

하시면 /usr/local 아래에 있는 파일,디렉토리 모두에서 test 가 있는 파일을 나타내 줌다.

회사명이나 도메인, 메일주소 등이 바뀌었을 때
수많은 문서파일에 적힌 내용을 모두 고치기란 쉬운 일이 아니다.
하지만 Perl을 이용하면 너무도 간단히 변경내용을 반영할 수 있다.
아래 명령은 html 확장자를 지닌 문서파일에서 "우정"이라는 문자열을 찾아 "사랑"이라는 문자열로 모두 치환하는 명령(Perl 명령행 옵션)이다.

$ perl -pi -e "s/우정/사랑/g" *.html
ex: perl -pi -e "s/211.34.60.5/suncheonedu.or.kr/g" *.html

find 명령을 이용하면 하위 경로의 문서도 일괄적으로 치환할 수 있다.
$ find . -type f -name "*.html" -exec perl -pi -e "s/우정/사랑/g" {} \;
ex: find . -type f -name "*.htm" -exec perl -pi -e "s/shift_jis/utf-8/g" {} \;

특정 문자열 찾기
find . -type f -name "*.html" -exec grep okgokms.bogo.net {} \; -print
======================================================
파일 안에 모든
http://www.yahoo.co.kr/dfdf.html
과 같은 문자열을
http://www.yahoo.co.kr/blank.html
로 바꾸시려는 것인지? 그렇다면..
:%s/\(.*\)\/\(.*\.html\)/\1\/blank.html/g
요렇게 하시면 됩니다
======================================================
: 예를 들면 파일 속에 있는 모든
: <a href=http://www.yahoo.com/test.html>test</a> 와 같은 문자열을
: <a href=http://www.yahoo.com/blank.html>test</a>
: 로 바꾼 다는 것이지요?
: 문제 없이 잘되거든요.
: 잠시 설명을 해보면...
: % s / \(.*\) \/ \(.*\.html\) / \1 \/blank.html / g
: 1 2 3 4 5 6 7 8 9 10 11
:
: 1 - 범위 (모든줄)
: 2 - substitute (변환)
: 3 - 구분자
: 4 - (.*) 모든 문자열을 그룹 1로
: 5 - URL 의 / 를 표시
: 6 - (.*.html) .html 로 끝나는 모든 문자열을 그룹 2로.
: 7 - 구분자
: 8 - 그룹 1
: 9 - /blank.html
: 10 - 구분자
: 11 - 모두 바꿈.
:
: http://www.yahoo.com/foo/bar.html
:
: 은 http://www.yahoo.com/foo 까지가 그룹1이 되고
: bar.html 이 그룹 2가 되죠.
: 위의 정규표현식에 맞춰보면... (\는 제외)
:
: s / (http://www.yahoo.com/foo) / (bar.html) /
: 2 3 4 5 6 7
: (http://www.yahoo.com/foo) /blank.html / g
: 8 9 10 11
: http://www.yahoo.com/test.html 이란걸 몽땅 blank.html 로??
: %s/http.*\.html/blank.html/g



---------------------------------------------

vi 에서 내용치환법

:1,$s/golyak/okgokms/g


/치환될내용/치환될대상/

VIM (Vi iMproved) 초보자들을 위한 절대적 지침서

 

Vim


  Vim 은 Emacs 와 더불어 리눅스 최고의 편집기라 일컫어지는 텍스트 편집기이다. Vim 에는 입력모드와 명령모드 두 가지가 있다. 입력모드는 말 그대로 입력모드로 텍스트를 입력할 수 있다. 한편 명령모드는 저장, 복사, 치환 등과 같이 여러 가지 '명령' 을 수행하는 모드 이다. Vim 을 쓰는 방법은 매우 간단하다. 그냥 터미널에서 'vi 파일명' 을 치면 된다. 예를 들어 문서 hello.c 를 편집하고 싶다면 vi hello.c 를 치면 된다. 보통 vi 는 어떠한 리눅스 배포판이여도 기본적으로 깔려 있으므로 뭐 설치는 걱정 안해도 된다.



  Vim 에는 자동 완성기능, 파일의 비교 및 병햡기능과 통합된 도움말 시스템, 확장된 정규식 표현, 스크립트 언어 (Perl, Python, Ruby, Tcl 등) 인터프리팅, gzip, bzip2, zip 등으로 압축된 파일 편집기술과 철자 체크, 창 분할, 구문강조, 유니코드 및 다국어 지원, 검색, 커서 위치기록 등과 같이 수 많은 기능을 가지고 있다. 또한 그 외에도 여러가지 플러그인 들이 상당히 유용하다. 예를 들자면 ctags, cscope, 그리고 대표적으로 taglist 까지 상당히 유용하다. 이 들은 모두 소스코드를 분석할 때 용이하게 쓰일 수 있으며 많이 애용된다. 이 들의 사용방법은 그다지 어렵지 않으므로 인터넷에 쳐 보면 쉽게 알 수 있다. 하지만 Vim 이 절대적으로 편리한 이유는 바로 마우스를 사용하지 않기 때문이다. Vim 에서는 모든 명령을 키보드로 처리하기 때문에 키보드에서 손을 떼어 마우스를 잡은 후 다시 키보드에 손을 대는 이런 귀찮은 행동을 할 필요가 사라진다.

  보통 많은 사람들이 Vim 을 그대로 사용하지 않고 여러가지 설정을 해준다. root 계정을 사용하고 있다면 vi /root/.vimrc 를 쳐서 다음과 같은 내용을 입력해준다. (물론 원하는 것만) 여기서 " 는 주석으로 꼭 입력할 필요는 없습니다.

set tabstop=2  "탭 간격을 2 칸 으로 지정한다
set shiftwidth=2 " >>나 << 사용시 들여쓰기 간격을 지정한다
set expandtab " 탭 문자를 공백문자로 변환한다.
set softtabstop=2 "탭 간격을 공백문자로 변환하면 두 칸 단위로 삭제한다
set visualbell " 사용자 실수 경고시 비프음 대산 화면을 한 번 반짝인다.
set nobackup "백업 파일을 생성하지 않는다
set cindent "C 언어 스타일의 들여쓰기를 사용합니다.
set autoindent "자동 들여쓰기를 사용합니다.
set smartindent "좀 더 지능적인 들여쓰기를 사용합니다.
set enc=euc-kr "인코딩을 한글로 지정합니다.
set incsearch
"키워드 입력시 검색하는 점진 검색을 사용합니다.  (파이어폭스서 사용)

syntax on "구문 강조기능을 사용합니다
filetype on "파일 종류에 따라 구문을 강조합니다.
set background=dark "배경색을 어두운 색으로 설정합니다.
colorscheme evening "VI 색상 테마를 evening  으로 설정합니다
set backspace=eol,start,indent
"줄의 끝, 시작, 들여쓰기서 백스페이스 사용시 이전 줄과 연결
set history=1000 " VI  편집 기록을 1000개 까지 저장합니다.
set hlsearch "검색어 강조 기능을 사용합니다.
set ignorecase "검색, 편집, 치환시 대소문자를 구분하지 않습니다.
set showmatch "() 과 {} 에서 한 괄호만 입력해도 일치하는 괄호를 보여줍니다

  Vim 을 시작하면 i 를 눌러서 편집모드로 들어갈 수 있고 Esc 나 Ctrl + [ 를 누르면 명령모드로 들어갈 수 있습니다. 명령모드에서는 앞서 말했듯이 저장, 복사, 치환 등의 행동을 할 수 있습니다. 예를들어서 명령모드서 :w 라 치면 이 파일이 저장됩니다. :q 라 치면 종료가 되며 (저장이 되어 있다면), :q! 라 치면 저장의 여부와는 상관 없이 강제 종료됩니다. 아래는 Vim 의 명령어들을 모은 표 입니다. (대부분의 명령어로 모두는 아니다. )

파일 작업시 명령어
Vim 명령어
결과
:e 파일명
새로운 파일을 연다. 커맨드 프롬프트 처럼 Tab 키를 통해 파일이름의 자동 완성 기능을 사용할 수 있다.
:w 파일명
파일을 저장한다. 만약 파일 이름을 지정하지 않는다면 그냥 원래 파일 이름으로 저장이 되고 파일 이름을 지정해 준다면 새로운 파일 이름으로 저장이 된다
:q Vim 을 종료한다. 파일을 저장하지 않았자면 종료되지 않는다.
:q! 파일의 저장에 상관없이 종료한다.
:wq 파일을 저장한 후 종료한다.
:x 위의 :wq 와 거의 같지만 여기서 파일이 저장된 이후 기록된 사항이 있으면 저장하지 않고 파일이 저장된 이후 기록된 사항이 있으면 저장하고 종료한다.
아래의 Vim 명령어는 Visual 모드, 터미널 모드 모두에서 사용 가능합니다.
Vim 명령어
결과
j or 방향키 ↑
커서를 한 칸 위로 이동
k or 방향키↓
커서를 한 칸 아래로 이동
l or 방향키 →
커서를 한 칸 오른쪽으로 이동
h or 방향키 ←
커서를 한 칸 왼쪽으로 이동
e 단어의 끝으로 이동
E 단어의 끝으로 이동
b 단어의 첫 부분으로 이동
B 단어의 첫 부분으로 이동
0 문장의 첫 부분으로 이동
^ 공백문자가 아닌 문장의 첫 부분으로 이동
$ 문장의 끝 으로 이동
H 화면의 첫번째 라인으로
M 화면의 중간 라인으로 이동
L 화면의 마지막 라인으로 이동
:n n 번째 라인으로 이동. 예를들어 :10 이면 10 번째 줄로 이동한다.
텍스트의 삽입 몇 편집
Vim 명령어
결과
i 커서 앞에 쓴다.
I 커서가 가리키는 라인의 앞에 쓴다
a 커서 뒤에 추가한다.
A 커서가 가리키는 라인의 맨 뒤에 추가한다.
o 커서가 가리키는 라인 아래에 새 라인을 추가한다.
O 커서가 가리키는 라인 위에 새 줄을 추가한다.
r 한 글자를 바꿔쓴 후 다시 명령모드로 들어간다.
R 삽입모드에 들어가지만 글자를 덧쓰면서 이미 쓰여진 글자를 지운다
ESC
삽입/수정 모드에서 빠져나온다.
텍스트 지우기
Vim 명령어
Action
x 커서가 가리키는 글자를 지운다
X 커서 앞의 글자를 지운다.
dd or :d 현재 커서가 가리키는 라인의 글자를 지운다
비주얼 모드 들어가기
Vim 명령어 결과
v 단어를 하이라이팅(Highlighting, 블록 설정) 한다. 텍스트를 하이라이팅 하기 위해서 보통의 이동 키를 사용한다.
V 현재 커서가 가리키는 라인을 하이라이팅 한다.
The ESC key 비주얼 모드에서 빠져나와 명령모드로 들어간다.
블록 텍스트 편집하기
아래의 명령어는 비주얼 모드에서 텍스트를 블록 설저한 후 명령모드로 들어와 사용할 수 있다. 물론 명령모드에서도 사용할 수 있긴 하다.
Vim 명령어 결과
~ 글자의 대소문자를 바꾼다 예를들어서 mOvL 은 MoVl 로 바뀐다. 비주얼 모드와 명령모드 둘다 사용할 수 있으며 비주얼 모드에서 블록 처리한 뒤 명령모드로 들어와 ~ 를 누르면 그 블록 설정된 부분의 대소관계가 바뀐다.
> (V) 한 칸 오른쪽으로 민다
< (V) 한 칸 왼쪽으로 민다.
c (V) 블록처리된 텍스트를 바꾼다.
y (V) 블록처리된 텍스트를 복사(yank)한다.
d (V) 블록처리된 텍스트를 잘라내기한다.
yy or :y or Y 커서가 가리키는 라인을 복사한다. 블록 처리할 필요는 엎다.
dd or :d 커서가 가리키는 라인을 삭제한다. 블록 처리할 필요는 없다.
p 복사나 잘라내기 했던 텍스트를 붙여넣기(put) 한다.
P 커서 앞에 잘라내기 했던 텍스트를 붙여 넣는다.
실행 취소 및 다시 실행
Vim 명령어 결과
u 실행 취소한다.
U 커서가 가리키고 있던 라인에서 했던 모든 실행들을 취소한다.
Ctrl + r 다시 실행한다.
Vim 명령어 결과
/pattern pattern 이란 단어를 검색한다.
n 다음 글자를 찾지만 아래방향으로 찾는다.
N 다음 글자를 찾지만 윗 방향으로 찾는다.
치환  (바꾸기)
Vim 명령어
결과
:rs/foo/bar/a foo 를 bar 로 치환환한다. r 은 치환하는 범위를 지정하고 a 는 인자를 지정한다. 아래에 r 과 a 의 종류에 대해 설명되어 있다.

범위 (r) 의 종류에는
아무것도 쓰지 않을 때
범위를 주지 않을 경우 현재 라인에서 치환한다.
숫자를 쓸 때
치환할 라인의 숫자를 쓴다.
% 전체 파일의 모든 라인에 대해 치환한다.
인자 (a)의 종류에는
g 한 라인의 모든 경우를 치환한다. 이 인자를 주지 않을 경우 처음 발견되는 것만을 치환한다.
(이 말은 g 인자를 주지 않고 Hello Hi Hello 에서 Hello bye 로 치환한다면 bye Hi bye  가 아닌 bye Hi Hello 가 된다)
i 검색된 문자들의 대소문자를 무시하고 치환한다.
(즉, hello 를 hi 로 치환시 Hello, hEllo, HELLO 등과 같은 것들도 치환된다. )
I 위 경우를 무시하지 않는다. ( 위 경우서 hello 만 치환된다 )
c 모든 치환에 대해 확인한다. 만약 치환할 것이라면 y 를, 치환하지 않을 것이라면 n 을, 이하 모든 부분을 치환할 것이라면 a 를, 치환을 종료하겠다면 q 를 누르면 된다.
예를들자면...
:452s/foo/bar/  452 번째 라인의 첫 번째 foo 를 bar 로 치환한다.
:s/foo/bar/g 현재 라인에 나타나는 모든 foo 를 bar 로 치환한다.
:%s/foo/bar/g 전체 파일의 모든 foo 를 bar 로 치환한다.
:%s/foo/bar/gi 위와 같지만 Foo, FOO, FOo, foO 와 같은 것들도 모두 치환된다.
:%s/foo/bar/gc 위위와 같지만 각 치환에 대해 모두 검사를 수행한다.
:%s/foo/bar/c 파일의 모든 라인에 대해 각 라인의 첫 번째 foo 만 bar 로 치환하며 각 치환에 대해 검사를 한다.

  Vim 에 한 번 맛들리면 영원히 손에서 뗄래야 뗄 수 없는 편집기이다. 여러분도 Vim 의 세계에 풍덩 빠졌으면 한다.
------------------------------------------------------------------------------------
명령어 표 출처 : http://www.tuxfiles.org/linuxhelp/vimcheat.html

Vi에서 ^M 지우기

vi 편집기 내에서 ^M 문자를 지우는 방법

 

:$s/^M//g

 

$ => 파일전체에서

s/ => 파일전체에서 /다음의 문자를 바꿔라

^M/ => 파일전체에서 /다음의 문자 ^M을 /다음의 문자로 바꿔라

/ => 파일전체에서 /다음의 문자 ^M을 /다음의 문자 [문자없음]으로 바꿔라

g => 옵션(각 라인의 모든 문자 대상)

 

 

이때, ^M을 입력하는 방법은

<ctrl+v><Enter>

 

^M은 CR을 의미하는 것으로 보임

단순히 "^M"으로 입력시 인식하지 못함

2009년 10월 13일 화요일

rpm 페키지 삭제 방법 (페도라6)

설치된 rpm 패키지가 잇는지 확인해야 겠지요

rpm -qa | grep <패키지명>

 

rpm --erase `rpm -qa | grep <패키지명>
 rpm --erase --noscripts `rpm -qa | grep <패키지명>

 

위 과정은 <패키지명>로 시작되는 패키지를 찾아 삭제 하는 명령이다.

 

리눅스&페도라 FTP 서버 구축 및 사용법

우선 리눅스 OR 페도라를 설치하면서 필요없을 것 같아서 FTP서버를 설치 하지 않았다고 하자.그럼 설치를 새로 해주고 설정등을 잡아주고 FTP서버를 기동시켜야 한다.그리고 설치는 했으나 사용을 하지 않는다고 재워 놓았다면

 

#rpm -qa |grep proftpd                  를 입력하여 패키지 파일을 검색해 보고 있으면

 

#rpm -ivh 패키지파일이름                  을 입력하여 설치를 하자.

 

없으면 rpm 파일이라던지 다른 소스 파일을 다운받아서 설치 하도록하자.소스파일 다운 받을 수 있게 친절하게 알려준 블로그나 지식자료들이 오래되어서 그 서버들이 제대로 동작을 안하는 데가 많았다.

본좌는 돌다 돌다 헤메다 헤메다 여기서 다운받다.. http://www.proftpd.org에 접속하면 아래와 같은 그림이 나온다.빨간색으로 표시 해놓은 [gz] 파일을 클릭하여 다운 받도록 한다.

 

 

(위의 사이트에서 빨간색으로 표시된 부분을 클릭하면 알아서 다운로드 창이 뜬다.그러나 약간 서버가 불안해서 안될때도 있다)


[bz2]파일을 선호하면 그것을 다운받아도 된다.개인적인 취향이니 그건 각자가 알아서 선택하도록 한다. 파일을 다운받아 놓을 폴더로 이동한다.


# cd /usr/local/src/               <-- 난 요기다 다운받았다.

 

각자 소스파일을 받아서 활용하는 곳으로 받아서 풀어주길 바란다.이것도 저것도 모르는 초보라면 그냥 따라 해주실 바란다.그리고 압축을 풀어야 하는데 다운 받은 폴더로 이동을 해서 아래와 같은 명령어를 입력해주도록 한다.

 

 

# tar xvfz proftpd-1.3.1.tar.gz

 

(P.S:
압축을 푸는 진행과정이 모니터에 주루룩 올라가면서 나오게 된다.그리고 여기서 TIP하나! Tab 키를 사용하게 되면 긴 소스파일 이름을 다 입력하지 않아도 되므로 자주 활용하도록하자.사용법은 위의  proftpd-1.3.1.tar.gz 을 입력할려고 한다고 하자.그럼 앞의 명령어들을 다 이렇게 다 써놓고

# tar xvfz pro   까지만 입력하고 tab키를 누르게 되면 나머지 소스 파일명이 알아서 입력이 된다.단 주의 사항은 같은 이니셜이 있다면 입력되지 않고 같은 이니셜을 가지고 있는 파일명들이 화면으로 보여준다.그렇게 되면prof 까지 쓰고 다시 tab키를 누르게 되면 나머지 부분이 자동으로 입력되게 된다. )

 

 

자 이제 압축을 다 풀었다면 압축을 풀어 놓은 proftpd 폴더로 이동합니다. 위의 경로에 다운 받으셔서 압축을 풀으셨다면 proftp파일의 경로는 아래와 같을 것이다.

 

# cd /usr/local/src/proftpd-1.3.1            <-- 해당경로로 이동

 

해당경로에서 아래와 같이 쓰자.

 

# ./configure \
--prefix=/usr/local/proftpd \
--enable-autoshadow

 

 

그리고 설정이 잡히면

 

make && make install

 

명령을 순서대로 차례 차례 내리도록 하자.

그리고 설정을 잡아 주셔야 하네~~.. 설정을 잡기위해서 해당 설정파일(proftpd.conf) 을 열어 주자.

 

# vim /usr/local/proftpd/etc/proftpd.conf

 

(PS:
여기서부턴  http://blog.naver.com/ljhamway/150025243686 의 약속의 땅님의 블로그 글을 참고 수정하여 내용을 적었습니다.)

 

------------------------------------------------------------------------------------------
proftpd.conf 설정 내용 확인
------------------------------------------------------------------------------------------

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName   "ProFTPD Default Installation"
ServerType   standalone

-----부연설명----------------------------------------------------------------
보통 ServerType 은 standalone방식과 inetd방식이 있습니다.
ftp나 대형서버같은 경우는 항상 ftp를 열어둬야 겠지만, 저같이 스터디용~서버에 ftp사용자를 막아놓고 일부분만 허용하시는
분은 xinetd로 사용하는것이 서버에 과부하를 줄일수 있는 한가지 방법이겠죠
standalone로 사용하실분은 특별히 다른 기능을 넣을 필요는 없습니다. 유저와 그룹설정만 바꿔주시고 사용하시면 되고
inetd으로 사용하시려는 분들은 좀 복잡한데..
이방식은 따로 xinetd를 설치하셔야 합니다 (페도라 코어4의 기준에는 xinetd가 설치가 되어있지를 않습니다. ) 설치하시기전에
혹시나 설치가 되어 있는지 확인은 하셔야죠^^
RPM으로 설치가 되어 있다면..
RPM -qa | grep xinetd  로 검색하시면 뭔가 나올거에요 안나오면 RPM으로는 설치 안된거고
find /-name xinetd.* 하셔서 관련 파일이 있으면 아마도 설치가 되어 있을것입니다.

설치가 안되있는것을 확인 하셨다면... 그냥 yum으로 설치하시면 되요

yum install xinetd

설치가되셨다면 그다음에는 ....
xinetd가 기동시 불러들이는 폴더는 /etc/xinetd.d/폴더 입니다 일단 이 폴더로 이동을 해봅시다.
그후 proftp가 xinetd로 불려질수 있겠끔 아래의 내용으로 파일을 하나 생성하셔야 합니다

ervice ftp
{
       flags           = REUSE
       socket_type     = stream
       instances       = 50
       wait            = no
       user            = root
       server          = /usr/sbin/proftpd

       bind            = <the-ip-you-wish-to-bind-to>
       log_on_success  = HOST PID
       log_on_failure  = HOST RECORD
}


(PS:

이 부분에서 서버용으로 쓸려고 했기때문에  그래픽으로 보여주는 x-windowd를 설치하지 않아서 standalone방식으로 사용을 하게 되었다.기회가 될 때 이부분은 다시 수정해서 쓰도록 하겠다.부족한 부분과 필요한 부분은 따로 자료를 검색해 봐주길 바란다.)

 

----------------------------------------------------------------------------------
proftpd.conf 내용 계속 ......
-----------------------------------------------------------------------------------

DefaultServer   on

# Port 21 is the standard FTP port.
Port    21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask    022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances   30
# Set the user and group that the server normally runs at.
User    nobody
Group    nogroup <--이렇게 되어 있으면 nobody로 바꾸세요

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
#DefaultRoot ~
DefaultRoot ~ !root (root를 제외한 접속자들이 상위로 기어올라 가지 못하게 하는 부분입니다)


# Normally, we want files to be overwriteable.
<Directory /*>
  AllowOverwrite  on
</Directory>

# A basic anonymous configuration, no upload directories.
<Anonymous ~ftp>
  User    ftp
  Group    ftp
  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias   anonymous ftp

  # Limit the maximum number of anonymous logins
  MaxClients   10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  DisplayLogin   welcome.msg
  DisplayFirstChdir  .message


  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>

</Anonymous>
//설정내용 끝 (자세한 설정은 다른 분들것도 참조하세요)----------------------------

 

 

 

자 이제 설정을 마쳤으니 데몬을 돌려서 우리가 원한 FTP가 동작하는 것을 확인해봐야 하지 않을까?

 

# /usr/local/proftpd/sbin/proftpd  

(xinetd 로 운영하시면 /usr/local/proftpd/sbin/proftpd start)

 

 - warning: unable to determine IP address of 'localhost.localdomain'  
   (OR  warning: unable to determine IP address of '자신의 호스트네임')
 - error: no valid servers configured
 - Fatal: error processing configuration file '/usr/local/proftpd/etc/proftpd.conf'


그럼 부분 위와 같은 드러운 에러 내용을 만나게 돈다.여기 저기 자료를 찾던중 약속의 땅님의 블로그에서 실마리를 찾게 되었다.아래와 같이 명령어를 입력하고 엔터를 치게되면

 

# vim /etc/hosts


-----------------------------------------------
hosts 설정
-----------------------------------------------
# Do not remove the following line, or various programs
# that require network functionality will fail.
::1     localhost.localdomain   localhost

-----------------------------------------------
설정 마침
-----------------------------------------------

 

여기서


::1     localhost.localdomain   localhost         <--- 이부분을 아래와 같이 수정

 

127.0.0.1  localhost.localdomain   localhost

 

주의하실 부분은  도메인을 이용해서 로그인하는 분들께는 추가를 해야할 부분이 있다.

여기서 hostname이 아닌 IP를 이용해서 접속하게 되는데 무슨 소리냐 하면 아래 그림을 보면 리눅스에 접속했을때 사용자@뒤에 붙는것 문자열 중에 IP주소로 쓰여져서 나오는 경우가 있고 아니면 설치를 할때 설정 환경 부분에서 정해준 각자의 호스트 네임으로 문자열이 보여지게 된다.

(사용자 root@ 뒤에 있는 빨간색으로 쳐져있는게 HOSTNAME 이다.)

 

IP주소를 사용 하는 분들은 위의 내용처럼 입력을 하게 되면 에러메세지가 나오지 않고  FTP를 기동 시킬수 있고 HOSTNAME를 사용하는사람들은 아래와 같이 수정하여서 FTP를 기동시키자.

 

예를 들어 호스트 네임이 good 이고  IP주소가 999.999.999.999 이고 도메인이 www.good.com 이라고 하면


-----------------------------------------------


::1     localhost.localdomain   localhost                                                          <--- 이부분을 아래와 같이 수정해 주자.(당연히 이 부분은 지우고 아래의 두 줄만 입력하자.)


-----------------------------------------------


127.0.0.1  localhost.localdomain   localhost
999.999.999.999 
www.good.com  good 

 

라고 수정을 하고 다시 proftpd 를 실행시키면 에러 메세지가 뜨지 않는다. 위 명령어의 의미는

IP 999.999.999.999 와 도메인 www.good.com  과 HOSTNAME good 는 같다라는 명령을 내린것이다.위에서 에러창에 뜬 hostname의 주소를 정해준 거라 생각하면 이해가 쉽게 되겠다.그리고 예를 들어서 good 를 썼으니 오해 없길 바란다.


#/usr/local/proftpd/sbin/proftpd          이렇게 proftp를 실행후 FTP가 돌아가는지 확인할려면

 

#ps -aux | grep proftpd                    라고 입력을 하면 아래와 같은 화면을 볼 수 있다.

 

nobody 23595 0.0  0.4 2465______________________________ proftpd:(accepting connections)
root   22343 0.0  0.6 3009______________________________ grep proftpd

 

 

라는 화면을 볼 수 있다. 보안상 빨간 언더바를 쳐서 나머지 부분을 표시하였다.그러니 황당해 하지말고 nobody 와 root 가 뜨면 성공한 것이다.그리고 우리는 리눅스를 설치할 때 FTP서버를 안 깔았다는 전제하에서 시작한 것이므로 리눅스 명령창에서

 

#setup      을 입력하고 그 다음에 나오는 설정 창에서

 

Firewall configuration 메뉴로 들어가서 커스터 마이즈 메뉴 아래에 [  ] FTP라고 되어 있는 부분을 [ * ] FTP 로 선택해 주자. FTP를 사용하겠다는 인증을 받는 것이므로 중요하다.그리고 나서 클라이언트 프로그램인 LeechFTP 등을 사용하여 쉽게 자료를 올리고 다운 받아 보도록하자.LeechFTP에 대한 사용법은 다음 시간에 다시 하도록 하겠다.

 

급하면 웹을 검색해서 찾아보도록 한다.설정하기가 아주 쉽다.서버프로그램인 proftpd 와 클라이언트 프로그램인 LeechFTP를 잘 구별해서 생각하도록 하자.서버프로그램이 없으면 클라이언트 프로그램을 설치해봐도 아무런 소용이 없다.그리고 FTP관련 기타 명령어는 다음과 같다.


#killall proftpd         //프로세스 죽이기(종료)

# /usr/local/proftpd/sbin/proftpd   //ProFTP 데몬 띄우기


(P.S:

proftp를 죽인후 다시 재생할 땐 안 될 수도 있다. 왜 그러냐면Ftp를 정시키시면 /etc/shutmsg 파일이 생성된다. 이 파일을 지워야 재가동 할 수 있으니 찾아서 지우고 다시 실행하도록 한다.)

 

리눅스의 한글이 깨진다면

/etc/sysconfig/i18n 내용에 아래내용을 집어넣는다.

 

 

#> Vi /etc/sysconfig/i18n

 

LANG="ko_KR.eucKR"
SUPPORTED="en_US.iso885915:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="iso15"

 

저장후 빠져나와 설정을 적용시킨다.

 

source /etc/sysconfig/i18n

저장후 빠져나와 설정을 적용시킨다.

 

source /etc/sysconfig/i18n