Search Results for '프로그래밍'


1208 posts related to '프로그래밍'

  1. 2009/05/13 Reset.css by Eric Meyer 1
  2. 2009/05/13 Vim, GVIM, 울트라에디트를 윈도우 기본 편집기로 만들기
  3. 2009/05/13 BAK 파일 삭제 배치 파일; 백업파일 지우기 BAT
  4. 2009/05/13 도스에서 텍스트 파일 보기 명령어; DOS Text File Viewer
  5. 2009/05/13 도스 PKZIP 폴더 압축 옵션, 디렉토리까지 압축하기 방법; Folder Directory
  6. 2009/05/13 배치파일, 도스(DOS)에서 파일 삭제, 디렉토리 지우기 명령어; Delete File
  7. 2009/05/12 배치파일로 디렉토리 생성 명령어, 폴더 만들기 방법; BAT Make Directory, Folder
  8. 2009/05/12 배치파일 명령어, 현재시간, 현재날짜, 현재시각 출력 방법; BATCH Time Date
  9. 2009/05/12 도스에서 확장자 변환 방법; DOS에서 File Ext 바꾸는 법, 명령어 1
  10. 2009/05/12 갱신파일 찾는 도스 배치파일 예제; A Attrib File만 찾기 Dir 옵션
  11. 2009/05/12 BAT 파일 반복 시키기 배치파일 문법
  12. 2009/05/12 반복되는 명령 실행: 윈도우 도스창 / 리눅스 - Repeat Commands
  13. 2009/05/12 Vim, Vi, GVim 에디터, 행번호, 줄번호 표시 명령어, 줄 번호 행 번호 보는 명령; View Line Number
  14. 2009/05/12 Vim, Vi, GVim 에디터, 행번호, 줄번호 표시 명령어, 줄 번호 행 번호 보는 명령; View Line Number
  15. 2009/05/12 디렉토리 만들기 명령, 디렉토리(폴더) 지우기 명령어: Make, Delete Directory
  16. 2009/05/12 [C언어] Cygwin(시그윈)에, gcc (공개 C컴파일러) 설치하기 1
  17. 2009/05/12 실행 파일의 위치 알아내기: which 명령
  18. 2009/05/12 재지향(Redirection)이란? / 파이핑(Piping)이란? - [도스창/명령 프롬프트 커맨드 라인/리눅스 셀]
  19. 2009/05/12 리눅스 명령어를 윈도우에서 사용하기; 시그윈(Cygwin) 없이 Win32로; GnuWin32 1
  20. 2009/05/12 Vim 창크기 조절 방법, 핫키; Vi에서 창사이즈 Window Size Hotkey
  21. 2009/05/12 cygwin 에 bin 폴더 파일들 bin.zip
  22. 2009/05/12 stack overflow at line:0
  23. 2009/05/12 Cygwin에서 clear명령어가 안먹힌다면 ?
  24. 2009/05/12 Cygwin Tips - 시스템 정보 알아내기
  25. 2009/05/12 Cygwin Tips - 드라이브 이동하기
  26. 2009/05/12 Cygwin Tips - Windows 명령 프롬프트(cmd.exe)에서 cygwin 명령어 실행하기
  27. 2009/05/12 Cygwin Tips - rxvt 사용하기
  28. 2009/05/12 Cygwin 환경에서 탐색기 창 열기
  29. 2009/05/12 cygwin에서 한글사용및 기타 적용
  30. 2009/05/11 lftp 사용법

요즘 부쩍 표준에 관심이 있으신거 같아서 팁으로 올려봅니다.

css를 초기화시켜주는 css입니다.


  1. /* v1.0 | 20080212 */
  2. html, body, div, span, applet, object, iframe,
  3. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  4. a, abbr, acronym, address, big, cite, code,
  5. del, dfn, em, font, img, ins, kbd, q, s, samp,
  6. small, strike, strong, sub, sup, tt, var,
  7. b, u, i, center,
  8. dl, dt, dd, ol, ul, li,
  9. fieldset, form, label, legend,
  10. table, caption, tbody, tfoot, thead, tr, th, td {
  11.     margin: 0;
  12.     padding: 0;
  13.     border: 0;
  14.     outline: 0;
  15.     font-size: 100%;
  16.     vertical-align: baseline;
  17.     background: transparent;
  18. }
  19. body {
  20.     line-height: 1;
  21. }
  22. ol, ul {
  23.     list-style: none;
  24. }
  25. blockquote, q {
  26.     quotes: none;
  27. }
  28. blockquote:before, blockquote:after,
  29. q:before, q:after {
  30.     content: '';
  31.     content: none;
  32. }
  33. /* remember to define focus styles! */
  34. :focus {
  35.     outline: 0;
  36. }
  37. /* remember to highlight inserts somehow! */
  38. ins {
  39.     text-decoration: none;
  40. }
  41. del {
  42.     text-decoration: line-through;
  43. }
  44. /* tables still need 'cellspacing="0"' in the markup */
  45. table {
  46.     border-collapse: collapse;
  47.     border-spacing: 0;
  48. }
2009/05/13 12:15 2009/05/13 12:15
윈도우 탐색기 등에서, 예를 들어 test.txt 같은 ".txt" 확장자의 텍스트 파일을 클릭하면 기본적으로 메모장이 실행됩니다. 윈도우XP에서 울트라에디트 UltraEdit 나, GVIM (Vim의 그래픽 모드 버전) 을 윈도우 기본 편집기로 만들려면 다음과 같이 합니다.

* test.txt 등의 아무 "텍스트 문서"를 하나 선택한 후, 그 파일을 마우스 우측 버튼으로 클릭하고

연결 프로그램 > 프로그램 선택

을 선택

* "연결 프로그램"이라는 대화상자가 나옴. 목록에서, 편집기로 사용할 프로그램을 고르거나, 또는 "찾아보기" 버튼을 눌러서 편집기의 실행파일을 직접 지정해 줍니다.

Gvim의 경로와 실행파일명은 대체로 "C:\Program Files\Vim\gvim.exe" 이렇고

울트에디트는 대체로 "C:\Program Files\IDM Computer Solutions\UltraEdit\uedit32.exe" 이렇습니다. 버전에 따라 조금 다릅니다.

* 대화상자에서 이 종류의 파일을 열 때 항상 선택된 프로그램 사용 이라는 곳에 체크해 줍니다. 그런 후 "확인" 버튼을 누릅니다.

* 이제 .txt 확장자 의 파일을 클릭하면, 메모장이 아닌 Gvim이나 울트라에디트가 실행될 것입니다. txt 확장자에 대한 "기본 편집기"가 된 것입니다.

예를 들어 .c 확장자의 C소스 파일을 Gvim에서 열려면, ".c" 라는 확장자의 파일을 선택하고 위의 작업을 해줍니다.



그런데 울트라에디트 내부에 있는 "파일 연결 기능"으로 txt 등의 특정 확장자와 울트라에디터를 연결해 주면 좀 복잡한 문제가 생기더군요. 파일 아이콘을 사용자 정의할 수 없다든지 하는... 그래서 위의 방법으로 지정하는 것이 좋습니다.
2009/05/13 00:04 2009/05/13 00:04
".BAK" 확장자의 파일은 "백업파일"입니다. 백업파일이란, 어떤 파일을 편집/수정했을 때, 만일의 경우를 대비해 원래의 원본을 따로 보관해 둔 파일입니다. 편집한 파일에 문제가 있을 때는, 백업파일을 찾아서 원래대로 돌릴 수 있습니다. 예를 들어 test.txt 라는 파일을 에디터로 편집했을 경우, "test.bak" 또는 "test.txt.bak" 이라는 파일명으로 백업파일이 생성됩니다. 그러나 전문적인 편집기가 아닌 메모장 등에서는 백업파일을 만들지 않습니다.

다음 배치 파일을 ".bak" 확장자에 연결해 두면, 이제 .bak 확장자의 어떤 파일 1개를 클릭하면 그 폴더의 모든 .bak 파일들이 삭제됩니다.

BAK 파일 자동 지우기 배치


배치파일명: bak.bat
(이 파일을 패스(Path) 가 걸린 폴더에 넣어두면 편리합니다.)
@echo off
if exist *.bak del *.bak



2009/05/13 00:03 2009/05/13 00:03
도스(MS-DOS)나 윈도우의 도스창(명령프롬프트)에서 텍스트 파일의 내용을 화면에 출력하는 명령어는 type 입니다. 하드에 test.txt 라는 파일이 있을 때 도스에서

type test.txt

이런 명령을 입력하면 test.txt 파일의 내용이 도스 화면에 출력됩니다. 또는

type test.txt | more

이렇게 뒤에 파이프(|)기호와 more 명령을 추가하면, 1페이지씩 나누어서 화면에 출력됩니다. 이때 키보드의 q (큐) 키를 누르면 읽다가 중간에서 중지할 수 있습니다. 파이프(|)기호란, 키보드의 Shift키를 누르면서 백슬래쉬(\) 기호를 누르면 입력되는 수직선 문자입니다.

그리고

edit test.txt

라는 명령으로는, 텍스트 파일을 도스에서 편집할 수 있는 도스용 편집기(에디터)가 실행됩니다.
2009/05/13 00:02 2009/05/13 00:02
PKZIP 이라는 것은 도스(순수한 16비트 MS-DOS)용 ZIP 압축 프로그램입니다. PKZIP.EXE 라는 파일로 되어 있습니다. 그런데 지금 윈도우에서는 PKZIP 이 거의 사용되지 않고 WinZip(윈집)이나 WinRAR(윈라) 로 ZIP 파일을 다룹니다.

아무튼 PKZIP 에서 파일을 압축할 때, "하위 디렉토리까지" 즉 "하위 폴더까지 압축"하려면 "-rp" 라는 옵션을 붙입니다. "마이너스 + 소문자R + 소문자P" 입니다. 예를 들어

pkzip -rp test

이렇게 입력하면, 현재 디렉토리(폴더)에 있는 파일들과, 하위 디렉토리까지 모두 TEST.ZIP 이라는 파일명으로 압축됩니다.


pkunzip: 디렉터리까지 압축 풀기 명령


pkunzip -d test

주의!:
zip 압축을 풀 때에는 pkunzip 명령으로 푸는데, 이때 반드시 -d 옵션을 붙여야 합니다. -d 옵션이 없으면 풀 때, 원래의 폴더를 다시 생성해 주지 않고 현재 디렉토리에 모든 파일들을 한꺼번에 다 풀어버립니다.
2009/05/13 00:01 2009/05/13 00:01
도스창(명령 프롬프트)이나, 배치 파일 (Batch File) 에서, 불필요한 파일을 지우기 위해서는 del 이라는 명령어를 사용합니다.


지정한 파일 하나만 삭제하는 명령


del 0.obj

예를 들어 0.obj 라는 파일을 지우려면 위와 같이 합니다.


지정한 확장자의 파일들만 지우기 명령


del *.bak

.bak 확장자를 가진 모든 파일을 한꺼번에 지웁니다.



읽기전용 파일 삭제


del /f 0.obj
이런 식으로 /f 옵션을 붙여야 합니다. 그렇지 않으면 액세스가 거부되었습니다.라고 나오며 지워지지 않습니다.


숨김 속성 파일 (히든파일) 삭제


del /a 0.obj
이렇게 /a 옵션을 붙입니다. 그렇지 않으면 D:\Y\0.obj을(를) 찾을 수 없습니다.라는 에러가 나고 지워지지 않습니다.


현재 디렉토리(폴더)의 모든 파일 한꺼번에 지우는 명령


del .

현재 디렉토리의 모든 파일을 지우려면 위와 같이 합니다. 위험한 작업이기에 도스가 우선 D:\Y\*, 계속하시겠습니까(Y/N)? 이렇게 물어봅니다. Y 키를 누르면 파일이 모두 지워집니다.

참고로 마침표(.)는 현재 디렉토리를 의미합니다.






하위 디렉토리(폴더) 지우기 명령


파일이 아닌 디렉토리를 지우려면 rmdir 이라는 명령어를 사용합니다.
rmdir 000

현재 디렉토리 밑의 "000" 이라는 이름의 디렉토리를 위와 같은 방법으로 지울 수 있습니다.

다만 그 디렉토리 안에 파일이 들어 있으면 디렉터리가 비어 있지 않습니다. 이런 에러가 나고 지워지지 않습니다.

이때는
rmdir /s 000
이렇게 /s 옵션을 붙이면, 디렉토리가 비어 있지 않더라도 지워집니다. 굉장히 위험한 옵션이니 주의가 필요합니다.





추가 사항:
윈도 탐색기와 달리, 명령프롬프트(도스창)에서 파일을 지우면, 휴지통으로 들어가지 않고 곧바로 지워지기에 복구가 힘들거나 불가능합니다.
2009/05/13 00:00 2009/05/13 00:00
md 라는 명령을 사용하면, 배치파일 안에서나 도스 프롬프트에서나, 디렉토리(폴더)를 생성할 수 있습니다. md 뒤에 폴더 이름을 적어주면 간단히 생성됩니다. 다음 예제와 같습니다.

BAT File에서, 폴더 생성하는 법


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

:: 현재 디렉토리(폴더)에 AAA 라는 하위 디렉토리 생성하기
md AAA


:: ㅠㅠ 라는 폴더를 하나 만들고 그 속에
:: 또 ㅎㅎ 라는 폴더를 만들고, ㅎㅎ 라는 폴더 속에
:: ㅋㅋ 라는 폴더를 만드는 것입니다.
:: 예를 들어 현재 디렉토리가 D:\Z 라면
:: D:\Z\ㅠㅠ\ㅎㅎ\ㅋㅋ
:: 이런 중첩된 폴더들이 한꺼번에 생성됩니다.
:: 다만 윈도우98이나 MS-DOS에서는 이런 한꺼번에 생성하기가
:: 되지 않을 것입니다.
md ㅠㅠ\ㅎㅎ\ㅋㅋ



2009/05/12 23:59 2009/05/12 23:59
도스 명령어 중에 date 나 time 이라는 명령을 사용하면, 현재 날짜와 시간을 보거나 맞출 수 있습니다. 배치파일 안에서 현재 시각 등을 출력하려면 환경변수를 사용하는 것이 편리합니다. 다만, 윈도우2000이나 윈도우XP이상의 도스창에서만 되고, 16비트 MS-DOS나 윈도우98의 도스창에서는 안됩니다.

배치파일에서 현재 시간이나 현재 날짜를 화면에 출력하려면 DATE 와 TIME 이라는 기본 환경 변수를 사용하면 됩니다, 그 환경변수 속에 현재 날짜와 현재 시각이 실시간으로 항상 들어가 있습니다.

예를 들어
echo %date%
이렇게 하면 오늘 날짜가 "금 2007-11-16" 이런 식으로 화면에 출력됩니다.


echo %time%
이렇게 하면 현재 시각이 "14:18:03.95" 이렇게 24시간제로 표시됩니다.


echo %date% %time%
이렇게 하면 "금 2007-11-16 14:18:52.62" 이렇게 날짜와 시간이 합쳐져서 한꺼번에 출력됩니다.
2009/05/12 23:58 2009/05/12 23:58
도스에서 파일의 확장자만 변경하는 방법입니다. 예를 들어 test.txt 라는 파일의 확장자를 test.doc 으로 바꾸려면 다음과 같이 ren 명령을 사용하면 됩니다. ren은 파일명을 바꾸는 명령인데, 확장자도 파일명의 일부이기에 당연히 ren으로 변경할 수 있습니다.

ren test.txt test.doc

위와 같이 하면 이제, 현재 디렉토리(폴더)에 있는 test.txt 파일이 test.doc 으로 확장자만 변경되었을 것입니다.


만약, 모든 .txt 확장자 파일들을 "한꺼번에" .doc 확장자로 변경하려면

ren *.txt *.doc

이렇게 하면 됩니다. 파일명 부분을 *(별표) 라는 와일드카드로 대체한 것입니다. 배치파일 안에서도 위의 명령들을 사용할 수 있습니다.


그런데 도스창에서 실행한 명령의 결과는 취소가 되지 않습니다. 그래서 오타 등을 좀 주의를 해야 합니다.

반면, 윈도우 탐색기에서 F2키를 눌러 파일명이나 확장자를 변경했다면, Ctrl+Z키로 쉽게 취소할 수 있습니다.
2009/05/12 23:57 2009/05/12 23:57
갱신파일이란, 마지막 백업 이후로, 수정된 파일을 의미합니다. A 라는 "저장 속성"이 부여되어 있습니다. A 라는 "저장 속성"이 부여되어 있다는 이야기는, 수정된 이후로 백업을 아직 하지 않았으니 백업 대상에 추가하라는 뜻입니다.

백업을 한 후에는 A 라는 "저장 속성"을 OFF 시켜 주는 것이 원칙입니다. 그래야, 백업 이후로 수정이 되었는지 알 수 있습니다. 예를 들어 test.txt 라는 파일이 있을 때, 백업 프로그램이 이 파일을 CD-ROM 등에 백업한 후, A속성을 제거합니다. 그런 후 사용자가 메모장 등에서 test.txt 라는 파일을 다시 편집하고 저장하면 그 순간 A 속성이 다시 부여됩니다. test.txt 라는 파일이 갱신되었다는 사실을 알 수 있게 해 줍니다.

아무튼 하드에서, A속성이 있는 즉 갱신된 파일만 찾으려면, dir 명령에 옵션을 붙여 주면 됩니다. attrib 명령은 파일의 속성을 보거나 수정하는 명령어인데, 특정 속성의 파일만 찾을 수 있는 기능은 없더군요.

dir /a:a

이렇게 하면 A속성이 있는, 즉 내용이 갱신된 파일만 찾아서 목록을 보여 줍니다.


dir /a:a /s /b
이 경우 /s 옵션은 하위디렉토리까지 모두 찾으라는 뜻이고, /b 는 간략히 출력하라는 뜻입니다.

다음은 도스에서 attrib 명령을 실행하고, A속성의 갱신파일만 찾는 예제 화면입니다.

D:\Z>attrib
A          D:\Z\example.html
A   H      D:\Z\새 ACDSee BMP Image.bmp
           D:\Z\새 WinZip File.ZIP
           D:\Z\새 텍스트 문서 (2).txt
A          D:\Z\새 텍스트 문서.txt

D:\Z>
D:\Z>
D:\Z>
D:\Z>dir /a:a /s /b
D:\Z\example.html
D:\Z\새 ACDSee BMP Image.bmp
D:\Z\새 텍스트 문서.txt
D:\Z\새 폴더\새 ACDSee PSD Image.psd

D:\Z>


"새 WinZip File.ZIP"과 "새 텍스트 문서 (2).txt" 파일에는 A속성이 없기 때문에, dir에서는 나오지 않았습니다. 즉 dir이, A속성이 있는 갱신된 파일만 찾아서 보여주고 있습니다.
2009/05/12 23:56 2009/05/12 23:56
배치파일 문법에서는 어떤 부분을 반복하려면 라벨을 만든 후에 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 라는 중지문을 삭제하면 됩니다.
2009/05/12 23:55 2009/05/12 23:55
윈도우의 도스창(명령 프롬프트) 이나 리눅스의 셀에는, 히스토리(History)라는 기능이 있습니다. "역사"라는 뜻이 아니고, 지금까지 입력했던 명령어들이 컴퓨터에 기록되어 있는 것입니다.

만약 dir 이라는 명령어를 방금 전에 실행했다면, 다시 dir 이라고 칠 필요 없이,

키보드의 "위쪽 화살표 키"를 한 번 눌러 주면,

dir 이라는 명령어가 다시 프롬프트에 나타납니다. 이때 Enter키만 치면 dir 명령이 다시 실행됩니다.

상하 화살표키를 여러 번 눌러보면, 한참 전에 입력했던 다른 명령어들도 나올 것입니다.


javac Foo.java && java Foo 53 451451 515 353
특히 이런 긴 명령어를 쳤다면, 다시 입력하기 힘들 것입니다. 이때는 히스토리 기능이 아주 큰 도움이 됩니다.



배치 파일(Batch File)로


매일 일정한 명령어들을 반복 사용한다면, 그 명령어들을 배치 파일로 만들어 두면 편리합니다.


예를 들어,
D:드라이브의 Z폴더의 모든 파일을
D:드라이브의 X폴더로 복사하고
X폴더의 내용을 dir 명령으로 확인하는 작업을 매일 한다면

메모장으로, 다음과 같은 배치 파일을 만들어 두고, 이제 도스창에서 foo 라고만 치면, 복사 작업이 자동화됩니다.

파일명: foo.bat
@echo off

copy d:\z\*.* d:\x\*.*
dir d:\x

2009/05/12 23:54 2009/05/12 23:54
프로그래밍을 할 때는 소스의 각 줄에 번호를 붙이는 것이 편리합니다. 빔 에디터에는 그런 기능이 명령어의 형태로 있습니다.

현재 문서를 편집중이라면, Esc키를 누르고 다음과 같이 입력합니다:

:se nu
또는
:set number
라고 하면, 각 행의 좌측에 행번호가 붙습니다.



행번호를 없애려면 아래와 같이 합니다.
:se nonu
또는
:set nonumber



이 명령어로 나타나는 줄번호는 눈에 보이기만 할 뿐이지, 파일 내용에는 저장되지 않습니다.
2009/05/12 23:52 2009/05/12 23:52
프로그래밍을 할 때는 소스의 각 줄에 번호를 붙이는 것이 편리합니다. 빔 에디터에는 그런 기능이 명령어의 형태로 있습니다.

현재 문서를 편집중이라면, Esc키를 누르고 다음과 같이 입력합니다:

:se nu
또는
:set number
라고 하면, 각 행의 좌측에 행번호가 붙습니다.



행번호를 없애려면 아래와 같이 합니다.
:se nonu
또는
:set nonumber



이 명령어로 나타나는 줄번호는 눈에 보이기만 할 뿐이지, 파일 내용에는 저장되지 않습니다.
2009/05/12 23:52 2009/05/12 23:52

디렉토리 만들기 명령


mkdir 이라는 명령으로 디렉토리(폴더)를 만들 수 있습니다.
mkdir z
이렇게 하면 현재 디렉토리 밑에 z 라는 이름의 디렉토리가 만들어집니다.

ls
라고 쳐보면 z 디렉토리가 보일 것입니다.

새로 만들어진 디렉토리에 들어가 보려면
cd z
이렇게 합니다.


pwd
라는 명령을 쳐보면 이렇게 출력될 것입니다.
/root/z
(자신의 ID가 root 일 때) 이렇게 나오겠지요.

만약 mkdir z 명령을 준 장소(디렉토리)가 최상위 디렉토리 (/) 라면
/z
이렇게 나옵니다.

또는 디렉토리를 만들 때
mkdir /z
이렇게 하면, 현재 디렉토리가 어디든 상관없이 항상 최상위 루트 바로 밑에 z 폴더가 만들어집니다.




아무튼 방금 만들어진 z 디렉토리에서 다시 빠져나오려면
cd ..
이렇게 합니다.




디렉토리 지우기


rmdir 이라는 명령으로 현재 디렉토리 밑에 있는 하위 디렉토리를 지울 수 있습니다.
rmdir z
이렇게 하면 아까 만든 z 디렉토리가 없어집니다. z 속에서 실행하면 No such file or directory (그런 파일이나 디렉토리가 없습니다) 라는 에러가 납니다. z에서 나와서 지워야 합니다.

그런데 z 디렉토리가 비어 있지 않고 안에 무슨 파일이 들어 있다면, 지워지지 않고 Directory not empty (디렉토리가 비어 있지 않습니다) 라는 에러가 납니다. 이때는
cd z
이렇게 z 디렉토리 안에 다시 들어가서

rm *
이렇게 하여 모든 파일을 지워서 그 디렉토리를 비워주어야 합니다. 물론 지워서는 안될 중요한 파일일 수도 있기에 주의가 필요합니다.

rm 명령으로 파일을 지우기 전에는, pwd 명령으로 현재 디렉토리 주소가 정확한지 확인해야 합니다. 그렇지 않으면 엉뚱한 디렉토리의 파일을 모두 지워서 낭패를 보는 경우가 있습니다.
2009/05/12 23:52 2009/05/12 23:52
Cygwin(시그윈) 은, gcc 나 Perl 등의 개발 도구를 기본적으로는 설치해 주지 않습니다. 사용자가 직접 설치를 지정해 주어야 합니다. Cygwin이 기본 옵션으로 설치해 주는 것이라곤, bash 쉘과 코어 유틸리티 정도밖에는 없습니다.

gcc 설치법은 다음과 같습니다.

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

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

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



패키지 선택 메뉴의 목록에 Devel 이라는 카테고리 즉 "개발툴" 항목이 있는데, [+] 기호를 클릭해서 항목을 펼치면,

gcc-core: C Compiler 라는 곳이 있습니다. 그 바로 왼쪽의 "Skip (생략)"이라는 곳을 클릭하면, gcc 현재 버전이 3.4.4-1 등으로 표시됩니다. 이렇게 패키지 버전이 나타나면, 그 패키지가 설치된다는 뜻입니다. Skip 이라고 된 패키지는 설치에서 제외된다는 의미입니다.

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



이제 시그윈의 bash 셀이든, 윈도의 명령 프롬프트 에서든,
gcc 라고 하면 gcc 가 실행됩니다.



gcc 도움말 화면:
D:\Z>gcc --help
Usage: gcc [options] file...
Options:
  -pass-exit-codes         Exit with highest error code from a phase
  --help                   Display this information
  --target-help            Display target specific command line options
  (Use '-v --help' to display command line options of sub-processes)
  -dumpspecs               Display all of the built in spec strings
  -dumpversion             Display the version of the compiler
  -dumpmachine             Display the compiler's target processor
  -print-search-dirs       Display the directories in the compiler's search path

  -print-libgcc-file-name  Display the name of the compiler's companion library
  -print-file-name=<lib>   Display the full path to library <lib>
  -print-prog-name=<prog>  Display the full path to compiler component <prog>
  -print-multi-directory   Display the root directory for versions of libgcc
  -print-multi-lib         Display the mapping between command line options and
                           multiple library search directories
  -print-multi-os-directory Display the relative path to OS libraries
  -Wa,<options>            Pass comma-separated <options> on to the assembler
  -Wp,<options>            Pass comma-separated <options> on to the preprocessor

  -Wl,<options>            Pass comma-separated <options> on to the linker
  -Xassembler <arg>        Pass <arg> on to the assembler
  -Xpreprocessor <arg>     Pass <arg> on to the preprocessor
  -Xlinker <arg>           Pass <arg> on to the linker
  -save-temps              Do not delete intermediate files
  -pipe                    Use pipes rather than intermediate files
  -time                    Time the execution of each subprocess
  -specs=<file>            Override built-in specs with the contents of <file>
  -std=<standard>          Assume that the input sources are for <standard>
  -B <directory>           Add <directory> to the compiler's search paths
  -b <machine>             Run gcc for target <machine>, if installed
  -V <version>             Run gcc version number <version>, if installed
  -v                       Display the programs invoked by the compiler
  -###                     Like -v but options quoted and commands not executed
  -E                       Preprocess only; do not compile, assemble or link
  -S                       Compile only; do not assemble or link
  -c                       Compile and assemble, but do not link
  -o <file>                Place the output into <file>
  -x <language>            Specify the language of the following input files
                           Permissible languages include: c c++ assembler none
                           'none' means revert to the default behavior of
                           guessing the language based on the file's extension

Options starting with -g, -f, -m, -O, -W, or --param are automatically
 passed on to the various sub-processes invoked by gcc.  In order to pass
 other options on to these processes the -W<letter> options must be used.

For bug reporting instructions, please see:
<URL:http://gcc.gnu.org/bugs.html>.

D:\Z>



그리고 간단한 소스를 컴파일하여, gcc 가 잘 설치되었는지 테스트해 보아야 합니다.
2009/05/12 23:48 2009/05/12 23:48
which 라는 명령으로, 실행 파일이 하드의 어디에 있는지 손쉽게 알아낼 수 있습니다.

which ls
라고 하면

/usr/bin/ls
이렇게 결과가 나옵니다. ls 라는 파일이 /usr/bin/ 디렉토리(폴더) 밑에 있다는 뜻입니다.

이것은 일반적인 bash 셀의 경우이고,
C shell 등에서는 whereis 또는 whence 라는 명령어를 사용합니다.



시그윈(Cygwin)에서는
D:\Z>which notepad.exe
/cygdrive/c/WINNT/system32/notepad.exe

D:\Z>


이렇게 윈도우용 파일의 위치까지 알아낼 수 있습니다. 아주 편리합니다.
2009/05/12 23:41 2009/05/12 23:41
윈도우 프로그램에서는 클립보드를 이용하여 프로그램들 간에 데이타를 이동시킬 수 있습니다. 가령, 메모장에 쓴 편지를 복사하여 아래아한글(HWP)에 붙여 넣을 수 있습니다. 그리고 아래아한글의 화면 전부를 "Print Screen"키로 캡처하여 포토샵에 그림으로써 붙여 넣을 수도 있습니다.

한편, 명령 프롬프트창 즉 도스창에서는, 프로그램 간에 데이터를 이동시킬 때 재지향이나 파이핑을 사용합니다. 용어는 어렵지만, 실은 굉장히 쉽고 실용적인 것입니다.


재지향(Redirection)에 대해



데이터 입출력의 방향을 바꾸어 주는 것입니다.

가령 dir 이라는 명령을 치면

D:\Z>dir
 D 드라이브의 볼륨: Foo
 볼륨 일련 번호: 1273-A5D7

 D:\Z 디렉터리

2006-07-06  07:18p      <DIR>          .
2006-07-06  07:18p      <DIR>          ..
2006-07-03  10:33a                   0 0.htm
2006-07-06  07:17p                  58 file.wav
2006-07-06  07:17p              10,752 Microsoft Word 문서.doc
2006-07-06  07:18p              41,306 PSD Image.psd
2006-07-06  07:18p              62,166 Scene.max
2006-07-06  07:18p             124,746 WinZip.zip
2006-07-06  07:17p                   0 새 텍스트 문서.txt
               7개 파일         239,028 바이트
               2 디렉터리  54,910,869,504 바이트 남음

D:\Z>


이렇게 파일 목록이 명령 프롬프트 화면 즉 도스창에 나타납니다.

만약 dir > test.txt 라는 명령을 준다면, 화면에 아무것도 나타나지 않습니다. 그러면 화면 출력들은 어디로 간 것일까요? 바로 test.txt 라는 파일 속에 들어가 있습니다. 하드의 현재 디렉토리(폴더)에 test.txt 라는 파일이 생성되어 있을 것입니다. 그 파일을 메모장 등으로 열어 보면, 위의 dir 출력 화면과 똑같은 글자들이 고스란히 들어가 있을 것입니다.

> 기호는, 화면의 출력을 파일로 저장하라는 의미입니다. 즉 출력의 방향을, 화면이 아닌 특정 파일로 '재지향'하라는 뜻입니다. 즉 방향을 바꾸라는 의미입니다.

단, 이때 test.txt 라는 파일이 이미 하드에 있다면, 그 test.txt 라는 파일이 "덮어쓰기"가 되어, 원래의 내용이 영원히 사라져 버리므로 주의가 필요합니다.

파일뿐 아니라 장치(device)로도 데이터를 보낼 수 있습니다. 유닉스 계열의 OS에서는 하드웨어 장치도 하나의 파일로 취급하는데, 도스(DOS)도 유닉스에 바탕을 둔 운영체제이기에, 이것이 어느 정도 가능합니다.

dir > prn 이라고 하면 dir 의 화면 출력 결과가 프린터로 전송되고 곧바로 인쇄가 됩니다. (단, 윈도98까지는 이것이 되었는데, 윈도우2000이상에서는 안 먹히는 것 같습니다.) prn 이라는 것은 프린터를 가리키는 가상 파일입니다. 이론적으로만 존재할 뿐, 하드에서 보이지는 않습니다.

dir > nul 이라고 하면, 불필요한 화면 출력 결과를 보이지 않게 없애 버릴 수 있습니다. NUL 이라는 가상 장치는 "블랙홀" 같은 역할을 합니다.


지금까지 설명한 것은 Output Redirection (출력 재지향)입니다.




거꾸로도 가능합니다. 이것을 Input Redirection (입력 재지향) 이라고 합니다.

< 기호를 사용하면, 특정 파일의 내용을 어떤 프로그램의 입력으로서 사용할 수 있습니다.


sort < test.txt 라고 하면, test.txt 의 내용을 sort 라는 명령어 속에 집어 넣으라는 이야기가 됩니다. sort 는 문장의 각 행들을 ABCD순으로 정렬시키는 명령이기에, test.txt 의 내용이 정렬되어 화면에 출력됩니다.

sort < test.txt > test2.txt 라고 하면, 화면에 아무것도 나오지 않습니다. sort < test.txt 이것의 결과가 화면으로 나오지 않고, test2.txt 라는 파일 속에 저장되기 때문입니다.

단, Input Redirection (입력 재지향) 을 지원하는 명령어나 프로그램은 그리 많지 않습니다.





파이핑(Piping)에 대해


재지향은 명령어와 파일(혹은 장치)을 서로 엮는 것입니다.

반면 파이핑(Piping)은 복수의 명령어들을 서로 직접 결합시키는 것입니다.

파이핑에는 파이프(|) 라는 기호가 사용됩니다. 키보드의 플러스 기호 우측에 있는데, Shift키를 누르면서 백슬래쉬(\)기호를 누르면 "|"가 찍힙니다. 숫자 일(1)이나 알파벳 엘(l)로 혼동하지 않도록 주의해야 합니다.

dir | sort

이것은 dir 명령의 화면 출력 결과를 sort 라는 명령으로 직접 보내는 것입니다. 그 결과로, 파일 목록이 정렬되어 출력됩니다.





재지향이나 파이핑은 여러 번 중첩시킬 수도 있습니다.
2009/05/12 23:40 2009/05/12 23:40
리눅스 명령어나 툴들을 MS윈도우에서 사용하려면, Cygwin(시그윈) 을 설치하는 방법도 있고, 순수한 Win32용으로 컴파일된 파일을 사용하는 방법도 있습니다. 여기서 설명하는 것은 후자입니다.

Cygwin(시그윈)은 최소 설치만 해도 49메가가 넘기에 좀 부담스러운 면이 있더군요. grep 이나  diff 등의 명령어 한두 개를 쓰려고, Cygwin(시그윈)을 설치하는 것은 배보다 배꼽이 더 큰 경우였습니다.

"GnuWin32" 에서 리눅스/유닉스 툴을 윈도우용으로 컴파일하여 제공하고 있습니다. 물론 무료이고 오픈소스입니다. 인터넷에 보면 GnuWin32 말고도 이렇게 리눅스 툴을 윈도우용으로 포팅해 주는 곳이 많은데 GnuWin32 쪽이 가장 전문적이었습니다.



다운로드 방법


주소: http://gnuwin32.sourceforge.net/packages.html

파일 비교 명령인 diff 파일을 받는 것을 예로 듭니다:


우선 위의 주소의 목록에서 DiffUtils 라는 것을 클릭하면 다운받는 페이지가 나옵니다.



"Complete package, except sources (소스를 제외한, 패키지 전체)"의 Setup 을 클릭하고 Download 를 클릭하면, 전세계의 미러 사이트들이 나오고 "diffutils-2.8.7-1.exe" 등의 이름을 가진 설치 파일이 다운로드됩니다. 그런데 저는 이 방법보다는, 다음의 수동 설치를 권합니다.




Binaries 옆의 Zip 을 클릭합니다. 그러면 "diffutils-2.8.7-1-bin.zip" 식의 이름으로 압축된 파일이 다운로드됩니다. (버전에 따라서 파일명이 다름.) 이 파일 속에 있는 diff.exe 파일을 하드에 풀어 놓습니다. diff.exe 를 실행시키면 다음의 메시지가 나옵니다:

---------------------------
diff.exe - DLL 찾기 실패
---------------------------
DLL libintl3.dll을(를) 지정한 경로 D:\X;.;C:\WINNT\system32;C:\WINNT\system;C:\WINNT;에서 찾을 수 없습니다.
---------------------------
확인
---------------------------

diff.exe 가 libintl3.dll 이라는 라이브러리 파일을 필요로 한다는 의미입니다. 그러면 앞의 다운로드 페이지로 다시 돌아가서, Dependencies (종속 파일들) 옆에 있는 Zip 을 클릭하여 "diffutils-2.8.7-1-dep.zip" 이라는 파일을 받습니다.

"diffutils-2.8.7-1-dep.zip" 파일 속에서 "libintl3.dll" 파일을 꺼내서, diff.exe 가 있는 곳에 같이 풀어놓습니다.



이제 diff.exe 를 다시 실행시키면

---------------------------
diff.exe - DLL 찾기 실패
---------------------------
DLL libiconv2.dll을(를) 지정한 경로 D:\X;.;C:\WINNT\system32;C:\WINNT\system;C:\WINNT;에서 찾을 수 없습니다.
---------------------------
확인
---------------------------

이런 메시지가 나옵니다. 방금 받은 "diffutils-2.8.7-1-dep.zip" 파일 속에서 "libiconv2.dll" 파일도 꺼내서, diff.exe 가 있는 곳에 같이 풀어놓습니다.

이제 diff.exe 가 잘 실행이 될 것입니다.

D:\X>diff
diff.exe: missing operand after `diff.exe'
diff.exe: Try `diff.exe --help' for more information.



diff.exe --help 라고 하면 도움말이 나옵니다.



결론


다른 유틸리티들도 이런 식으로 받을 수 있습니다. 특히 CoreUtils 라는 것 속에는, 리눅스의 가장 기본적인 명령어들이 들어 있기에 꼭 받아보는 것이 좋습니다.

그런데 GnuWin32 에는 bash 셀이 없더군요. 그래서 bash 셀을 쓰기 위해서는 시그윈(Cygwin)을 설치할 수밖에 없었습니다.
2009/05/12 23:38 2009/05/12 23:38
Vim 이나 Vi에디터에서 여러 창을 열어서 동시에 편집할 때에, 각 창의 크기를 변경하려면 다음과 같이 합니다.

우선 여러창 중에서 어떤 창의 크기를 조절할지 선택해야 합니다. Ctrl+ww 핫키를 눌러서 창을 점프하면서 특정 창을 선택합니다.

Ctrl+ww

위의 핫키는 Ctrl키를 누르면서 w 키를 누르고, 다시 w키를 누르는 것입니다.


창 사이즈 확대하기:

Ctrl+w+
즉, Ctrl키를 누르면서 소문자 w 키를 누른 후, 플러스 기호(+) 키를 누르면 "현재 창" 사이즈가 1줄 확대됩니다.


창 사이즈 축소하기:
Ctrl+w-
즉, Ctrl키를 누르면서 소문자 w 키를 누른 후, 마이너스 기호(-) 키를 누르면 "현재 창" 크기가 1줄 축소됩니다.

키보드 우측 키패드에 있는 플러스 마이너스 키를 누르는 것이 좋습니다.
2009/05/12 23:34 2009/05/12 23:34
cygwin 을 전체 설치를 했습니다 그리고 bin 폴더를 압축해서 올려 드립니다.

요놈만 원하는 폴더에 압축을 풀어서

시스템 변수 에 Path 에 추가를 하시면 cmd 에서 바로 cygwin 명령어를 사용할수 있습니다.

개인적으로 인스톨 하는걸 안좋아해서 이렇게 올려 드립니다.

용량이 상당하네요.. 캬.

2009/05/12 23:30 2009/05/12 23:30
시작에서
 
실행에서 Sysedit 입력
 
시스템 구성 편집기가 뜨면 창이 몇개 뜨는데
 
거기서 C:\CONFIG.SYS 를 찾아서
 
빈 공간에 Stacks=9,256 을 입력 후
 
저장한 다음 재부팅 하시면됩니다.
 
 
 
스택오버 플로우용 보안패치
Microsoft 보안 공지 MS06-040
2009/05/12 13:29 2009/05/12 13:29
Cygwin에서 clear명령어가 안먹히는것을 확인할수 있었다.;;

화면을 지워야 하긴 하겠는데.. 어떻게 하면 좋을까 하다 이곳저곳 찾아본결과..

리눅스 명령어로 실행파일을 찾는 방법중 한개가

which clear 이런식으로 치는것이다.

$ which clear
clear: Command not found.

결과는 없었다.;;

설치가 제대로 이뤄지지 않은것이였다.
ncurses package안에 있다는데.. 흠..

패키지를 설치 하지 않고 하는 방법을 2가지를 해보고자 한다.

방법1 )))
~/.bashrc 파일에 아래 한줄을 추가해준다.(파일 안 내용이 아무것도 없을경우는 vi 에디터로 생성해준다.)

alias clear='echo -e "\E[2J"'

방법2 )))
clear를 하기 위해서 alias 를 안하고 단순한 방식으로

CTRL+L 을 클릭해 보면 말끔히 화면이 지워지는것을 확인할수가 있다.
2009/05/12 12:52 2009/05/12 12:52

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