Search Results for '전체 분류'


2064 posts related to '전체 분류'

  1. 2009/05/12 Cygwin Tips - 드라이브 이동하기
  2. 2009/05/12 Cygwin Tips - Windows 명령 프롬프트(cmd.exe)에서 cygwin 명령어 실행하기
  3. 2009/05/12 Cygwin Tips - rxvt 사용하기
  4. 2009/05/12 Cygwin 환경에서 탐색기 창 열기
  5. 2009/05/12 cygwin에서 한글사용및 기타 적용
  6. 2009/05/11 YesClick 0.3.2 - 마우스 우클릭 해제 - 최신버전
  7. 2009/05/11 lftp 사용법
  8. 2009/05/11 5천억원 규모 벤처펀드 조성
  9. 2009/05/10 2009년도 규제개혁 추진과제
  10. 2009/05/10 세계의 화폐에 내얼굴을 -
  11. 2009/05/10 옛날 사이트 찾기; 없어진 홈페이지 내용 저장 캐쉬 보기; Internet Archive
  12. 2009/05/10 윈도우] 시스템 파일 복사하는 명령어. 히든파일 카피 명령; Copy Command, System Hidden File
  13. 2009/05/10 DOS 도스 시스템 파일 복사하기, 디스크 포맷한 후; System File Copy
  14. 2009/05/10 BAT파일에서, 다른 BAT파일을 불러 반복 실행하기
  15. 2009/05/10 배치파일 무한루프 구현, 루프 탈출, 빠져 나오기 예제; Batch File Infinity Loop
  16. 2009/05/10 BAT 파일 반복 시키기 배치파일 문법
  17. 2009/05/10 Vim (VI; 빔) 과 GVim 소개 [리눅스와 윈도우용의 오픈소스/무료 텍스트 에디터]
  18. 2009/05/10 Cygwin(시그윈)에, Vim (vi) 에디터 설치법
  19. 2009/05/08 자주쓰는 리눅스명령어 요약
  20. 2009/05/08 MS SQL 시드 자동 증가값 초기화
  21. 2009/05/05 NcFTP 사용법
  22. 2009/05/05 최고의 리눅스용 FTP클라이언트 ncFTP
  23. 2009/05/05 NCFTP 활용하기
  24. 2009/05/05 Ping 사용 막기허브향기
  25. 2009/05/05 netstat 를 이용하여 현재 포트를 감시허브향기
  26. 2009/05/05 ncftp, ncftpget, ncftpput - 서브디렉토리 전송허브향기
  27. 2009/05/05 유닉스에서 텍스트 파일 열기 명령어; 리눅스 Unix Text File Open
  28. 2009/05/05 VIM VI 워드랩 명령어, 화면 우측 끝에서 긴줄 자동 줄바꿈 방법; Word Wrap
  29. 2009/05/05 rm 특정 확장자만 삭제 방법, rm명령어로 지정 파일만 지우기 옵션; File Ext
  30. 2009/05/05 GREP 대소문자 구분없이 찾기 방법? 대소문자 무시 하고 찾는 법; icase

Cygwin을 처음 소개할때도 밝혔지만 Cygwin 명령어들은 자신이 현재 Unix 운영체제에서 작동하는 것으로 착각하고 있다. 이러한 환경을 제공해 주는 것이 cygwin1.dll 파일이라는 것도 이미 밝힌바 있다.

그래서 Cygwin상에서 작업을 할때는 디렉토리 경로를 DOS 스타일(\)이 아닌 Unix 스타일(/)로 구분해 주어야 한다. 이 정도는 이미 다 알고 있으리라 믿는다.

그렇다면 Cygwin에서 Windows의 다른 드라이브(D:, E:, F:)로의 이동은 어떻게 가능할까? Cygwin은 설치되면서 자동으로 Windows상의 드라이브를 /cygdrive 에 마운트를 한다. 아래 그림을 보면 쉽게 이해할 수 있을 것이다.

사용자 삽입 이미지
이 그림을 이해했다면 다음 그림을 한번 살펴보자. 실제 이동방법을 보여주고 있다.
사용자 삽입 이미지

간단하게 cd d: 라고 입력하고 실행시키면 d: 드라이브로 이동하는 것을 알 수 있다. 두번째로 직접 cd /cygdrive/e 라고 입력해도 e: 드라이브로 이동한다. 어떤 방법을 이용하더라도 상관은 없다. 사용자 마음이다. :-)

노파심에서 알려드리지만 Windows 콘솔상에서 처럼 그냥 d: 만 입력하고 실행하면 절대 d: 드라이브로 이동하지 않는다. 참고하기 바란다.

2009/05/12 12:23 2009/05/12 12:23

제목이 약간 애매한 부분이 없지않아 있는데 간단한 내용이다. cygwin을 실행하지 않은 상태, 즉 그냥 Windows 명령 프롬프트에서 cygwin 명령어를 바로 사용할 수 있는 방법을 소개하고자 한다.

Windows 사용자이든 Unix 사용자이든 path라는 말을 들어 보았을 것이다. 이는 운영체제의 환경변수로서 '실행 파일을 찾는 경로(순서)' 정도로 이해될 수 있는데, Windows Path에 cygwin의 명령어들이 들어 있는 폴더를 넣어두면 명령프롬프트에서도 바로 cygwin 명령어를 사용할 수 있다.

사용자 삽입 이미지

필자는 영문버전 Windows 2003 Server RC2 버전을 사용하는 관계로 사용자의 컴퓨터와 약간 달리 보일 수 있는데 실제 설정하는 내용은 다르지 않으니 착오없기 바란다.

한글 Windows 2000/XP 에서는 "제어판→시스템→고급→환경변수→시스템 변수→path 선택→편집" 에서 내용을 수정하면 된다.

그림은 C 드라이브 루트에 설치된 cygwin을 환경변수에 넣는 모습이다. cygwin1.dll 및 각종 명령어들이 위치하고 있는 디렉토리는 C:\cygwin\bin 이므로 C:\cygwin\bin; 이라 입력하면 된다. Unix와 달리 Windows의 path 구분자는 ':'이 아니라 ';'임에 유의한다.

명령프롬프트상에서 cygwin을 바로 실행시키기 위해서는 C:\cygwin에 있는 cygwin.bat 파일을 %systemroot%\system32 등과 같이 Windows Path가 걸려있는 폴더에 복사해 두면 된다.

참고로 Cygwin은 Windows Path를 자동으로 인식하기 때문에 Cygwin에서는 쉽게 Windows 명령어를 실행시킬 수 있다.

사용자 삽입 이미지

path 설정을 마쳤다면 위 그림에서 처럼 명령프롬프트상에서도 cygwin 명령어가 잘 실행됨을 알 수 있다.

2009/05/12 12:22 2009/05/12 12:22

rxvt는 xterm과 비슷한 X-Window 터미날 에뮬레이터이다. 컬러를 지원하고, 메모리를 적게 소모하는 장점이 있습니다.

원래 목적은 xterm을 대체하기 위해서 탄생되었지만 Cygwin에서는 Windows 명령 프롬프트를 대체하기 위해서 사용될 것이다. 한가지 특이한 것은 rxvt는 X-Windows용이지만 Cygwin에서는 X-Window 없이도 바로 실행된다.

Cygwin에서 rxvt의 장점은 빠르고 한글도 깨끗하게 출력해 준다. 또한 풀 스크린(full screen)을 지원해 준다.

사용자 삽입 이미지

원래 생김새는 이렇지 않는데 필자가 옵션을 몇가지 수정하여 Windows의 명령 프롬프트와 비슷하게 만들었다. 하지만 분명 Windows 명령 프롬프트와는 다르다는 것을 알 수 있다.

rxvt는 Cygwin을 기본설치할 경우 디폴트로 설치되지 않기 때문에 따로 추가해 주어야 한다. 설치는 어렵지 않으니 따로 설명하지 않겠다.

Windows 명령 프롬프트를 버리고 rxvt를 Cygwin 전용 콘솔로 사용하고 싶은 사용자는 cygwin.bat 파일을 다음과 같이 수정해 주면 된다.

REM Cygwin.bat
REM Cygwin을 시작하는 배치파일

@echo off

cd /d c:\cygwin\bin
rxvt -tn xterm -rv -sr -sw -sl 1000 -sbt 15 -fn fixedsys -e /bin/bash --login -i

rxvt -help를 참조하면 rxvt 의 글꼴, 배경색 등 다양한 옵션을 확인할 수 있다.

2009/05/12 12:21 2009/05/12 12:21

Concept : 원하는 디렉토리를 탐색기로 연다.


Example :

$ open <엔터> 하면 해당 폴더가 탐색기로 열린다.

$ open /home/Gloridea <엔터>하면 /home/Gloridea 에 해당하는 실제 폴더가 탐색기로 열린다.


Source :

$vi /bin/open

#/bin/bash

if [[ $1 != '' ]]
then
    OPEN_DIR=$1
else
    OPEN_DIR=`pwd`
fi

/system/WINDOWS/explorer.exe /e,`cygpath -w $OPEN_DIR`

# 참고로, /system 이라는 디렉토리는 C: 를 마운트한 디렉토리명임. 사용자에 따라 다를 수 있음.

# 드라이브를 마운트하는 것과 관련해서는 레퍼런스 및 인터넷 참조.

2009/05/12 12:16 2009/05/12 12:16

Cygwin에 포함된 소프트웨어들은 기본적으로 영어권을 대상으로 컴파일되거나 설정되있다. 이 글은 최소한의 노력으로 한글을 사용할 수 있게하는 것이 목적이다. 완전한 한글화는 C 라이브러리 등의 제약으로 상당한 노력이 필요하다.

1. 쉘(bash)에서 한글 쓰기

~/.inputrc 파일을 만들고 다음 내용을 입력한다.

set meta-flag On
set convert-meta Off
set output-meta On

2. ls에서 한글 파일명 제대로 보기

~/.bashrc에 다음 내용을 입력한다.

alias ls='ls -F --color=auto --show-control-char'

옵션을 간단히 설명하면, -F는 파일형식에 따라 파일명 뒤에 (디렉토리) /, (실행파일) *, (심볼릭링크) @를 붙이고, --color=auto는 파일형식에 따라 다른 색으로 표시하고, --show-control-char는 한글을 보이게 한다. ~/.bash_profile 대신 ~/.bashrc에 추가하는 이유는 부모쉘의 alias가 자식쉘에 전달되지 않기때문에 alias 정의가 쉘이 시작할때마다 실행되는 ~/.bashrc에 있어야 한다.

정정: ~/.bashrc에만 넣어두면 처음 cygwin을 실행할 때 (즉, login shell) 실행이 안되므로 ~/.bash_profile (혹은 ~/.profile)에도 alias 정의가 있어야 합니다. 제가 ~/.bash_profilesource ~/.bashrc를 적어두어서 미처 발견하지 못했습니다. (유제환님께 감사 :)

3. vi(vim)에서 화면 안깨지고 한글 쓰기

기본으로 설치된 vi에서 한글을 입력할때마다 화면이 깨지면, vi를 다시 컴파일해야 한다. vim 소스는 http://www.vim.org/에서 받을 수 있다.

./configure--enable-multibyte 옵션을 추가해야 한다. (최근 Cygwin의 vim 6.0 버전에서는 다시 컴파일할 필요가 없다. vi --version에서 +multi_byte를 확인할 수 있다.) 설치하면 vim 이름으로만 설치되니, vi로도 링크를 걸어준다. 또 필요하다면 /usr/local/share/vim/vim60/vimrc_example.vim/usr/local/share/vim/vimrc~/.vimrc로 복사한후 알맞게 수정한다.

여기서 한 글자가 2바이트인 한글을 올바로 처리하려면, ~/.vimrc에 다음 내용을 추가한다.

set fileencodings=euc-kr
set encoding=cp949

화면 폭보다 긴 줄이 화면에서 제일 아래 줄인 경우 줄 대신 '@' 표시가 나오는데, 이때 한글을 입력하면 화면이 한줄씩 밀리게 된다. 터미널과 관련된 문제로 보이지만 아직 정확한 이유를 찾지못했다. 만약 알고있다면 알려주길 바란다. 대신 편법으로 아래 내용을 ~/.vimrc에 추가하면 한 줄을 넘어서는 부분은 (뒤에 더 있음) >, (앞에 더 있음) <으로 표시된다.

set nowrap
set listchars=extends:>,precedes:<

보통 다음도 추가한다. 첫번째 줄은 Tab 간격을 정하고, 두번째 줄은 시끄러운 삐소리를 없앤다.

set tabstop=4
set visualbell t_vb=

4. 그런데 아직도 vi(vim)에서 한글이 계속 깨져요!

불행히도 Windows command.exe가 제공하는 터미널에 문제가 많아서 한글을 사용할때 불편한 경우가 있다. 구체적으로 행바꿈시 화면에 두칸이 띄어지는 것처럼 보이는 문제, 한글 상태에서 화면정리(Ctrl-L)시 한줄이 밀리는 현상, 긴줄이 화면 밑에 있을때 한줄이 밀리는 현상, 화면이 깨져서 자주 화면정리를 해줘야하는 문제 등이 있다. 아래의 방법으로 부분적으로 해결할 수 있다. 혹시 좋은 방법을 알고 있다면 알려주길 바란다. (Windows 98과 Windows 2000에 포함된 command.exe 혹은 cmd.exe의 경우이다. 혹시 다른 버전의 command.exe에는 이런 문제가 없을 수 있다.)

TERM 환경변수 수정
TERM 환경변수를 기본값인 cygwin이 아닌 다른 값으로 수정하여 문제를 줄일 수 있다. 그러나 Windows command.exe 문제때문에 영어권에서도 ncurses가 완벽하게 동작하지 않음을 볼 때 큰 기대를 가지진말라. 또 다른 프로그램이 정상적으로 작동하지 않을 수도 있다. ~/.bash_profileexport TERM=ansi-mini와 같이 다른 터미널 이름을 입력하면 된다.
vi(vim) 설정 수정
(Vim 6.0 버전에서는 적용이 안된다.)

위의 두방법은 원격 호스트에서 vi를 사용한다면 해당 호스트의 설정도 수정해야 한다는 단점이 있다. 편집기 서버 기능(vim 도움말 remote.txt 참조)이나 scp, rcp, ftp로 네트웍에서 파일 읽고쓰기 기능(pi_netrw.txt 참조)이 조금 도움이 될 수 있다.

완전히 다른 터미널을 사용하는 방법도 있다. 사실 이 방법들을 더 추천한다.

vim Win32 GUI 사용
vim Win32 GUI를 따로 설치한후 PATH 환경변수에 추가하여 사용한다. (예, ~/.bash_profileexport PATH=/cygdrive/c/Vim/vim60:$PATH) gvim이란 파일명으로만 설치되므로 vivim 이름으로 심볼링크를 걸거나 alias를 만들어둔다. (alias 예, ~/.bashrcfunction vim() { gvim $1 & }) vim 도움말 gui_win32.txt에 있는 팁들도 유용하다. 단점은 command.exe를 사용할때와 마찬가지로 원격 호스트에서 편집할때 문제가 있다.
telnetd 사용
cygwin의 inetd를 활성화한후 ( 팁 모음 참조) 터미널 문제가 없는 원격 터미널 에뮬레이터(teraterm 등)를 사용하여 localhost에 접속하여 Cygwin을 사용한다. 경우에 따라 원격 테미널 에뮬레이터에 맞게 TERM 환경변수를 수정할 필요가 있다. (혹시 접근하는데 문제가 있다면 Windows 2000의 '텔넷 서버 관리'에서 서비스를 중지하라.)
rxvt 사용 (재컴파일 필요)
rxvt는 cygwin에 기본적으로 포함된 터미널이다. 따로 창이 뜨고 X11은 필요없다. 그러나 폰트 등 2바이트 지원을 위해 새로 컴파일해줘야 한다.
X11에서 hanterm 사용
Windows에 X11 display server(Cygwin/XFree86, Xmanager 등)와 hanterm을 설치하고, hanterm에서 vim을 사용한다. 아니면 vim X11 GUI를 사용할 수도 있다.
2009/05/12 12:14 2009/05/12 12:14
사용자 삽입 이미지
YesClick 요놈이 버전업 되었네요..
웹서핑을 하다보면 가끔 유용한 글이나 사진 등을 발견할 때가 있습니다.  
글을 복사하기 위해 마우스 드래그를 하면 마우스 드래그도 안 되고,인쇄를 하기 위해 마우스 오른쪽 단추를 눌러도 반응이 없을 때가 있습니다.
프로그램입니다.  
프로그램 설치후 막혀 있는 홈페이지,블로그 등에 가서 단축키 "F9"를 한 번 눌러줍니다.
동시에 키입력 차단된 것도 풀어줍니다.

단축키 "F9" 를 잊지마세요. 너무 쉽고 간단해 더이상 설명이 필요없을 듯 합니다.

2009/05/11 17:44 2009/05/11 17:44

lftp는 수많은 리눅스용 CLI방식 ftp클라이언트중 '디렉토리 구조이동'까지 수행해주는 쓸모있는 클라이언트다.

리눅스든 윈도우든 CLI방식의 ftp클라이언트는 무조건 기본적으로 포함이 되어있는데,

ftp라는 놈이다.

신입시절에 ftp클라이언트이름이 ftp라서, ftp란것이 서비스인건지 pc에서 그냥 돌아가는프로그램인지 헷갈렸던 기억이 난다.


기본적으로 탑재된 ftp클라이언트는 CLI(Command Line Interface)로 제공되고있고,

파일 몇개정도 후딱 이동하는데 더할 나위없이 알맞다.

그런데...  디렉토리통째로 이동해야할땐?

CLI는 이게 답이 없다.


지금까지 알아낸 디렉토리이동을 지원하는 도구란 lftp, ncftp, scp, rsync 뭐.. 요 정도?

우리회사에서는 간혹 테라바이트단위의 데이터이전 작업을 한다.

몇시간씩 데이터이전을 하는데, 디렉토리이동을 지원해주지않으면.. 밉다.

그리고, 이동시 데이터파일들 변경날짜, 소유권등도 유지해주는 "archive 기능"도 필요할 경우가 있다.

로그도 남겨주면 좋고... 에러로그가 친절하면 더 좋다.


그래서, 나는 대용량의 파일이동을 할때면 lftp, rsync를 많이 쓴다.



1. 디렉토리 구조이동

   -  이 기능은 아래와 같은 syntax를 따른다.

      이해하기 힘들면, 당분간 외워서 치자.


    lftp -c 'open -e "mirror [REMOTE_DIR] [LOCAL_DIR]" [URL]'


   - 아래와 같은 커맨드는 c (command)옵션과

     interactive모드에서의 e (execute)옵션의 용례를 보여준다.

     

    lftp -c 'open -e "mirror /A/B /A/B" ftp://myftpid:myftppw@mysite.com'


     각론 : "mirror /A/B /A/B" 사용시

               리모트의 /A/B 디렉토리 하단의 파일및 디렉토리를

               로컬의 /A/B 디렉토리 하단으로 전송한다.
               B디렉토리가 아님을 유의할것.

              "mirror /A/B /A/B/" 로사용해야만

               리모트의 /A/B 디렉토리 자체를

               로컬의 /A/B 디렉토리 하단으로 전송한다.
               로컬측의 디렉토리구조는 /A/B/B로 변경된다.


      개선 : 1행의 명령으로 디렉토리복사를 수행하므로 상당히 쓸모있다.

               그러나, lftp에서는 기본적으로  binary 모드를 지원하므로,

               다운로드된 모든 텍스트파일에는 "^M" 문자가 붙는다.

               그러므로, 다운로드된 스크립트파일은 실행시 에러를 발생하게된다.

               sed -i 's/^M//' [FILE_NAME]  으로 아쉬운대로 문자제거를 하면된다.

               커맨드 내에 ascii모드를 포함시킬 순 없을까?


2. 동기화 기능



3. 멀티 큐 기능

   - 특정사이트 내에서의 작업단위를 큐로 지정하여 별도관리 할수 있다.


4. 멀티 슬롯 기능

   - 여러 개의 사이트로의 접속을 슬롯으로 지정하여 별도관리 할 수 있다.


5. 스크립팅 기능



6. 속도 제한기능

    - lftp.conf 전체 속도 제한 방법
      set net:limit-rate down:up (0은 속도제한 없음)
    - 예제) 3MByte/s 로 다운제한
      set net:limit-rate 3145728:0

2009/05/11 17:38 2009/05/11 17:38

방송사 KTV 프로그램 정보와이드 모닝

정부가 추경예산 2천억원을 포함해 5천억원의 벤처펀드를 추가 조성합니다. 정부는 이 자금을 일자리 창출 효과가 큰 신성장 중소기업에 집중 투자할 계획입니다. 세계적 금융위기의 여파로 작년도 벤처기업에 대한 투자가 크게 줄어든 것으로 나타났습니다. 매년 꾸준한 증가세를 보이던 벤처투자 규모가 작년에는 1조 141억원으로 전년대비 15.8% 감소했습니다. 정부가 이처럼 침체된 벤처투자의 활성화를 위해 총 5천억원 규모의 벤처펀드를 조성할 계획이라고 밝혔습니다. 정부는 벤처펀드 조성을 위해 모태펀드를 통해 추경예산 2천억원을 출자할 계획입니다. 조성된 자금은 경제회복과 일자리 창출 효과가 큰 분야에 집중 투자할 방침입니다. 정부는 또 중소기업의 창업 촉진을 위한 창업초기 전문투자펀드, 선도 벤처기업이 후발 기업에 공동투자하는 동반 성장 펀드 등 창업 지원을 위한 펀드를 집중으로 조성합니다. 이들 펀드는 양질의 일자리 창출과 미래 먹을거리 확보를 위한 녹색산업 등 신성장 분야 중소기업에 우선 투자 됩니다 정부는 아울러 자동차, 조선,IT 등 대형산업의 구조조정이 본격화 되면서 연관 중소기업 들의 인수·합병 수요도 확대될 것으로 보고 이를 위한 전용펀드도 조성하기로 했습니다. 모태펀드 출자사업과 관련한 공고는한국벤처투자 홈페이지를 통해 이뤄지며 정부는 오는 29일까지 출자심사를 진행해 다음달 말에 출자대상 펀드를 최종 선정할 예정이라고 밝혔습니다.

2009/05/11 00:00 2009/05/11 00:00
1. 정비방향

ㅇ 중소기업의 자생력 및 글로벌 경쟁력 제고를 위한 규제개혁 추진

ㅇ 기업하기 좋은 환경을 위한 규제개혁을 지속 추진하여 중소기업의 규제개혁 체감도를 높일 수 있도록

- 기업 활동을 저해하는 정부의 각종 행정사무(미등록규제)를 발굴 및 개선

2. 시기별 추진계획

ㅇ 총과제수 : 24개

ㅇ '09년 1/4분기 : 14개(58.3%), 2/4분기 : 3개(12.5%), 3/4분기 : 6개(25%), 4/4분기 : 1개(4.2%)

출처 : http://www.smba.go.kr

2009/05/10 23:55 2009/05/10 23:55
아래의 이미지를 참고하시면 될 듯..
여러 나라 화폐의 인물 도안에서 얼굴을 오려낸...
아래는 샘플로, 어느 나라 돈인지는 모르겠습니다.
안에 35장 있습니다. 우리나라 것은 없어요
사용자 삽입 이미지
사용자 삽입 이미지
2009/05/10 22:01 2009/05/10 22:01
폐쇄된 사이트나, 어떤 사이트의 오래 전의 모습을 저장하여 보여 주는 특수한 사이트가 있습니다. Internet Archive (인터넷 아카이브) 라는 사이트입니다. 인터넷 상의 거의 모든 사이트를 시간별로 캡처하여 영원히 저장해 놓는 곳입니다.

다음 주소를 찾아간 후

< Internet Archive (인터넷 아카이브) >

화면 가운데에 있는 입력창에 예를 들어

http://hacker.new21.net

이런 주소를 넣고 [Take Me Back] 이라는 버튼을 누르면 과거로 돌아갑니다. Take Me Back 은 '나를 과거로 보내 줘요'라는 뜻이죠.

그러면 그 홈페이지를 시간별로 캡처해 놓은 목록이 나옵니다.

그곳에서 예를 들어 "Sep 28, 2002 *" 이런 링크를 클릭하면, 그 당시의 옛날 홈페이지가 나오게 됩니다.

완벽하게 나오지는 않고, 그림 등이 상당히 깨져서 나옵니다. 어떤 사이트를 완벽하게 저장하려면 용량이 엄청나기 때문에, 사이트의 중요한 부분만 저장해 놓습니다.

www.yoonsukhwa.com 이 사이트 주소는 연극배우 윤석화씨의 개인 홈페이지였는데, 아시다시피 학력 문제 때문에, 작년에 홈페이지가 폐쇄되었습니다. 잘 운영되던 곳이었는데 그 문제가 생긴 며칠 후에 갑자기 없어졌더군요. 그렇지만 Internet Archive 에 보면 지금도 남아 있습니다.
2009/05/10 21:42 2009/05/10 21:42
copy 명령으로, "시스템 속성" / "히든 속성"의 파일을 복사하려면, 지정된 파일을 찾을 수 없습니다. 이런 에러가 나고 복사가 되지 않습니다.

이때는 xcopy 라는 명령에 /h 라는 옵션을 붙여서 복사해야 합니다.


다음은 도스창(명령 프롬프트;CMD.EXE)  에서,

foo.dll 이라는 시스템 속성(System File Attribute)의 파일과
bar.dll 이라는 히든 속성(Hidden File Attribute)의 파일을

000 이라는 하위 디렉토리(서브 디렉토리)로 복사하는 예제입니다:

D:\Z>xcopy foo.dll 000 /h
D:foo.dll
1개 파일이 복사되었습니다.

D:\Z>xcopy bar.dll 000 /h
D:bar.dll
1개 파일이 복사되었습니다.

D:\Z>

모든 dll 확장자의 파일을 한꺼번에 복사하려면
xcopy *.dll 000 /h
이렇게 별표(*; 애스터리스크)를 와일드카드로 사용하면 됩니다.


/h 옵션을 붙이지 않으면, 0개 파일이 복사되었습니다. 라고 나오고, 복사가 되지 않습니다.
2009/05/10 21:39 2009/05/10 21:39
도스에서 "도스 부팅용 시스템 파일들"을 디스켓 또는 디스크에 복사하는 방법입니다. 여기서 말하는 "시스템 파일"이란 "시스템 속성"을 가진 일반 파일이 아니라, IO.SYS 같이 도스로 부팅할 때 필요한 파일들입니다. 이런 파일들은 디스크에서 물리적으로 맨 처음에 위치해야 하기에, 그냥 복사해서는 안됩니다. 반드시 다음과 같은 명령을 사용해야 합니다. (윈도우98이나 MS-DOS에서만 가능한 명령이고, 윈도우XP에는 도스 시스템 파일 복사 옵션이 없습니다. 이때는 탐색기에서 마우스 우측 버튼을 눌러 "포맷"을 선택하고 MS-DOS 시동 디스크 만들기 옵션에 체크하고 포맷하면 됩니다.)

다음 명령은 A:의 플로피 디스켓을 포맷한 후, 도스 부팅 파일들을 복사합니다. 주의 사항: format은 위험한 명령입니다. a: 이런 드라이브 문자에 오타가 나지 않도록 주의해야 합니다.
format a: /s


또는 이미 포맷된 빈 디스크라면
sys a:

이렇게 하면, 시스템 파일들이 플로피 디스켓(A:)에 복사됩니다.


이제
dir a: /a

라고 치면

IO.SYS
MSDOS.SYS
COMMAND.COM
DRVSPACE.BIN


A:드라이브의 이런 시스템 파일들의 목록이 출력될 것입니다.
2009/05/10 21:37 2009/05/10 21:37
아래 예제는 example.bat 이라는 배치파일 안에서, foo.bat 이라는 별도의 다른 배치파일을 호출하여 3번 반복 실행시키는 예제입니다. foo.bat 이라는 임의의 배치파일이 같은 디렉토리(폴더)에 있어야만 실행이 됩니다.

중요한 것은, 호출할 다른 배치파일 이름 앞에 반드시 call 을 붙여 주는 것입니다. 그렇지 않으면 반복이 안됩니다. 호출된 foo.bat 파일 속에서 그냥 종료되어 버리고, example.bat 파일로 다시 돌아오지 않게 됩니다.

예제 파일명: example.bat

@echo off

call foo.bat
call foo.bat
call foo.bat



2009/05/10 21:34 2009/05/10 21:34
배치파일에서 goto문을 사용하면 무한루프를 쉽게 만들 수 있습니다. 루프를 빠져나올 때에도 역시 goto문을 사용합니다. 아래 예제에서는 ":LOOP" 와 "goto LOOP" 사이가 무한히 반복 실행됩니다.

영원한 무한 루프일 경우에는 키보드의 Ctrl+C키를 누르거나 Ctrl+Break키를 누르면 강제로 무한루프(x 무한루트)가 종료됩니다.

배치 파일로 무한 루프 만들기 예제


배치 파일명: example.bat
@echo off
setlocal


:LOOP
echo 무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...

::::::::::::::::::::::::::::::::::::::::
:: 이 부분이 없으면 영원한 무한루프가 됨
set /a myStopper+=1
if %myStopper% GEQ 10 goto QUIT
::::::::::::::::::::::::::::::::::::::::

goto LOOP




:QUIT



myStopper+=1
은 myStopper라는 변수에 1을 더하기 하여 증가시키라는 뜻입니다.


실행 결과 화면:
(편의상 루프를 10번만 돌립니다)
D:\Z>example.bat
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
무한 루프! Ctrl+C를 누르면 강제로 종료됩니다...
D:\Z>


2009/05/10 21:33 2009/05/10 21:33
배치파일 문법에서는 어떤 부분을 반복하려면 라벨을 만든 후에 goto문을 사용하면 됩니다. 아래 예제 소스에서 :REDO 라는 부분이 라벨인데, 콜론(:) 뒤에 REDO 등의 적당한 이름을 지정하면 라벨이 됩니다.

아래 예제 소스는, "문자열 출력 작업"이라는 글자들을 도스창 화면에 출력시킨 후 대기 상태로 들어가는 일을 무한 반복합니다.

무한 반복 시키기
배치 파일명: example.bat
@echo off

:REDO

echo 문자열 출력 작업
pause

goto REDO



위의 파일을 도스창을 열고 실행시키면, 다음 화면처럼 REDO... 사이의 부분이 무한 반복으로 실행됩니다. 키보드의 CTRL+C키를 눌러야만 중지됩니다.

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\Z>example.bat
문자열 출력 작업
계속하려면 아무 키나 누르십시오 . . .
문자열 출력 작업
계속하려면 아무 키나 누르십시오 . . .
문자열 출력 작업
계속하려면 아무 키나 누르십시오 . . .
문자열 출력 작업
계속하려면 아무 키나 누르십시오 . . .
문자열 출력 작업
계속하려면 아무 키나 누르십시오 . . .
일괄 작업을 끝내시겠습니까 (Y/N)? y

D:\Z>


"계속하려면 아무 키나 누르십시오 . . ."라는 부분이 나오지 않고, 무작정 반복시키려면, 예제 소스에서 pause 라는 중지문을 삭제하면 됩니다.


지정한 특정 회수만큼 반복시키기
무한 반복이 아니라, 특정 회수만큼, 가령 10번 반복이 필요할 때, 10번만 반복하려면 다음 페이지의 소스처럼 하면 됩니다:
2009/05/10 21:32 2009/05/10 21:32

윈도우에 메모장이 있듯이, 유닉스/리눅스에는 Vim(빔)이라는 텍스트 에디터가 있습니다. VI 라는 에디터를 개량한 것입니다. 레드햇 리눅스에서는 vi 라고 치면 vim 이 실행되더군요.

윈도우의 메모장과 다른 점이 있다면, Vim은 강력하다는 것과, 사용법이 어렵고 복잡하다는 것과, 거의 모든 종류의 OS에서 사용할 수 있다는 것과, 무료라는 차이가 있습니다.

제가 윈도우에서 쓸 수 있는 무료 텍스트 에디터를 찾아다닌 끝에, 정확하게 말하자면, 울트라에디트를 대체할 수 있는 에디터를 찾아다닌 끝에, Vim 을 만나게 되었습니다. 무료 에디터야 많이 있지만, 리눅스에서도 동시에 사용 가능하다는 장점에 이끌렸습니다.

Vim을 울트라에디트처럼 편리하게 만들기 위해서, Vim의 설정을 조정하느라고 거의 한 달을 허비한 적이 있습니다. 그렇지만 아무리 조정해도 끝내 울트라에디트처럼 되지는 않더군요.


Vim은 우선 2종류가 있는데, GUI를 사용한 GVim 과 전통적인 텍스트 모드의 Vim 이 있습니다.

사용자 삽입 이미지

윈도우 2000에서 실행한 GVim 6.4 : 클릭하면 확대
GVim 은, 풀다운 메뉴도 있고 해서, 텍스트 모드의 빔에 비해 편리했습니다.


사용자 삽입 이미지


윈도우의 명령 프롬프트에서 실행한, 텍스트 모드의 Vim 6.4 : 클릭하면 확대
(도스 프로그램처럼 보이지만, 도스와는 상관이 없고 어디까지나 32비트 프로그램입니다.)

텍스트 모드의 Vim은 리눅스에서와 똑같은 화면입니다. 리눅스를 하면 우선 텍스트 에디터 환경이 불편해서 괴로운데, 윈도우에서 Vim을 연습해 두면 좋을 것입니다. 바로 위의 그림과 같은 창 모드에서는 마우스가 작동하지 않을 것입니다. Alt+Enter 키로 전체 화면 모드로 전환해야 마우스가 작동합니다. (다시 Alt+Enter 키를 누르면 전체 화면 모드에서 빠져 나옴)





간단한 사용법



사용법은 책 한 권 분량이 나올 정도로 복잡해서, 가장 기초적인 것만 우선 간단히 설명합니다. Vim 이든 GVim 이든 사용법은 거의 동일합니다.

일반 에디터와 달리, 반드시 키보드의 i 키를 눌러야만, 편집이 가능한 모드로 진입합니다.

편집을 끝나거나 어떤 명령을 실행하기 위해서는 Esc 키를 한 번 누른 후, 콜론(:) 기호를 찍으면 명령을 실행시킬 수 있습니다.

빔을 종료하는 명령은 q 인데, 지금 문서를 편집 중이라면, Esc 키를 한 번 누르고, :q 를 입력하고 엔터키를 치면 종료가 됩니다.

단 문서가 저장되지 않은 경우에는 이 명령으로 종료할 수 없기에, 우선 :w 명령으로 문서를 저장해야 합니다. 파일명이 정해지지 않은 문서라면,
:w test.txt 이런 식으로 파일명도 지정해 주어야 합니다.


저장하지 않고 그냥 끝내려면 :q! 즉, 콜론+q+느낌표를 입력합니다.




Vim의 문제점



미묘한 버그가 많고 약간 불안정했습니다. 한글 텍스트를 편집하고 있으면 갑자기 화면이 모두 지워져 버리는 경우가 있고, 윈도우의 레지스트리를 수십 메가짜리 .reg 파일로 만들어서 부르면, 인코딩이 깨져 버리는 문제가 있었습니다.




다운로드



Vim 과 GVim 은 같이 발표됩니다.

http://www.vim.org/

위의 주소는 Vim의 공식 사이트인데, 유닉스는 물론 윈도우용(MS-Windows)도 받을 수 있습니다. 그런데 여기서 다운 가능한 파일은 버그 패치가 적용되어 있지 않더군요. Vim 이라는 것이 원래는 사용자가 직접 컴파일을 해서 사용하는 것이기에 그렇습니다. 그런데 자신이 직접 컴파일한다는 것이, 특히 윈도우 환경에서는 아주 어렵습니다.

http://georgevreilly.com/vim/

위의 사이트에서 패치가 적용된 Vim 을 받을 수 있습니다. 윈도우용 Vim 사용자들을 위해, 최신 버그 패치를 적용하여 컴파일해 둔 곳입니다.






지금 이 글을 올리려고 보니 Vim 7.0 이 베타 테스트를 끝내고 막 정식 버전으로 나왔군요. 현재 가장 안정된 버전이 6.4인데 6.4를 받을 수 있는 링크가 다 사라져 버렸습니다. 7.0은 아직 버그가 많을 테니 7.1쯤 나왔을 때 다운받는 것이 좋을 것입니다.
2009/05/10 21:28 2009/05/10 21:28

Cygwin에, Vim 추가 설치 순서


시그윈 셋업 파일인 setup.exe 를 실행합니다.

"다음" 버튼을 계속 누르면, "Select Packages (패키지 선택)"라는 메뉴가 나옵니다.

대화상자의 제목줄을 더블클릭해서 "전체 화면"으로 확대합니다. 이렇게 해야 쉽게 선택할 수 있습니다.



패키지 선택 메뉴의 목록에 Editors 라는 카테고리가 있는데, [+] 기호를 클릭해서 펼치면,

vim: Vi IMproved - enhanced vi editor

라는 항목이 나옵니다. 그 항목 바로 좌측의 Skip 이라고 되어 있는 부분을 클릭하면, 현재 Vim의 버전이 7.0.035-1 등으로 표시됩니다. 이러면 VIm이 설치에 포함된다는 의미입니다.


이 상태에서 "다음" 버튼을 누르면 vim이 인스톨됩니다.




현재 vim 7.0 이 인스톨되는데, 너무 불안정하여서 사실상 쓸 수가 없었습니다. 현재 가장 안정적인 빔 버전은 6.4입니다.

위의 설치 과정에서 gvim 에 체크하면, GUI버전의 vim이 설치되는데, 잘 작동하지 않았습니다.
2009/05/10 21:26 2009/05/10 21:26

자주쓰는 리눅스명령어 요약

<사용자 관련>

 adduser [계정이름] : 계정생성
 passwd [계정이름] : 해당계정의 비번변경
 userdel -r [계정이름] : 계정삭제 및 계정의 파일폴더 모두 삭제(-r)
 w : 현재 사용중인 사용자
 last : 최근 이용한 접속자

<파일/디렉토리>

 ll : 전체폴더구조 보기
 ls : 폴더구조 간단히 보기
 ls -al : 숨긴파일 까지 다 보기
 ls [디렉토리명] : 해당 디렉토리보기
 ls [파일명 또는 일부] : 해당되는 파일만 보여주기
 
 cd : 디렉토리 이동
 
 chmod 755 [디렉토리] : 파일권한변경 (내꺼, 같은그룹, 전체)
 
 mkdir [디렉토리] : 디렉토리생성
 mkdir -p a/b : a디렉토리 생성후 하위에 b디렉토리 생성
 rm [파일명] : 파일삭제
 rmdir [디렉토리명] : 디렉토리삭제 (파일존재시 삭제 불가)
 rm -rf [디렉토리명] : 하위 디렉토리 및 파일 까지 모두 삭제
 
 touch [파일명] : 해당파일의 수정일을 현재시각으로 변경(파일없을시 빈파일 생성)
 
 cp [파일1] [파일2] : 파일1을 파일2로 복사
 cp -r [디렉토리1] [디렉토리2] : 디렉토리1을 디렉토리2로 하위폴더와 파일까지 복사
 cp -a [파일1] [파일2] : 소유권을 유지하면서 복사
 move [파일/디렉토리] [디렉토리] : 파일 및 디렉토리 이동
 
 cat [파일명] : 파일내용 출력
 cat /dev/cdrom > linux.iso : CD롬에 있는 내용을 CD 이미지 파일로 만듦
 cat a.txt >> b.txt : b.txt 파일 하단에 a.txt 파일의 내용 추가
 
 more [파일명] : 파일내용을 페이지단위로 출력 (space:다음페이지, b:이전페이지)
 
 ln [해당디렉토리 또는 파일] [링크이름] : 하드링크
 ls -s [해당디렉토리 또는 파일] [링크이름] : 심볼릭링크
 
 | : 파이프로 두개의 명령을 연결시켜줌
 (예: ls -l /usr/bin | more : ls에서 검색된 파일 폴더를 페이지별로 보여줌)
 
 파일권한 (자신/그룹/나머지: 4:읽기, 2:쓰기, 1:실행)
 chown -R ohhappy.wheel /home/ohhappy/* : /home/ohhappy하위의 모든 파일 디렉토리의 소유자를 ohhappy로 그룹을 wheel로 변경
 
 mount -t iso9660 /dev/cdrom /mnt/cdrom : cdrom 마운트
 mount -t vfat /dev/fd0 /mnt/floppy : floppy 마운트
 umount /dev/cdrom 또는 umount /mnt/cdrom
 
 하드디스크 추가시
 fdisk /dev/hdb (프라이머리 슬레이브 하드의 파티션 결정
 mkfs.ex2 /dev/hdb1 (hdb1 파티션 포맷)
 fsck.ext2 /dev/hdb1 (파일시스템 점검)
 mount -t ext2 /dev/hdb1 /data (/data 디렉토리에 마운트)
 vi /dev/fstab (에 마운트 기록, 부팅시 인식)
 
 
<검색>

 find [경로] -name [파일명] : 하위경로의 파일찾기
 /[찾을 문서명] : 문서나 메뉴얼안에서 문자찾기
 which [명령어] : 명령어의 절대경로를 알려줌
 whereis [명령어] : 명령어의 바이너리, 소스, 맨페이지위치 알려줌
 
 
<시스템/프로세스 관련>

 top : 시스템 프로세스 및 메모리 및 CPU 사용량
 uname -a : 운영체제,호스트명,커널버전,시스템부팅시간,아키텍쳐 보여줌
 uname -m : cpu 보여줌
 free -m : 메모리 보여줌(-m 메가단위, -k kb단위)
 df -h : 마운트되어있는 디스크 사용량
 du --max-depth=1 -h /home : 각 계정별로 이용량 확인
 lsdev : 현재 사용중인 장치정보
 w : 현재 사용중인 사용자
 last : 최근 이용한 접속자
 date : 현재 설정된 시간
 clock : Cmos에 설정된 시간
 rdate -s soback.kornet.nm.kr : soback.kornet.nm.kr에서 시간을 전송받아 시간 수정
 clock -w : cmos 시간으로 수정
 netstat -tu : 시스템에 연결된 소켓정보
 ifconfig : 네트웍 장치설정 정보
 
 ps -[옵션]: 현재 시스템에서 구동중인 프로세스 상태확인
 (-a:전체사용자, -l:자세히보기, -x:제어터미널이 없는 프로세스, -f:pstree명령어와 같은 프리구조로 출력)
 (상태값: D:구동일시중지중, R:구동중, S:쉬는중, T:구동정지중, Z:좀비프로세스, W:메모리를 안쓰는 스와핑상태)
 ps auxfw -width=300 : 프로세스의 사용자 확인 (주로 | more 필요)
 pstree : 구동중인 프로세스를 투리구조로 보여줌
 
 kill -9 [프로세스번호] : 프로세스 강제종료
 killall -9 [프로세스이름] : 프로세스 강제종료
 
<시스템 종료>

 shutdown -h now : 시스템 종료 (-k : 메시지만전달, -r : 재부팅, -h : 셧다운후 종료 -c:셧다운중지)
 halt : 시스템 종료
 shutdown -r now : 시스템 재부팅
 reboot : 시스템 재부팅
 shutdown -k '지금시스템을 종료합니다.' : 시스템 종료 메시지 송부
 
<압축>

 tar cvf [생성될 파일명:예 httpd.tar] [묶을 디렉토리] : 설정한 디렉토리를 포함한 하위 디렉토리 및 파일을 묶음
 tar xvf [묶인파일:예 httpd.tar] : tar파일을 현재 디렉토리에 품
 tar tvf [묶인파일:예 httpd.tar] : tar파일을 풀지 않고, 파일리스트만 출력
 tar cvfz [압축파일명 :예 httpd.tar.gz] [압축할 디렉토리] : 파일을 묶어서 압축함
 tar xvfz httpd.tar.gz : tar.gz 압축해제
 tar xvfj httpd.tar.bz2 : tar.bz2 압축해제
 
<보안암호파일 생성>

 htpasswd -c [생성될 파일명] [계정이름] : 암호화된 계정생성명령
 
<RPM>
  
   rpm -ivh [패키지 파일명] : rpm 패키지 설치
   rpm -Uvh [패키지 파일명] : rpm 패키지 업그레이드
   rpm -e [패키지명] : rpm 패키지 삭제
   rpm -qa : 현재 설치되어있는 패키지 리스트
   rpm -qa | grep [패키지명] : 패키지명 단어가 포함된 패키지 출력
   rpm -ql [패키지명] : 패키지가 설치한 파일 리스트
   rpm -qlp [패키지파일명] : 패키지 설치전 설치될 파일목록
   rpm -qf [파일명(절대경로)] : 어느패키지가 설치한 파일인지 표시
   rpm -qi [패키지명] : 패키지 정보 출력
   rpm -qip [패키지파일명] : 설치할 패키지 정보 출력
   rpm -Va : 패키지 검증
   
<ncftp>

 ncftp -u [아이디] [접속주소] : ncftp 로그인
 quit : ftp 종료
 get : 다운로드 명령
 mget : 현재폴더내 모든 파일 다운로드
 mget -R * : 현재폴더 및 하위 폴더 파일 다운로드

<DB 자동백업>

 1단계. (vi /etc/crontab) 다음줄 추가
 
 30 4 * * * root run-parts /etc/cron.mysqldump
 (분 시 일 월 주 사용자권한 실행부분 실행디렉토리, 매일 4시 30분실행)
 (22 4 * * 0 매주 일요일(0) 4시 22분 실행)
 (42 4 1 * * 매월 1일 4시 42분 실행)
 
 2단계. 해당 디렉토리생성
 mkdir /etc/cron.mysqldump
 
 3단계. 해당 디렉토리에 실행할 내용이 들어있는 파일 생성
 vi mysqldump.0709.sh*
 내용입력
 
 #!/bin/bash

 . /etc/profile 
 
 TimeOfDay=`date +"%Y%m%d.%H%M"`
 mkdir -p /etc/cron.mysqldump/DATA/${TimeOfDay}
 UUSER="root"
 PPASS=""

 /usr/local/mysql/bin/mysqldump -u${UUSER} devbank > /etc/cron.mysqldump/DATA/${TimeOfDay}/devbank.sql
 /usr/local/mysql/bin/mysqldump -u${UUSER} designter > /etc/cron.mysqldump/DATA/${Time0fDay}/designter.sql 

<디렉토리별 구분>

 /bin : 기본 명령어가 위치
 /boot : 커널이미지가 존재
 /dev : 장치를 사용할때 필요한 특수파일이 위치
        (hda,hdb,hdc,hdd:하드,CDROM fd0:플로피 ttyS0,ttyS1..:com포트 sda,sdb..:스카시장치 lp0:프린터)
 /etc : 애플리케이션 및 서버 프로그램의 환경설정에 필요한 설정파일 저장
 /usr : 리눅스 바이너리 프로그램을 설치하는 곳, 패키지 설치시 대부분 이곳에 저장
 /home : 각 계정의 이용자가 사용하는 공간
 /lib : 부팅과 시스템 운영에 필요한 공유라이브러리 및 커널 모듈저장
 /lost+found : 파일시스템이 이상일 있을때 구동되는 fsck 명령에 의해 사용됨 (평소에 빈폴더임)
 /mnt : CDROM,플로피등의 장치의 마운트 포인트를 제공함
 /opt : 덩치가 너무 큰 몇몇 리눅스 패키지를 설치할때 사용함
 /proc : 가상파일 시스템으로 프로세스와 시스템 정보를 제공. 파일명으로 존재하는 디렉토리는 커널정보를 숫자로 존재하는 디렉토리는 현재 실행되고 있는 프로세스의 정보를 담고 있음.
 /root : root의 홈디렉토리. 가능한 많은 데이터를 저장하지 않는 것이 좋음
 /sbin : 시스템 운영에 사용되는 명령어가 들어있음
 /chroot : 프로그램을 감옥환경에서 돌릴때 루트공간
 /chache : 플락시 서버 돌릴때 필요한 공간
 /var : 시스템의 로그파일이 저장되는 곳, 가변자료들이 저장, 로그, 스풀, mysql db등
 /tmp : 템프파일,시스템재구동시 모두 삭제됨, 프로세스 진행중 필요에 의해 임시로 저장

<명령어 도움말>

 man [명령어] : 명령어에 해당하는 도움말
 (man 페이지 안에서 /[검색어]는 해당단어검색, n은 다음 검색단어, q는 man 종료)
 
 /usr/share/man : man 파일 저장위치
 man1 : 사용자프로그램
 man2 : 시스템 호출명령어
 man3 : 라이브러리 함수 및 서브루틴
 man4 : /dev 디렉토리에 포함된 특수파일
 man5 : 파일 포맷
 man6 : 게임
 man7 : 분류에 포함되지 않는 기타 프로그램
 man8 : 시스템 관리 명령어
 man9 : 커널관련 명령어
 mann : Tcl/Tk  내장 명령어
 
<네임서버 실행>

 vi /etc/named.conf : 네임서버 설정파일
 vi /var/named/[각파일] : 네임서버 설정파일
 /etc/rc.d/init.d/named restart : 네임서버 재실행
 
<네임서버설정>

    1. /etc/named.conf 파일을 설정한다.
     
    case 1.
    <!--
 // generated by named-bootconf.pl

 options {
   directory "/var/named";  (지정한파일이 어느 디렉토리에 위치하는 지를 보여줌)
         check-names master warn;
         dump-file "/var/tmp/named_dump.db";
          statistics-file "/var/tmp/named.stats";
          forwarders {
                         168.126.63.1;
                        164.124.101.2;
                        };
  /*
    * If there is a firewall between you and nameservers you want
    * to talk to, you might need to uncomment the query-source
    * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };
   
    (최상위 도메인 . 에 대한 정보를 제공함, named.ca는 최상위 도메인 목록제공)
 zone "." {
  type hint;
  file "named.ca";
 };
 
 (루프백 장치설정을 제공하는 영역)
 zone "0.0.127.in-addr.arpa" {
  type master;
  file "named.local";
 };
 
 (호스트 명을 저장할 파일명을 설정)
 zone "eoholdings.co.kr" {
        type master;  (1차네임서버인경우 master, 2차인경우 slave로 설정)
        file "eoh.zone"; (파일 이름 설정)
 };
    -->
   
    case 2.
   
    <!--
    // generated by named-bootconf.pl

 options {
  directory "/var/named";(지정한파일이 어느 디렉토리에 위치하는 지를 보여줌)
  /*
   * If there is a firewall between you and nameservers you want
   * to talk to, you might need to uncomment the query-source
   * directive below.  Previous versions of BIND always asked
   * questions using port 53, but BIND 8.1 uses an unprivileged
   * port by default.
   */
  // query-source address * port 53;
 };

 (최상위 도메인 . 에 대한 정보를 제공함, named.ca는 최상위 도메인 목록제공)
 zone "." IN {
  type hint;
  file "named.ca";
 };

 (루프백 장치설정을 제공하는 영역)
 zone "0.0.127.in-addr.arpa" IN {
  type master;
  file "named.local";
  allow-update { none; };
 };
 
 (호스트 명을 저장할 파일명을 설정)
 zone "hanter21.co.kr" IN {
  type master;
  file "hanter21.co.kr";
  allow-update { none; };
 };
 
 zone "13.233.211.in-addr.arpa" IN {
  type master;
  file "hanter21.rev";
  allow-update { none; };
 };

 key "key" {
  algorithm hmac-md5;
          secret "dHlNPdoeCpUMAONBoWbYPPJzYAcXOeIUBjnTLKlFHMTgXDTvMQZvzwqdx0MB";
 };
 -->
 
 2. /var/named에 각 도메인별 네임서버 설정파일을 만든다
 
 case 1.
 
 <!--
  @       IN      SOA     ns.devbank.co.kr. master.devbank.co.kr.  (
                                        1997022701 ; Serial
                                        28800      ; Refresh
                                        14400      ; Retry
                                        3600000    ; Expire
                                        0 )    ; Minimum
                IN      NS     devbank.co.kr.
                IN      A      211.233.13.196
                IN      NS     ns.devbank.co.kr.
 
                IN      MX     10 mail.devbank.co.kr.
  @             IN     A       211.233.13.196
  ns            IN     A       211.233.13.196
  mail          IN     A       61.82.82.118
  ftp           IN     A       211.233.13.196
  www           IN     A       211.233.13.196
 -->
 
 case 2.
 
 <!--
     (생존시간)
  $TTL 0
  $ORIGIN hanter21.co.kr.
  (@는 named.conf에서 정의한 도메인명을 대신)
  (SOA는 권한의 시작)
  (NS는 네임서버 역할)
  (MX는 메일호스트)
  (A는 호스트)
  @       IN      SOA     ns.ns.hanter21.co.kr. root.hanter21.co.kr.(
                                        1997022701 ; Serial
                                        28800      ; Refresh
                                        14400      ; Retry
                                        3600000    ; Expire
                                        0 )    ; Minimum
    IN   NS   ns.hanter21.co.kr.
    IN  MX   10 mail.hanter21.co.kr.
  @   IN   A   211.233.13.196
  www  IN   A   211.233.13.196
  ns  IN  A  211.233.13.196
  mail IN  A  211.233.13.196
  vod     IN      A       211.233.13.194
 -->
 
 3. 네임서버 상세 문서.. (http://www.kr.freebsd.org/doc/PoweredByDNS/ 또는 네임서버.hwp)

<아파치실행>
 
 vi /usr/local/apache/conf/httpd.conf : 아파치 웹서버 설정파일
 /usr/local/apache/bin/apachectl restart : 아파치 재실행
 /usr/local/apache/bin/httpd -t : 아파치 설정파일 문법 오류 확인
 chk
 
<아파치 설치>
 
 1. tar xvfz apache_XXXX.tar.gz : 적당한 디렉토리에 압축해제
 2. cd apache_XXXX : 압축이 풀린 디렉토리로 이동
 3. configure
    configure --help : 옵션 도움말 보기
    --prefix=/home/httpd : 설치될 디렉토리
    --logfiledir=/var/log/httpd : 로그파일이 저장될 디렉토리
    --sysconfdir=/etc/httpd/conf : httpd.conf가 저장될 디렉토리
    --libexecdir=/etc/httpd/modules : 기능모듈파일이 저장될 디렉토리
    --sbindir=/usr/sbin : httpd 데몬과 바이너리가 저장될 디렉토리
    --bindir=/usr/bin : htpasswd 같은 바이너리 저장 디렉토리
    --mandir=/usr/share/man : 메뉴얼 페이지 저장 디렉토리
    --enable-module=all : 아파치가 사용할 모듈 전체 선택
    --enable-shared=max : 모듈처리가 가능한 모든 부분을 모듈처리
    --with-perl=/usr/bin/perl : 펄을 사용할때 펄의 디렉토리
    --verbose : configure 과정 출력
    --enable-suexec : cgi 구동시 지정 사용자로 변경하여 구동됨
    --suexec-caller=nobody : 위의 사용자 변경시 사용자
    --suexec-docroot=/home/htdocs : 다큐먼트 루트 디렉토리
    --suexec-logfile=/var/log/httpd/suexec_log : 로그 디렉토리 및 파일
    --suexec-userdir=public_html : 일반사용자의 홈디렉토리
    --suexec-uidmin=99 : caller에서 설정한 사용자의 UID
    --suxexc-gidmin=99 : caller에서 설정한 사용자의 GID
    --suxexc-umask=022 : caller가 사용할 PATH
    --runtimedir=/var/run : 웹서버 구동시 생성될 프로세스 PID 저장 디렉토리
    4. make : 바이너리와 설정파일 생성
    5. make install : 바이너리와 설정파일을 지정한 디렉토리로 복사
 
<mysql>

 mysql -u [계정이름] -p [비밀번호] : mysql 접속
 
 /usr/local/mysql/bin/mysqldump -u root [디비명] > [파일명] : DB 백업
 mysql -u root [디비명] < [파일명] :  DB 복원  
 
<mysql 설치>

 1. tar xvfz mysql-XXXX.tar.gz : 압축풀기
 2. cd mysql-XXX : 해당디렉토리로 이동
 3. configure
    ./configure --help : 도움말 및 옵션보기
    --prefix=/home/mysql : 설치 디렉토리
    --libexecdir=/usr/sbin : 바이너리 설치 디렉토리
    --localstatedir=/home/mysql/var : DB가 저장될 디렉토리
    --bindir=/usr/bin : 일반 바이너리가 설치될 디렉토리
    --sysconfdir=/etc : 설정파일(my.cnf) 가 저장될 디렉토리
    --with-mysqld-user=mysql : mysqld를 일반 계정 mysql로 구동
    --with-charset=euc_kr : 한국어 정렬지원
 4. make : 바이너리와 설정파일 생성
    5. make install : 바이너리와 설정파일을 지정한 디렉토리로 복사 
 6. echo "/home/mysql/lib/mysql" >> /etc/ld.so.conf : 라이브러리가 설치된 디렉토리 설정 추가
 7. ldconfig : 시스템이 참조하는 cache 파일 갱신
 8. chmod 755 /home/mysql/share/mysql/mysql.server : 실행가능 허용
 9. cp /home/mysql/share/mysql/mysql.server /etc/init.d/mysqld
 10. cp /home/mysql/share/mysql/my-example.cnf /etc/my.cnf : configure 시 설정파일 위치로 변경
 11. mysql_install_db : 초기화 DB 생성
 
 12. groupadd -r mysql
 13. useradd -M -c MySQL server -d /home/mysql -g mysql -s /bin/false -r mysql
     : mysql 계정으로 사용하도록 configure 하였으므로 계정생성
 14. chown -R mysql.mysql /home/mysql/var : 소유권 변경
 15. chkconfig mysqld on : 부팅시 자동실행
 16.  /etc/init.d/myslqd start : 실행
 
<PHP 설치>
 
 1. tar xvfz php-XXXX.tar.gz : 압축풀기
 2. cd v-XXX : 해당디렉토리로 이동
 3. configure
    ./configure --help : 도움말 및 옵션보기
    --with-mysql=/home/mysql : db를 mysql로 사용하고, 디렉토리 정의
    --enalbe-versioning : php 3,4 버전 호환
    --enable-trans-sid : php4의 세션관리기능 사용
    --with-apxs=/usr/sbin/apxs : php를 DSO방식으로 컴파일 하기 위해 apxs 위치 설정
    --with-config-file-path=/etc : 설정파일 위치 지정
    --disable-debug : zend 옵티마이저를 사용할수 있게 설정
 4. make : 바이너리와 설정파일 생성
    5. make install : 바이너리와 설정파일을 지정한 디렉토리로 복사
    6. cp ./php.ini-optimized /etc/php.ini : --with-config-file-path로 지정한 디렉토리에 설정파일 카피
    7. www.zend.com/store/products/zend-optimizer.php 다운로드
    8. /etc/httpd/modules 로 ZendOptimizer.so 를 카피
    9. vi /etc/php.ini 에 다음줄 2줄 추가
       zend_optimizer.optimization_level=15
       zend_extension=/etc/httpd/modules/ZendOptimizer.so
    10. vi httpd.conf에서 Addtype에 php3, phtml, inc, ph, html등 추가
    11. /etc/init.d/httpd restart : php 재실행
   
<httpd.conf 설정>

 ServerType standalone : 구동형태를 standalone을 기본값으로 함
 PidFile /var/run/httpd.pid : 구동되는 프로세서의 PID가 기록되는 파일 설정
 Timeout 300 : 클라이언트와 서버간 연결지연 시간 오류 설정 : 초단위
 KeepAlive On : 서버연결에 한번이상 요청을 허용
 MaxKeepAliveRequest 100 : keepalive가 on인경우 서버에 요청할수 있는 프로세서의 갯수
 KeepAliveTimeout 5 : 클라이언트가 5초이내에 다음요청이 없을때 접속 끊음
 MinSpareServers 5 : 순간적인 시스템 부하를 줄이기 위해 여분의 데몬을 생성하고, nobody로 구성되는 httpd 생성
 MaxSpareServers 10 : 여분의 데몬 제한
 StartServers 5 : 여분의 httpd 구동
 MaxClients 256 : 동시접속자수 제한
 MaxResuestPerChild 100 : 하나의 프로세스가 서비스를 몇번하고 소멸될 것인가
 LoadModule php4_module libexec/libphp4.so : 아파치 모듈
 AddModule mod_php4.c :LoadModule과 동시 설정
 Port 80 : 80 포트 사용
 User nobody : 데몬의 소유권
 Group nobody : 데몬의 그룹권한
 ServerAdmin root@devank.co.kr : 웹서버에 문제가 발생시 관리자메일 주소를 보여줌
 DocumentRoot "/home/httpd/htdocs" : 사이트 루트디렉토리
 UserDir public_html : 일반사용자의 ~를 통해 사용할 경우 디렉토리..
 DirectoryIndex index.html index.php, index.cgi : 웹사이트 초기파일
 AccessFileName .htacess : 특정디렉토리 사용자 인증 설정 파일
 DefaultType text/plain : 알수없는 확장자를 만났을때.. text로처리
 HostnameLookups off : access_log에 IP대신 host명으로 기록
 ErrorLog /home/httpd/logs/error_log : 로그파일기록
 CustomLog /home/httpd/logs/access_log common : 클라이언트 접속 로그
 ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/ : cgi 실행 설정
 AddType application/x-httpd-php .php .php3 : 웹서버가 인식할 확장자
 
 
 /etc/init.d/httpd configtest : 문법적 에러 점점
 
 NameVirtualHost 211.233.58.196
 <VirtualHost 211.233.58.196>
 ServerAdmin root@devbank.co.kr
 DocumentRoot /home/ohhappy/docs
 ServerName devbank.co.kr
 ErrorLog logs/error_log
 CustomLog logs/access_log common
 </VirtualHost>
 
 Options Indexes FollowSymLinks MultiViews 에서 indexes란 단어를 빼면 디렉토리인덱스 서비스 제외
 
<ftp 시작>
 /etc/init.d/proftd-standalone start
  
<Sendmail>
 
 1. Sendmail 패키지
    - sendmail-8.11.2.-14.i386.rpm
    - sendmail-cf-8.11.2-14.i386.rpm

 2. vi /etc/mail/aliases
    webmaster : root #webmaster로 오는 메일을 root가 수신
    sales : neo,nvng,bermine,nvng@devbank.co.kr #sales@devbank.co.kr로 오는메일을 neo, nvng, bermine 계정이 동시에 수신
   
 3. vi /etc/mail/access
 
    211.233.13.195 RELAY   : 릴레이 허용
    devbank.co.kr    RELAY   : 릴레이 허용
    yahoo.com        REJECT  : yahoo.com 메일 발송 거부
 
 4. vi /etc/mail/local-host-names
    : 복수의 메일 호스트를 사용할경우 반드시 설정
    devbank.co.kr
    designter.com
    ns.devbank.co.kr
   
 5. vi /etc/mail/virtusertable
 
    stock@eoholdings.co.kr lucky
    lucky@eoholdings.co.kr lucky
   
    : 한계정이 여러개의 메일을 일괄수신하게 하는 것
 
 6. smtp 사용자 인증
 
    cyrus-sasl-1.5.24-17 : 설치
    cyrus-sasl-devel-1.5.24-17 : 설치
    vi /usr/lib/sasl/Sendmail.conf
    pwcheck_method:pam 을 pwcheck_method:sasldb 로 변경
   
    saslpasswd -u [호스트명] [사용자명] : sasldb 생성, 계정생성
    sasldblistusers : 사용자 리스트 출력
   
    vi /etc/mail/sendmail.mc
    DEMON_OPTIONS('Port=smtp, Addr=127.0.0.1, Name=MTA')dnl : 수정
    m4 /etc/mail/sendmail.mc > sendmail.cf :sendmail.cf 생성
    sendmail.cf를 /etc로 복사
   
    /etc/init.d/sendmail restart : 샌드메일 재구동
   
 7. 메일계정만 사용하는 계정생성
    useradd -M -s /bin/false 사용자명  
   
<기본보안설정>

 1) 패스워드 길이 강제 지정 (vi /etc/login.defs)
 
  PASS_MIN_LEN 5
  to read;
  PASS_MIN_LEN 8
 
 2) 루트계정의 자동타임아웃지정 (vi /etc/profile)
 
  TMOUT=7200 (초단위시간, HISTSIZE 아래 설정)
 
 3) 사용하지 않는 콘솔 프로그램 비활성화
 
  rm -f /etc/security/console.apps/halt
  rm -f /etc/security/console.apps/poweroff
  rm -f /etc/security/console.apps/reboot
  rm -f /etc/security/console.apps/shutdown
  rm -f /etc/security/console.apps/xserver (X 서버 설치시만)
 
 4) 파일의 권한 설정
 
  chattr +i /etc/services (서비스네임과 포트넘버가 기록된 파일)
  chattr +i /etc/passwd
  chattr +i /etc/shadow
  chattr +i /etc/group
  chattr +i /etc/gshadow
 
  (권한을 풀때는 -i 로 옵션을 변경해 주면된다.)
 
  chattr -R +A /var/spool  (for a news and mail)
  chattr -R +A /chache  (for a proxy caches)
  chattr -R +A /home/httpd/ona   (form a web page)
 
  (해당 디렉토리에 atime 속성을 적용한다.)
 
 5) 루트가 열수있는 콘솔을 하나로 제한 (vi /etc/securetty)
 
  tty1 만남겨두고 모두 주석처리한다.
 
 6) 사용하지 않는 유저 및 그룹삭제
 
  userdel adm
  userdel lp
  userdel sync
  userdel shutdown
  userdel halt
  userdel news
  userdel uucp
  userdel operator
  userdel games
  userdel gopher
  userdel ftp
 
  groupdel adm
  groupdel lp
  groupdel news
  groupdel uucp
  groupdel games
  groupdel dip
  groupdel pppusers
  groupdel popusers
  groupdel slipusers
 
 7) 누구나 루트가 되는 것 방지하기
 
  1단계.
  (vi /etc/pam.d/su) 다음 내용추가
  auth sufficient /lib/security/pam_rootok.so debug
  auth required /lib/security/pam_wheel.so group=wheel
 
  2단계.
  usermod -G10 [사용할 계정이름]
  (G는 그룹리스트 추가를 10은 wheel 그룹을 의미함)
  (루트가 될수 있는 계정을 등록한다.)
 
 8) 사용자의 시스템 자원제한
 
  1단계.
  (vi /etc/security/limits.conf)
 
  hard core 0      (코어파일 생성의 저지)
  hard rss  5000    (계정별 사용자 메모리를 5메가로 제한)
  hard nproc 20   (프로세스 숫자를 20개로 제한)
 
  2단계.
  (vi /etc/pam.d/login)
 
  session  required  /lib/security/pam_limits.so
 
 9) 특정 파티션, 폴더의 권한 설정하기
 
  fstab 파일의 옵션
  default  모든 것이 가능함
  noquota  사용자의 하드용량을 제한함
  nosuid  suid/sgid 엑세스를 못하게 함
  nodev  특별한장치나 문자 디바이스를 엑서스 하지 못하게 한다.
  noexec  실행파일을 실행할수 없도록 함
  quota  사용자의 용량을 제한하지 않음
  ro  읽기만 허용
  rw  읽기 쓰기 허용
  suid  SUID/SGID를 허용
 
  (vi /etc/fstab)
  /dev/sda11 /tmp  ext2  defaults 1 2
  /dev/sda6  /home ext2  defaults 1 2
 
  to read;
 
  /dev/sda11 /tmp ext2 defaults,rw,nosuid,nodev,noexec 1,2
  /dev/sda11 /home ext2 defaults,rw,nosuid,nodev,nodev 1,2
 
  재부팅해야 적용됨
 
 10) rpm 파일들을 안전한 장소에 옮긴후 퍼미션을 변경해 준다.
 
  chmod 700 /bin/rpm
        
 11) 명령어 히스토리 파일 갯수 제한 (vi /etc/profile)
 
  HISTFILESIZE=20
  HISTSIZE=20
 
  (사용자의 홈디렉토리의 .bash_histroy 파일에 20개까지만 저장)
 
 12) Lilo 부트 로더 설정
 
  1단계.  (vi /etc/lilo.conf)
 
  boot=/dev/sda
  map=/boot/map
  install=/boot/boot.b
  prompt
  timeout=00  (부팅이미지 지연시간, 멀티부팅시는 00불가)
  Default=linux
  restricted  (싱글모드에 패스워드를 걸기위한 옵션)
  password=<password> (싱글유저접속시 패스워드)
  image=/boot/wmlinuz-2.2.12-20
  lable=linux
  initrd=/dev/sda6
  read-only
 
  2단계. 파일이 암호화가 안되어 있으므로 슈퍼유저권한설정
 
  chmod 600 /etc/lilo.conf
 
  3단계. 효과적용단계
 
  /sbin/lilo -v
 
  4단계. 속성변경
 
  chattr +i /etc/lilo.conf
 
 13) ctrl+alt+del 비활성
 
  1단계.
 
  (vi /etc/inittab)
 
  ca::ctrlaltdel:/sbin/shutdown -t3 -r now
 
  to read;
 
  #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
 
  2단계. 적용실행
 
  /sbin/init q
 
 14) init.d 디렉토리 파일들의 파일 권한 변경 (프로세스들과 부팅시 필요한 파일들임
 
  chmod -R 700 /etc/rc.d/init.d/*
 
 15) rc.local 파일 설정 (로그인시 컴터의 정보가 못나오게 함)
 
  1단계. (vi /etc/rc.d/rc.local) 다음을 주석처리한다.
 
  #echo "" > /etc/issue
  #echo "$R" >> /etc/issue
  #echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
  #
  #cp -f /etc/issue /etc/issue.net
  #echo >> /etc/issue
 
  2단계. 다음 파일을 지운다.
 
  rm -f /etc/issue
  rm -f /etc/issue.net
 
 16) setuid 걸린 프로그램의 퍼미션제거
 
  1단계. 찾는 법
 
  find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;
  (04000은 setuid 이며, 02000은 setgid임.. 이런파일은 누구나 사용할수 있다.)
 
  2단계. 권한ㅇ르 지워야할 파일들
 
  chmod a-s /usr/bin/chage
  chmod a-s /usr/bin/gpasswd
  chmod a-s /usr/bin/wall
  chmod a-s /usr/bin/chfn
  chmod a-s /usr/bin/chsh
  chmod a-s /usr/bin/newgrp
  chmod a-s /usr/bin/write
  chmod a-s /usr/bin/usernetctl
  chmod a-s /usr/bin/traceroute
  chmod a-s /bin/mount
  chmod a-s /bin/umount
  chmod a-s /bin/ping
  chmod a-s /bin/netreport
 
 17) /etc/sysctl.conf 파일 설정
 
  (vi /etc/sysctl.conf)
 
  net.ip4.icmp_echo_ignore_all = 1  (핑요청으로부터 보호)
  net.ipv4.icmp_echo_ignore_brodacasts = 1 (브로드캐스트로부터의 보호)
  net.ipv4.conf.all.accept_source_route = 0 (라우팅 요청으로의 보호)
  net.ipv4.tcp_syncookies = 1   (tcp syn cookie로부터 보호/예전 야후공격방법)
  net.ipv4.conf.all.accept_redirects = 0  (ICMP 재접속 요청으로 부터 보호)
  net.ipv4.ip_always_defrag = 1   (패킷분할요청으로 부터 보호)
  net.ipv4.icmp_ignore_bogus_error_responses = 1 (가짜 에러메시지 호출 방지)
  net.ipv4.conf.all.rp_filter = 1   (IP Spoofing 공격으로 부터 보호)
  net.ipv4.conf.all.log_martians = 1  (Log Spoofed Packets, Source Routed Packets, Redirect Packets 보호)
  vm.bdflush=100 1200 128 512 15 5000 500 1884 2 (bdflush 파라미터)
  wm.buffermem=80 10 60    (bdffermem 파라미터)
  net.ipv4.ip_local_port_range=32768 61000 (ip_local_port_range 파라미터)
  fs.file-max=8192    (file-max 파라미터)
  fs.inode-max=32768    (inode-max 파라미터)
  net.ipv4.tcp_fin_timeout=30   (TCP/IP 접속시간 조절)
  net.ipv4.tcp_keepalive_time=1800
  net.ipv4.tcp_window_scaling=0
  net.ipv4.tcp_sack=0
  net.ipv4.tcp_timestamps=0
 
 18) /root/.bashrc 파일수정
 
  (vi /root/.baxhrc)
 
  ulimit -u unlimited   (max user processes 제한)
  ulimit -n 9000   (시스템에서 열수 있는 파일수 증가)
 
  (ulimit  -a 로 결과확인)

<로그분석 : webalizer>

 1) 파일다운로드 (http://www.webalizer.com)
 2) cd /usr/local 에 파일 카피 후
 3) 압축 풀기 :  tar xvfz webalizer-2.01-10-src.tar (webalizer 디렉토리 에 풀림)
 4) 웹얼라이저 디렉토리로 이동후 configure 를 실행
    ./configure -with-language=korea (한국어 지원옵션 선택)
 5) make (컴파일한다.)
 6) make install (인스톨한다.)
 7) 상세사용법 (http://www.webalizer.co.kr/)

출처 : http://www.widusnet.co.kr

2009/05/08 16:00 2009/05/08 16:00

테스트를 하다 보면 너무 많은 양의 데이터가 들어가서 행을 삭제한 후 다시 작업을 해야할 경우가 있습니다. 개발 단계에서 테스트 데이터를 집어넣어 놓고 실제로 유효한 데이터를 입력할 경우 seq가 1부터 시작하질 않죠-_-;;


    DBCC CHECKIDENT(테이블명, reseed, 초기값);


를 사용하면 행을 삭제 후 seq값을 초기화 시킬 수 있습니다.

초기값은 0을 지정한 후 insert 해보면 1부터 증가하는것을 볼 수 있습니다.

2009/05/08 11:22 2009/05/08 11:22

NcFTP 사용법.

자동이어받기 기능.
명령어 자동완성 기능.

서브디렉터리 전송.

접속이 되지 않을때 자동 재접속.

리모트 경로 표시.

전송량 표시.

ncftp의 기본 전송 모드는 binary이다.
나머지 명령어는 유닉스 명령어와 비슷하다.

화살표 위아래키는 bashhistory 기능처럼 전에 입력했던 내용을 왔다갔다 할 수 있다.


ncfpt> open -umarine6309 -p 123456 -P 2121 localhost
marine6309란 사용자가 비밀번호 123456으로 2121포트로 로컬호스트에 접속한다.

ncfpt> get 1.txt 2.txt 3.txt
ncfpt> get *.txt

ncfpt> get -z ReadMe.txt README
ReadMe.txt를 README로 저장한다.

ncfpt> get -R test
test라는 폴더를 전체 다운로드 한다.

ncfpt> bgget -@ 20040616235000 /pub/idstuff/quake/q2_100.zip
2004년06월16일 23시50분00초에 위 파일을 백그라운드로 다운로드 한다.
이는 daemon에서이루어지기 때문에, logoff를 한다해도 계속 전송이 된다.
이런 명령의 경우에는 save-passwords가 yes로 setting되어야 한다.


ncftp> bgstart
위에서 예약된 작업을 바로 시작하는 명령이다.

ncftp> set save-passwords yes

현재 접속된 암호를 저장한다.

ncftp> jobs
background에서의 일어나는 작업을 알려준다.(unix명령과 비슷)

ncftp> bookmark local

현제 세션을 저장하고 나주에 재사용 할 수 있다. 각종 설정 모두를 기억한다.

처음 접속시 종료하기 전에 북마크 할 것인지 물어본다. 여기서 설정해 주면 된다.

패스워드는 암호화되어 저장되기 때문에 너무 걱정할 필요는 없다.

ncftp> set

set 명령어로 클라이언트 환경을 설정할 수 있다.

ncftp> show

현재 상태를 볼 수 있다.

2009/05/05 05:39 2009/05/05 05:39
나는 그동안 ncftp가 무슨 ftp데몬인줄 알았다. 거진 일년 반동안 말이다. 으하하;;

오늘이 되서야 ncftp가 단지 ftp클라이언트라는 사실을 알았다. 그리고 꽤 괜찮은 프로그램이란 것도 알게 되었다.

ncftp는 콘솔상에서 쓰는 ftp클라이언트다. 그냥 ftp라는 명령어를 치면 접속이 되는데 따로 클라이언트가 필요할까도 싶었지만 한번 써보니깐 잘못된 생각이란걸 알았다.

한마디로 짱이다!! 이제까지 ftp의 짜증난 점을 말끔히 해결해 주었다.

ftp는 리눅스 계정이던 윈도우 계정이던 자동완성기능이 없다. 리눅스에서 tab을 쓰는 것 말이다. 그리고 history도 없다.(이전 명령어를 불러들이는 것)

ncftp는 마치 telnet을 쓰는 것 처럼 이들 해결해 준다.

그동안 긴 이름을 매번 치던 나에게는 천사나 다름없었다.

또한 몇가지 좋은 기능들이 있다. 잠시 설명할까 한다. ^^*

ncftp 접속하기

# ncftp -u 유저명 호스트명
이다. 포트 번호가 33이라면

#ncftp 호스트명 -P 33
이라고 하면된다. 자세한건 man페이지에~

ftp에서 get명령은 파일을 받는 것이다. ncftp에서는 다양한 옵션이 있다.

-R : 이 옵션후 디렉토리 명을 쓰면 디렉토리를 통체로 받는다.
-z : 파일 이름을 변경하며 받는다.
get -z old.zip new.zip
-a : 아스키 모드로 받는다. (드폴트는 바이너리인지는 모르겠다. 안써도 아스키 얘들도 잘 받는다;;)
-f : 중복된 이름이 있으면 덥어 씌운다.

또한 파일이름이 tozzic으로 시작하는 것들을 몇개 받는다면

get tozzic*이라고 받으면 된다. 정말 좋다. 또한 -z 옵션을 이용해서 다운 받는 디렉토리를 지정할 수도 있다.

파일을 업로드하는 put또한 비슷한 옵션을 가진다. 더더욱 감동을 주는 것은 put 이후 tab을 누르면 알게 된다+_+

명령어 또한 자동 완성 기능을 지원한다.
2009/05/05 05:38 2009/05/05 05:38
NCFTP 활용 하기
1. NCFTP란 ?
2. NCFTP의 특징
3. NCFTP의 사용법
3.1 ncftp 접속모드로 들어가기 및 도움말 보기
4. Anonymous 접속하기
5. 자신의 홈디렉토리로 ncftp 접속하기
6. 파일 전송 및 수신하기
7. 북마크(bookmark)기능 이용하여 간단히 접속하기










1. NCFTP란 ?


NcFTP는 NCEMRsoft사에서 개발 한 것으로, network 상에서 file을 전송할 때 사용하는 utility이다.

특징으로는 file 전송을 한번에 sub directory까지 전송하는 기능과 interface 환경등이 버전 업 되었다.

한 가지 유의할 점은 NCFTP는 PC등에서 server로 전송하는 것은 불가능하며, internet에 연결되어 있는 server에서 다른 server로 전송할 때에만 사용할 수 있다.

PC에서 자기의 파일을 server로 올릴 때는 다른 ftp utility를 이용하기 바란다.



2. NCFTP의 특징


FTP보다 user interface가 향상 된 NCFTP의 특징은 사용의 편리성과 interface에 있다고 할 수 있다.

+ 한번에 대량의 데이터 전송시에 효과적이다.

+ sub directory 이하의 data를 한꺼번에 전송할 수 있다.

+ 전송 중에 끊어진 파일의 이어받기 기능을 제공한다.

+ 현재 전송하고 있는 파일의 전송률을 그래프로 확인 할 수 있다.



3. NCFTP의 사용법


3.1. ncftp 접속모드로 들어가기 및 도움말 보기


ncftp> ?

Commands may be abbreviated. 'help showall' shows hidden and unsupported

commands. 'help <command>' gives a brief description of <command>.

ascii bookmarks dir lls lrm pdir rename site

bgget cat get lmkdir lrmdir pls rhelp type

bgput cd help lookup ls put rm umask

bgstart chmod jobs lpage mkdir pwd rmdir version

bookmark debug lchmod lrename page quote show

ncftp>



ncftp를 사용하기 위해서는 ftp의 기본적인 사용법을 알고 있으면 도움이 될 것이다.

기본적으로 ftp 사용법에 대해 알고있다는 전제 하에 설명하겠다.


먼저 ncftp로 다른 서버로 접속하는 방법은 다음과 같다.

먼저 다음의 예와 같이 쉘상에서 그냥 "ncftp"라고 하시면 아래와 같이 ncftp모드로 들어간다.



[myid@ns6 super]$ ncftp

NcFTP 3.0.0 beta 18 (February 19, 1999) by Mike Gleason.

ncftp>

ncftp>

ncftp에서 사용할 수 있는 명령어들을 보려면 "ncftp> ?" 또는 "ncftp? help"라고 하시면 아래와 같이 사용할 수 있는 명령어를 볼 수 있다.



ncftp> ? open

open: connects to a remote host.

Usage: open [-flags] [sitename]

Flags:

-a : Open anonymously.

-u XX : Login with username XX.

-p XX : Login with password XX.

-J XX : Login with account XX.

-P XX : Use port number X when opening.

Examples:

open sphygmomanometer.unl.edu

open -u mario bowser.nintendo.co.jp

ncftp>



위에서 본 명령어들에 대한 사용법을 자세히 보려면 간단히 "? 명령어"라고 하면 볼 수 있다.

이들 명령어 중 open이란 명령어에 대한 도움말을 보려면 "? open"또는 "help open"이라고 하면 다음과 같은 간단한 도움말을 볼 수 있다.



4. Anonymous 접속하기


그럼, 다른 서버로 접속을 해보도록 하겠다.

접속을 하기 위해서는 open이라는 ftp명령어를 사용한다.



ncftp> open mydomain.co.kr

Connecting to 211.112.112.112...

mydomain.co.kr FTP server (Version wu-2.4.2-VR17(1) Mon Apr 19 09:21:53 EDT 1999) ready.

Logging in...

Welcome to Kornet ftp hosting server

We are now here.



Guest login ok, access restrictions apply.

Logged in to mydomain.co.kr.

ncftp / >

ncftp / > dir

drwxr-xr-x 6 root root 4096 Oct 22 23:06 .

drwxr-xr-x 6 root root 4096 Oct 22 23:06 ..

d--x--x--x 2 root root 4096 Aug 11 20:37 bin

d--x--x--x 2 root root 4096 Aug 11 20:37 etc

drwxr-xr-x 2 root root 4096 Aug 11 20:37 lib

drwxr-sr-x 3 root ftp 4096 Oct 16 09:22 pub

-rw-r--r-- 1 root root 56 Aug 30 01:36 welcome.msg

ncftp / >



위의 예에서 보는 것과 같이 "open IP-Address" 또는 "open 도메인"이라고 하면 해당사이트로 anonymous접속을 자동으로 해준다.

기존의 ftp 에서는 anonymous접속을 위해서는 anonymous라는 ID와 패스워드로 자신의 email address를 입력해 줘야하지만 ncftp에서는 자동으로 익명접속(anonymous)을 허용한다.

위의 예는 anonymous접속을 한 후에 dir이라는 명령어로 디렉토리의 내용을 본 것이다.


5. 자신의 홈디렉토리로 ncftp 접속하기


그렇다면 이번에는 익명접속이 아니라 정식사용자의 계정으로 접속을 해보도록 하겠다.

정식계정을 가진 사용자의 ID로 ncftp접속을 위해서는 "open -u 도메인"이라고 하시면 접속을 할 수 있다.

접속을 하게 되면 자신의 홈디렉토리로 들어가게된다.

그런다음 원하는 파일과 디렉토리를 가져오면 된다.



ncftp>

ncftp> open -u mydomain.co.kr

Username at mydomain.co.kr: salmon

Connecting to 211.112.112.112...

Password for user "salmon" at 211.112.112.112: *******


mydomain.co.kr FTP server (Version wu-2.4.2-VR17(1) Mon Apr 19 09:21:53 EDT 1999) ready.

Logging in...

User salmon logged in.

Logged in to mydomain.co.kr.

ncftp /home/salmon >

ncftp /home/salmon > dir

-rwx---r-x 1 504 salmon 513 Oct 29 23:42 index.html

-rw------- 1 504 salmon 7387 Dec 11 1998 install.pl

lrwxrwxrwx 1 0 root 8 Oct 13 00:19 linkfile -> linkfile

drwxr-xr-x 2 504 salmon 4096 Sep 14 17:34 logs

drwx--x--x 4 504 salmon 4096 Nov 1 21:53 public_html

ncftp /home/salmon >

ncftp /home/salmon >


앞에서 본 익명(anonymous)접속은 누구나 사용할 수 있는 ftp home directory (대부분 /home/ftp)로 접속을 하게되지만 아래와 같이 자신의 ID로 접속을 하면 ftp home directory가 아니라 자신의 home directory(대부분 /home/자신의ID)로 접속을 하게된다.


사용자의 계정으로 ncftp접속을 하려면 "open -u IP-Address" 또는 "open -u 도메인"이라고 하면 된다.

위의 예와 같이 특정 user의 home directory로 접속을 하려면 -u 옵션(user)을 사용하시면된다.

현재 디렉토리를 표시해 주기 때문에 현재의 위치를 바로 알 수 있다는 것도 큰 장점이다.


6. 파일 전송 및 수신하기


이제 ncftp를 사용하는 근본적인 목적인 파일을 전송하고 수신하는 예를 들어보겠다.

파일을 전송하는 명령어는 일반 ftp와 같이 get 또는 put을 사용하면 된다.

하지만 서브디렉토리까지 전송하거나 특정한 작업을 하기 위해서는 몇가지 옵션을 알아야 한다.

아래의 몇가지 예를 보기 바란다.


예1) 파일 하나만을 가져오기


ncftp ..xxx/public_html/report > get *.html

browser.html: 5.71 kB 172.62 kB/s

day.html: 22.16 kB 435.59 kB/s

domain.html: 3.58 kB 218.96 kB/s

host.html: 5.74 kB 168.53 kB/s

hour.html: 8.10 kB 346.42 kB/s

index.html: 4.36 kB 192.74 kB/s

page.html: 10.48 kB 259.52 kB/s

reference.html: 5.71 kB 145.84 kB/s

ncftp ..xxx/public_html/report >


예1과 같이 파일하나만을 가져오려면 "get 파일명"이라고 하면 된다.


ncftp /home/salmon > get index.html

index.html: 513.00 B 23.04 kB/s

ncftp /home/salmon >


예2) 여러개의 파일을 한꺼번에 가져오기


현재 디렉토리에 있는 여러 개의 파일을 한번에 가져오려면 위와 같은 형식을 사용하면 된다.

위와 같이 수신되고 있는 파일리스트를 모니터상에 보여주게 된다.


예3) (서브디렉토리를 포함한) 디렉토리전체를 한꺼번에 가져오기


이번에는 ncftp의 가장 강력한 기능인 전체 디렉토리를 한꺼번에 받아올 수 있는 것에 대해서 배워보도록 하겠다.

아마도 많은 분들이 ncftp를 이 기능 때문에 선호하는 것이 아닐까라고 생각한다.


ncftp /home/salmon > get -R *

.bashrc: 124.00 B 6.07 kB/s

.kderc: 966.00 B 43.10 kB/s

.screenrc: 3.42 kB 52.90 kB/s

중략

public_html (TAR): 1167360 bytes 716.21 kB/s

logs (TAR): 1648640 bytes 669.70 kB/s

aragornconv.pl: 1.66 kB 75.21 kB/s

install.pl: 7.21 kB 216.22 kB/s

wookiconv.pl: 2.14 kB 119.25 kB/s

index.html: 513.00 B 26.71 kB/s

.rhosts: 27.00 B 1.64 kB/s

get *: server said: Transfer complete.

ncftp /home/salmon >



7. 북마크(bookmark)기능 이용하여 간단히 접속하기


ncftp에는 또다른 특별한 기능이 있다.

우리가 흔히 웹브라우즈에서 사용하는 북마크기능을 ncftp에서도 사용할 수가 있다.

다음의 예를 보기 바란다.


ncftp> open mydomain.co.kr

Connecting to 211.112.112.112...

mydomain.co.kr FTP server (Version wu-2.4.2-VR17(1) Mon Apr 19 09:21:53 EDT 1999) ready.

Logging in...

Welcome to Kornet ftp hosting server

We are now here.


Guest login ok, access restrictions apply.

Logged in to mydomain.co.kr.

ncftp / >

ncftp / > dir

drwxr-xr-x 6 root root 4096 Oct 22 23:06 .

drwxr-xr-x 6 root root 4096 Oct 22 23:06 ..

d--x--x--x 2 root root 4096 Aug 11 20:37 bin

d--x--x--x 2 root root 4096 Aug 11 20:37 etc

drwxr-xr-x 2 root root 4096 Aug 11 20:37 lib

drwxr-sr-x 3 root ftp 4096 Oct 16 09:22 pub

-rw-r--r-- 1 root root 56 Aug 30 01:36 welcome.msg

ncftp / > quit


You have not saved a bookmark for this site.

Would you like to save a bookmark to:

ftp://mydomain.co.kr


Save? (yes/no) yes

Enter a name for this bookmark, or hit enter for "super": super

Bookmark "super" saved.


위의 예에서는 mydomain.co.kr이란 서버로 접속을 한후에 "quit"이란 명령어로 빠져나오려 할 때 ncftp에서는 북마크가 되어있지 않으니 북마크를 하라는 메시지와 함께 "Save? (yes/no) yes"와 같이 저장할 의사를 묻고 있다.

"yes"를 입력하면 북마크로 사용할 이름을 입력받는다.

그냥 enter키를 치면 접속시에 사용했던 호스트네임으로 북마크를 해주며, 다른이름을 사용하려면 입력하는 그이름으로 북마크저장이 된다.

그럼, 이렇게 저장한 북마크를 어떻게 사용할까?

저장된 북마크로 다시 이 서버로 접속을 할 때에는 "open 북마크이름"으로만 하시면 북마크에 저장된 서버정보(IP-Address 또는 도메인)와 ID, 패스워드를 사용하여 자동접속을 해준다.
2009/05/05 05:37 2009/05/05 05:37
ping은 회선의 속도를 체크 해주는 좋은 명령어지만, 악용을 했을경우 서버에 많은 피해를 줄 수 있습니다.
실질적으로 서버의 이용자 ID를 해킹하는 형식의 해킹이 있기도 하지만 해킹의 종류에는 서비스를 하지 못하도록
하거나 혹은 서비스 이용에 지장을 주도록 하는 해킹도 있습니다.

'ping공격'이라고 일컬어지는 이 해킹방법은 서버에 부하를 계속적으로 줌으로써, 서비스의 이용에 지장을
주도록 할 확률이 높습니다.

'ping 공격'을 막기 위해서는 다음과 같이 프롬프트상에서 작성해주시면 됩니다.
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all     //ping 막기
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all     //ping 열기
2009/05/05 05:35 2009/05/05 05:35
netstat 를 이용하여 간단하게 현재 포트를 감시할수 있습니다.
(포트 스캐닝은 잘 알려져있듯이 크래커들이 쓰는 첫번째 방법입니다.)


시스템에서 현재 열려져 있는 포트 보여주기
#netstat -nlt
n : numeric - 주소를 보여줍니다.
l : listen - 열려진 포트
t : tcp - tcp 연결 상태

[user@mymachine /home/user]# netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

위와 같은 경우
즉, 80번(웹) -> 3306 (mysql) -> 22(ssh) 포트가 열려져있다는 것을 보여줍니다.

시스템에서 실제 활동중인 포트 보여주기
#netstat -nat
n : numeric - 주소를 보여줍니다.
a : active - 활동중인 포트
t : tcp - tcp 연결 상태

[user@mymachine /user]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 206.112.62.102:80 204.210.35.27:3467 ESTABLISHED
tcp 0 0 206.112.62.102:80 208.229.189.4:2582 FIN_WAIT2
tcp 0 7605 206.112.62.102:80 208.243.30.195:36957 CLOSING
tcp 0 0 206.112.62.102:22 10.60.1.18:3150 ESTABLISHED
tcp 0 0 206.112.62.102:22 10.60.1.18:3149 ESTABLISHED
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

3개의 웹 연결과 2개의 ssh 연결을 보여주고 있습니다.

FIN_WAIT2와 CLOSING 및 netstat 의 또 다른 기능은 man netstat을 참조하세요.
2009/05/05 05:34 2009/05/05 05:34

서브 디렉토리 전송하기

ncftp 사용법.

자동이어받기 기능.
명령어 자동완성 기능.

서브디렉터리 전송.

접속이 되지 않을때 자동 재접속.

리모트 경로 표시.

전송량 표시.

ncftp의 기본 전송 모드는 binary이다.
나머지 명령어는 유닉스 명령어와 비슷하다.

화살표 위아래키는 bashhistory 기능처럼 전에 입력했던 내용을 왔다갔다 할 수 있다.

ncfpt> open -u marine6309 -p 1234 -P 2121 localhost
            marine6309란 사용자가 비밀번호 1234로 2121포트로 로컬호스트에 접속한다.

ncftp> get 1.txt 2.txt 3.txt

ncftp> get *.txt

ncftp> get -z ReadMe.txt README
           ReadMe.txt를 README로 저장한다.

ncftp> get -R test
           test라는 폴더를 전체 다운로드 한다.

ncftp> bgget -@ 20040616235000 /pub/idstuff/quake/q2_100.zip
           2004년06월16일 23시50분00초에 위 파일을 백그라운드로 다운로드 한다.
           이는 daemon에서 이루어지기 때문에, logoff를 한다해도 계속 전송이 된다.
           이런 명령의 경우에는 save-passwords가 yes로 setting되어야 한다.

 
ncftp> bgstart
           위에서 예약된 작업을 바로 시작하는 명령이다.

ncftp> set save-passwords  yes
           현재 접속된 암호를 저장한다.

ncftp> jobs
           background에서의 일어나는 작업을 알려준다.(unix명령과 비슷)
 
ncftp> bookmark local
           현제 세션을 저장하고 나주에 재사용 할 수 있다. 각종 설정 모두를 기억한다.
           처음 접속시 종료하기 전에 북마크 할 것인지 물어본다. 여기서 설정해 주면 된다.
           패스워드는 암호화되어 저장되기 때문에 너무 걱정할 필요는 없다.

ncftp> set
          set 명령어로 클라이언트 환경을 설정할 수 있다.

ncftp> show
          현재 상태를 볼 수 있다.


ncftpget,  ncftpput

ncftpget -u아디 -p암호 접속할ftp서버 받을곳 받을파일
ex) ncftpget -uxxxx -pxxxx xxx.xxx.xxx.xxx . /upload/backup/*
      xxx.xxx.xxx.xxx/upload/backup 파일을 현재 내가 있는 곳으로 받아온다는 뜻

ncftpput -u아디 -p암호 접속할ftp서버 올릴곳 올릴파일
ex) ncftpput -uxxxx -pxxxx xxx.xxx.xxx.xxx /upload/ /tmp/backup
      xxx.xxx.xxx.xxx/upload 에 /tmp/backup 라는 파일을 올린다는 뜻이된다.

2009/05/05 05:33 2009/05/05 05:33
유닉스나 리눅스에는 vi 또는 vim (빔) 이라는 이름의 "텍스트 파일 편집기" 즉 에디터가 이미 설치되어 있습니다. 따라서 예를 들어, 현재 디렉토리에 있는 test.txt 파일을 열려면

vi test.txt

또는

vim test.txt

라고 하면 됩니다. 000 이라는 이름의 하위 디렉토리(폴더)에 있는 파일을 열려면

vi 000/test.txt

이렇게 합니다. 대소문자를 엄격히 구분합니다. 그런데 유닉스의 빔 에디터는 윈도우용 에디터와 달리 사용법이 좀 까다롭습니다.
2009/05/05 05:23 2009/05/05 05:23
워드랩이란 다음과 같습니다: 너무 길어서 화면에 전부 표시할 수 없는 줄을 처리할 때는 2가지 방법이 있습니다. 화면 우측으로 넘치는 부분을 아예 표시하지 않는 것과, 다음줄로 자동으로 줄바꿈을 하여 표시하는 것입니다. 후자를 워드랩 Word Wrap 이라고 합니다.

Vim 이나 Vi 에디터에서 워드랩을 하는 명령은 wrap 이고, 워드랩을 해제하는 명령어는 nowrap 입니다. 앞에 set 을 넣어야 작동합니다. 다음과 같습니다. 현재 편집 중인 텍스트 파일에 긴 줄이 없다면 차이점이 보이지 않을 것입니다.

set wrap

set nowrap

set 은 se 로 줄여서 쓸 수도 있습니다.


위의 명령어들은 원래 Vim 에만 있고 Vi 에는 없습니다. 그러나 현재 사용되는 VI 는 Vim 과 동일하기에 상관없습니다. 다만 오래된 유닉스에 설치되어 있는 진짜 VI 에디터에서는 먹히지 않는 명령입니다.
2009/05/05 05:23 2009/05/05 05:23
리눅스나 유닉스의 파일 지우기 명령인 rm 에서 특정 확장자의 파일들만 한꺼번에 지우려면, 즉 특정 확장자를 지정하여 파일을 삭제하려면 "별표(*) 와일드 카드"를 사용하면 됩니다. 예를 들어 아래와 같이 하면

rm *.txt

현재 디렉토리에 있는 모든 .txt 확장자를 가진 파일들만 삭제되고, 다른 확장자를 가진 파일들은 그대로 있습니다. 여기서 별표(애스터리스크)는 "확장자가 아닌 부분의, 임의의 파일명 전체"를 의미합니다.


이중확장자의 파일도 있습니다. 가령 .tar.bz2 라는 이중확장자를 가진 파일을 모두 지우되

.bz2 라는 확장자의 파일은 남겨 두려면

rm *.tar.bz2

이렇게 하면 됩니다.


.bz2 로 끝나는 모든 파일을 다 지우려면

rm *.bz2

이렇게 합니다.
2009/05/05 05:22 2009/05/05 05:22
유닉스나 리눅스의 문자열 찾기 명령인 grep 에서, 대소문자 구분 없이 문자열을 찾으려면 -i 옵션을 사용하면 됩니다.

마이너스 기호 + 알파벳 소문자 아이(i)입니다. 윈도우와 달리, 유닉스 명령어 자체나 명령어의 옵션은 항상 대소문자를 엄격히 구분합니다.

예를 들어

grep foo *.txt

이렇게 하면 현재 디렉토리의 모든 txt 확장자 파일들에서 foo 라는 문자열을 찾지만, FOO 나 Foo 또는 fOO 등은 찾지 않습니다.


이때

grep -i foo *.txt

이렇게 해주면 FOO / Foo / fOO 등도 모두 찾습니다. 대소문자의 구분이 없이 찾게 되는 것입니다.


위에서의 소문자 i 는, "ignore(무시) case(대소문자)"에서의 첫글자 i에서 온 것입니다.
2009/05/05 05:22 2009/05/05 05:22