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

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년 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