Search Results for '프로그래밍/CYGWIN&DOS'


67 posts related to '프로그래밍/CYGWIN&DOS'

  1. 2009/05/12 Cygwin Tips - 시스템 정보 알아내기
  2. 2009/05/12 Cygwin Tips - 드라이브 이동하기
  3. 2009/05/12 Cygwin Tips - Windows 명령 프롬프트(cmd.exe)에서 cygwin 명령어 실행하기
  4. 2009/05/12 Cygwin Tips - rxvt 사용하기
  5. 2009/05/12 Cygwin 환경에서 탐색기 창 열기
  6. 2009/05/12 cygwin에서 한글사용및 기타 적용
  7. 2009/05/11 lftp 사용법
  8. 2009/05/10 윈도우] 시스템 파일 복사하는 명령어. 히든파일 카피 명령; Copy Command, System Hidden File
  9. 2009/05/10 DOS 도스 시스템 파일 복사하기, 디스크 포맷한 후; System File Copy
  10. 2009/05/10 BAT파일에서, 다른 BAT파일을 불러 반복 실행하기
  11. 2009/05/10 배치파일 무한루프 구현, 루프 탈출, 빠져 나오기 예제; Batch File Infinity Loop
  12. 2009/05/10 BAT 파일 반복 시키기 배치파일 문법
  13. 2009/05/10 Vim (VI; 빔) 과 GVim 소개 [리눅스와 윈도우용의 오픈소스/무료 텍스트 에디터]
  14. 2009/05/10 Cygwin(시그윈)에, Vim (vi) 에디터 설치법
  15. 2009/05/05 NcFTP 사용법
  16. 2009/05/05 최고의 리눅스용 FTP클라이언트 ncFTP
  17. 2009/05/05 NCFTP 활용하기
  18. 2009/05/05 Ping 사용 막기허브향기
  19. 2009/05/05 netstat 를 이용하여 현재 포트를 감시허브향기
  20. 2009/05/05 ncftp, ncftpget, ncftpput - 서브디렉토리 전송허브향기
  21. 2009/05/05 유닉스에서 텍스트 파일 열기 명령어; 리눅스 Unix Text File Open
  22. 2009/05/05 VIM VI 워드랩 명령어, 화면 우측 끝에서 긴줄 자동 줄바꿈 방법; Word Wrap
  23. 2009/05/05 rm 특정 확장자만 삭제 방법, rm명령어로 지정 파일만 지우기 옵션; File Ext
  24. 2009/05/05 GREP 대소문자 구분없이 찾기 방법? 대소문자 무시 하고 찾는 법; icase
  25. 2009/05/05 CMD 에서 GREP 명령어 사용하는 방법은? 도스창 정규식 문자열 찾기
  26. 2009/05/05 Vim VI 블럭 복사 핫키, 칼럼 카피하는 방법; Copy Block
  27. 2009/05/05 리눅스 메세지 정지 방법; 화면 출력 한페이지씩 멈추기; Linux pause
  28. 2009/05/05 VI 다른 이름으로 저장, 새이름으로 저장 명령어; Vim Vi Save As Command
  29. 2009/05/05 Unix echo 작은따옴표,특수문자 출력하기, 유닉스 Linux 리눅스 프롬프트에서
  30. 2009/05/05 시그윈 종료 명령어, Cygwin 끝내기 빠져나오기 halt 명령

Windows 시스템 정보를 아는 방법은 여러가지가 있겠지만 가장 빠른 방법은 대체로 'winver' 명령을 통해 알 수 있다. 그렇다면 Cygwin 정보(버전 등)는 어떻게 알 수 있을까? 바로 uname 명령을 통해 알 수 있다.

리눅스 배포판 사용자라면 아주 친숙한 명령어 일텐데... 예상하겠지만 uname은 Unix name의 약칭이다.

사용자 삽입 이미지


uname에는 몇가지 옵션이 있는데 가장 자주 사용되는 옵션이 uname -a이다. 즉, -a는 all 로서 모든 정보를 출력하라는 옵션이다.

간단하게 위의 결과물을 설명하자면...

CYGWIN_NT-5.2

Cygwin의 커널 이름이다. 여기서는 NT 5.2(Windows Server 2003)에서 작동하는 Cygwin이라는 뜻이다.

wonho

호스트 네임

1.3.20(0.73/3/2)

커널 버전

2003-02-08 12:10

커널 출시일(release date)

i686

프로세서(CPU) 종류를 뜻한다. 여기서는 Intel Pentium 2-3 기종이라는 뜻이다.

unknown unknown

하드웨어 플랫폼 등을 의미하는데 정확하게 인식하지 못하고 있다.

Cygwin

운영체제 이름

2009/05/12 12:24 2009/05/12 12:24

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

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

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
유닉스, 리눅스 운영체제의 문자열 찾기 명령어인 grep 을 윈도우2000이나 윈도우XP 이상에서도 사용할 수 있습니다. 중요하고 유용한 명령어이기 때문입니다.

윈도우의 도스창 즉 CMD에서 FINDSTR 이라는 명령을 사용하면, 사실상의 grep을 사용할 수 있습니다.

findstr /?

이렇게 하면 도움말이 나옵니다.

그렇지만 윈도우의 findstr 은 grep 과 완전히 같지는 않고 엉성하게 만들어진 것입니다. 짝퉁이라고 보아도 좋을 것입니다.

윈도우에서 진짜 grep 을 사용하는 방법이 있습니다. 윈도우에 Cygwin(시그윈)을 설치하는 것입니다. 시그윈은 무료이고 리눅스와 같은 오픈소스이기에 부담없이 사용할 수 있습니다. grep.exe 가 시그윈 안에 들어 있습니다.

시그윈을 윈도우에 설치하고 CMD 도스창에서 grep 이라고 치면 진짜 오리지날 grep 을 윈도우에서도 사용할 수 있습니다.
2009/05/05 05:22 2009/05/05 05:22
Vim, Vi 에디터에서 텍스트 특정 구역을 블럭으로 잡아서 복사한 후, 다른 곳에 붙여 넣는 방법입니다. 현재, 문서를 편집 중이라면 Esc키를 한번 누릅니다.

* 소문자 v (브이) 키를 누릅니다.

* 상하좌우 화살표키를 눌러, 선택영역 블럭 즉 셀렉션을 잡아줍니다.

* 소문자 y (와이) 키를 누릅니다. 이것이 텍스트 복사 핫키입니다.

* 이제 Vim 에디터 화면을 스크롤하여, 방금 복사한 텍스트를 붙여 넣을 장소로 이동합니다.

* 소문자 p (피) 키를 눌러 붙여 넣습니다.


위의 경우는 행을 기준으로 복사하고 붙여넣기 방법입니다.

사각형 박스 모양으로 칼럼 블록을 잡거나 하는 방법은 다음 페이지에 있습니다:
2009/05/05 05:21 2009/05/05 05:21
리눅스나 유닉스에서 메시지 출력을 일시 중지시키려면 키보드의 Scroll Lock키를 누르면 됩니다. 한번 더 누르면 출력이 계속됩니다. 그런데 배포판에 따라서 다를 수도 있습니다. 우분투 리눅스에서는 확실히 됩니다. (MS-DOS에서는 "Pause Break" 키를 누르면 일시 중지되었습니다.)

메세지 출력을 완전히 중단시키려면 Ctrl+C키를 누르면 됩니다. Ctrl키를 누르면서 C키를 누르는 것입니다.


한편, 화면 출력을 한 페이지씩 나누어 출력하는 방법은 아래와 같습니다. 이 방법을 쓰는 것이 가장 좋습니다.

* 어떤 명령어 뒤에, 파이프 기호인 "|"를 찍습니다. 수직선 기호입니다. 키보드의 백슬래시 기호(한글 키보드에서는 원화 기호)인 "\" 이것을 Shift키와 함께 누르면 파이프 기호가 찍힙니다.

* 그런 후, 그 뒤에 소문자로 less 라는 명령어를 덧붙이면 됩니다.

* 예를 들어 ls 명령어의 도움말을 보기 위해 ls --help 이런 명령을 주면 메세지가 한꺼번에 출력되어 잘 읽을 수 없습니다. 이럴 때는 아래 빨간 부분인 | less 를 끝에 붙여 주면 "한 페이지씩" 나누어서 출력됩니다.

ls --help | less


* 엔터 키를 누르면 한 줄씩 스크롤되고, q (큐) 키를 누르면 즉시 프롬프트로 빠져 나갑니다.

* 오래된 유닉스에는 less 명령이 없을 것입니다. 이때는 more 명령을 대신 사용하면 됩니다.
2009/05/05 05:21 2009/05/05 05:21
VI 또는 Vim 에디터에서, 현재 문서를 "다른 이름으로 저장" 즉 "새 이름으로 저장"하는 명령어는 :w <파일명> 입니다.

* 문서를 현재 입력중이라면, 키보드의 Esc키를 누릅니다.

* 예를 들어 원본 파일명이 test.txt 일 때,

:w test2.txt

이런 명령을 사용하면, 현재 문서가 test2.txt 라는 새 이름으로 저장됩니다.


주의 사항:
위의 경우 test2.txt 라는 파일이, 원본 파일인 test.txt 가 있는 디렉토리와 다른 디렉토리에 저장될 수도 있습니다.

:pwd
라는 명령을 사용하면 Vim, Vi 내부의 현재 디렉토리명을 볼 수 있습니다. 그 디렉토리에 저장되어 있을 것입니다.


그리고 이미 test2.txt 라는 파일이 하드에 존재한다면 다른 이름으로 저장이 되지 않고 E13: File exists (add ! to override) 라는 에러가 납니다. 파일이 이미 존재합니다. 덮어쓰려면 ! 느낌표를 붙이세요 라는 뜻입니다.

이때는
:w! test2.txt
w 뒤에 !(느낌표)를 붙이면 강제로, 새 이름으로 저장됩니다.
2009/05/05 05:21 2009/05/05 05:21
Unix나 리눅스에서 echo 명령으로 특수문자를 출력할 때에는, 반드시 그 출력하려는 문자열 전체를 작은따옴표(') 즉 홑따옴표로 둘러싸 주어야 합니다. 예를 들어 샤프 기호(#; 우물 정자)를 출력하려면

echo '#'

이렇게 하면 됩니다.

그런데 작은따옴표 자체를 출력하기 위해서는, 그 작은따옴표를

\047

이라는 코드로 바꾸어서 입력해야 합니다. 또한 echo 명령에 -e 라는 옵션도 붙여 주어야 합니다. 예를 들어, "늦어서 미안해요"라는 영문장을

I'm sorry. I'm late.

이렇게 작은따옴표(여기서는 아포스트로피 apostrophe 로 사용되었음)를 넣어서 출력하려면

echo -e 'I\047m sorry. I\047m late.'

이렇게 입력하면 제대로 출력됩니다.
2009/05/05 05:20 2009/05/05 05:20
리눅스에서는 halt 명령을 사용하면 시스템을 종료할 수 있습니다.

그런데 시그윈 Cygwin 은 진짜 리눅스가 아니고, 도스상에서 실행되는 가상 유닉스 시스템이기 때문에, halt 명령이 아닌 exit 명령을 사용해야만 종료가 됩니다. 또는 exit 대신에 logout 이라는 명령을 사용할 수도 있습니다.

또한 시그윈에서도 리눅스에서처럼 Ctrl+D키를 누르면 끝내기를 할 수 있습니다. 그러면 logout 이라는 문자열이 출력되면서 시그윈이 종료되고 도스 프롬프트로 빠져나올 것입니다.

업데이트:
소문자 q 도 되는군요.


한편 시그윈에는 리부팅하는 reboot 명령은 없습니다. 시그윈을 리부팅하려면 exit 명령으로 종료를 하고 나서, 시그윈을 다시 실행하면 됩니다.



시그윈을 언인스톨 즉 윈도우에서 완전히 제거하려면, 자동 언인스톨 기능이 없기 때문에 다음과 같이 수동으로 삭제해 주어야 합니다:
2009/05/05 05:20 2009/05/05 05:20