리눅스 그냥 재미로 (JUST FOR FUN)

Posted 2008/06/05 21:45 by Joo
리눅스 그냥 재미로 상세보기
리누스 토발즈 외 지음 | 한겨레신문사 펴냄
취미로 리눅스를 만들어 무상 배포하고 오픈 소스 운동을 전개함으로써 하이테크 업계를 뒤흔든 소프트웨어의 달인 리누스 토발즈의 자서전. 이 책은 지금까지의 그의 인생 전부와 그만의 독특한 사상을 담고 있다. 리누스 토발즈의 솔직하고 담백한 관찰과 견해로 가득 찬 이 책은 하이테크의 미래와 그 관련 사업의 미래를 궁금해 하는 모든 이의 필독서이다.

회사 안에서 어슬렁거리며 돌아다니기를 좋아하는데.. 우연히 휴게실에 갔다가 책장에서 "리눅스" 라는 말이 눈에 확! 들어왔습니다. 아무생각없이 (정말 아무생각없이) 책을 집어들고서 제 자리로 돌아갔습니다.

그 때부터 출퇴근 시간을 이용해서 조금씩 조금씩 읽어나가기 시작하다가 오늘에서야 드디어 다 읽었습니다. 오랜시간동안 공학을 공부했지만 그다지 역사에 대해서는 잘 알지 못했던 것 같은데 리누스의 삶을 보면서 오픈소스와 Linux의 역사에 대해서도 조금 알 수 있었던 것 같습니다.
그동안 Ubuntu Linux를 사용하면서도, 아니 오랜시간동안 Linux를 사용해왔으면서 이 프로그램이 어디서 어떻게 나오게 된 것인지에는 관심을 기울이지 않았던 것 같습니다.
회사에서도 오픈소스를 중요하게 생각하는데 사용하는데만 관심을 쏟았지, 그것의 진정한 의미도 몰랐던 것이 너무 부끄럽게 느껴지는군요.

어쨌든 리누스의 삶은... 정말 괴짜스러웠던 것 같습니다. 방에 틀어박혀서 컴퓨터를 만지는데만 신경을 쓰며 자신의 이미지는 어떠하든 그저 자신이 하고싶은 일이나 열심히 하는 그의 모습은..
말로만 오픈소스, 오픈소스를 외치며 오픈소스에 전혀 도움이 되지 않는 저의 모습을 돌아보게 하는 것 같습니다.

이제부터라도 시작해볼랍니다. 불편한 것은 고치면 되고, 잘 안되면 그저 묵묵히 방에서 열심히 노력하는 괴짜스러운 개발자의 삶.. :)

크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Linus Torvals, Linux, OpenSource, 도서감상

Ubuntu 7.10에서는 ati 그래픽 드라이버를 수동으로 잡아주는 등의 막대한 노가다가 필요하지만..

VirtualBox가 꽤나 안정적으로 동작합니다.
WindowsXP의 키보드 설정만 조금 바꿔주면 Shift + Space로 한영 전환이 가능합니다.

그러나 Ubuntu 8.04가 ati 그래픽 드라이버를 쏠랑 잡아주어 compiz가 쌩쌩 돌아가고
OpenOffice의 폰트 문제도 가뿐히 해결하는 모습을 보는 순간
Ubuntu 8.04로의 판올림은 너무나도 당연한 일이 되어버립니다.

그래서 이것저것 생각하지 않고 Ubuntu 8.04로 판올림 하는 순간
갑자기 VirtualBox가 동작하지 않고, FireFox가 3.0으로 판올림되어 그동안 쓰던 부가기능이 무용지물이 되고
(저는 겪지 못했지만) 노트북에서 무선 네트웍을 제대로 못잡는 문제가 터지면..
이제 슬슬 괜히 판올림했구나 라는 말이 나오게 되겠죠.


그래서 제가 겪었던 문제들 중 해결한 문제를 다시한번 정리해봅니다.

먼저 VirtualBox 관련 문제입니다.
VirtualBox가 동작하지 않는 문제는 커널도 판올림되면서 VirtualBox의 모듈이 구버전을 사용하기 때문입니다.
VirtualBox 모듈을 시냅틱 꾸러미 관리자에서 다시 설치해주면 해결됩니다.

VirtualBox를 실행한 후 갑자기 소리가 이상하게 나는 문제는.. Ubuntu 8.04부터는 오디오 드라이버를 Pulseaudio를 사용하게 되는데 기존의 VirtualBox 설정이 ALSA 로 되어 있어서 생기는 문제입니다.
이것은 VirtualBox의 설정을 pulseaudio로 바꿔주면 됩니다.

그 다음 FireFox 버전 2로 깔끔하게 바꾸는 방법입니다.
시냅틱 꾸러미 관리자에서 firefox를 삭제하면 firefox-2를 설치할 것인지 물어봅니다.
그렇게 설치하면 Ubuntu7.10과 동일한 모습의 Firefox를 만날 수 있습니다.



몇가지 문제는 해결했지만 여전히 남은 문제는 존재합니다.

VirtualBox의 windowsXP에서 아무리 키보드설정을 바꿔봐도 이제 한영전환을 마우스로 해야합니다. 저의 경우는 어떻게 이렇게 된건지는 모르겠지만 한/영키를 두번누르고 오른쪽 Alt를 한번 누르면 한영전환이 됩니다.(왜?? 모릅니다. -_-;)

VirtualBox가 더이상 심리스 모드로 동작하지 않습니다. ㅠㅠ

요런 문제가 남았지만 Ubuntu 8.04는 매우매우 편해졌다고 감히 말씀드릴 수 있습니다.
VirtualBox가 저처럼 꼭 필요한 상황이 아니라면 아무 문제도 없다고 봐도 무방합니다.

Enjoy with Ubuntu! :)


크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Linux, ubuntu, Ubuntu8.04, virtualbox

누군가에게 메일을 보낼 일이 있어서 메일주소를 기억해내다가..
empal.com 의 메일을 쓴다는 것을 기억해냈습니다.

아.. empal 메일도 있었지..
일단 메일을 보낸 후에 예전 기억을 되짚어보면서 empal.com에 접속해봤습니다.
역시 로그인한지 6개월이 지나서 휴면계정이 되어 있었습니다.

empal 메일의 가장 큰 특징은 기본 가입시부터 2GB의 메일을 제공한다는 것이었습니다.
초기 가입자에게는 매우 짠돌이처럼 용량을 부여하는 naver와 daum보다는 확실히 좋은인상입니다..
그리고 새로운 기능.. firefox에서도 대용량메일을????
한메일에서도 되는데..
얼마나 업로드한지 나오지 않아서 문제지만.. (듣기로는 ajax로 구현예정이라 했습니다.)

어쨌거나 살펴보니.. flex를 써서 firefox에서도 화려한 UI를 보여준다는 것입니다.
그래그래? 어디어디... 한번 보내보기로 했습니다.

역시 예쁜 창이 떴다. 그런데....
사용자 삽입 이미지
이건....... Windows용 Firefox만을 이야기하는 것이었구나...
최신의 Ubuntu 8.04의 firefox 2 버전을 지원하지 않는 것은...

흠... 그러면... hanmail처럼 프로그레스바 없는 형태로는 잘 되나?
엇! 안된다. 일반모드에서는 대용량 첨부가 되지 않았습니다.

원래 empal이 ActiveX를 써서 Windows용 firefox에서도 안되었는데..
이 기능을 통해 일단 windows에서는 잘 돌아간다는 것인가 봅니다.
windows에서도 firefox만 진짜 딱 되네요. opera와 safari는....

그럼 empal 대용량 메일은 Windows용 IE와 Firefox에서만 되는 것이군요.
후우... Linux 사용자는 이대로.... hanmail 대용량 메일을.. ㅋ

그나저나 이런 문제들은 매우 큰 문제입니다.
일전에 daum쪽의 이미지 업로더가 flex기반으로 바뀌었는데..
Windows외에는 동작하지 않았습니다. 역시..-_-;;
이제 올리는 건 되더군요. 편집은 여전히 안되고..

그리고 tistory의 스킨 미리보기도 Sample이 화면을 뒤덮습니다.
물론 Linux용 flash player를 개판으로 만든 Adobe 탓도 있지만..
그걸 사용하는 사람의 입장에서는 왜 안되는지 짜증이 날 뿐입니다.

차라리 화려한 flex 쓰지말고 확실한 기능을 쓸 수 있도록 해줬으면 좋겠습니다.


크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : BigMail, empal, flex, Linux, ubuntu, 대용량메일

Linux가 편해지면 나쁜 것인가요?

Posted 2008/04/12 12:58 by Joo
리눅스 9 절대로 쓰지 마세요 - 리눅스 배포판이란? 에 대한 트랙백

우하하.. 이미 오래전 글이지만 Linux를 사랑하는 사람으로써 한마디 남기겠습니다.
진정한 Linux 사용에 대한 말씀을 하시는 그 분께는.. 먼저... 그렇다면 패키징된 것을 쓰지마시고 kernel 부터 일일이 컴파일해서 설치하시라는 말씀을 드리고 싶구요..

저는 지금 Ubuntu를 설치해서 쓰고 있는데 사용하는 용도는 Desktop 용입니다. 물론 프로그래밍환경을 위해 몇몇가지 서버 프로그램도 설치해서 사용 중입니다.
네.. 서버용 프로그램은 제가 이것저것 설정을 해야하니 컴파일을 할때도 있고, 패키지를 가져다 써도 무수한 설정파일을 고칩니다.
그러나 웹서핑을 위한 flash-plugin을 일일이 다운로드 받아서 설치하고 싶지는 않습니다. firefox에서 알아서 다운로드 해준다면 땡큐죠.
mp3 tag가 euc-kr이라 utf8로 변환하기 위해 shell script를 만들기도 했습니다만 "easytag 라는 프로그램이 있군! 땡큐~" 했습니다.
편하게 설치하게 해준다고 GUI를 제공한다고 진정한 Linux가 아닙니까? 가능하면 편하게 할 수 있도록 해주는 것이 감사합니다. 맘에 들지 않는다면 그 때 손보면 됩니다.

shell은 강력합니다. 그러나 gui도 강력합니다. 전 둘 다를 위해 linux를 쓰는 것이지 shell만이 덩그러니 있는 linux는 거부합니다. 그건.. 특별한 목적(서버,임베디드)를 위해 사용할 뿐입니다.

덧> 너무 오래전 글에 대한 트랙백이군요.. 그냥.. 돌아다니다가.. 죄송.


크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Linux, ubuntu

Ubuntu 설치하느라 회사에서 거의 아무것도 안하고 있습니다. -_-;; (월급이 아깝?)

Ubuntu 8.04를 설치한 이유는 이왕에 다시 설치할 것.. 뭔가 새로운 것을 해보고 싶었기 때문입니다. 윈도우는 이미 virtualbox를 통해 설치하기로 결정했기때문에 윈도우를 위한 파티션은 아예 삭제하였고, 효과적인 공간이용을 위해 파티션을 나누었습니다.
Device      Boot      Start      End      Blocks   Id  System
/dev/sda1   *           1        6226    50010313+  83  Linux
/dev/sda2            6227       11830    45014130   83  Linux
/dev/sda3           11831       12452     4996215   82  Linux swap / Solaris
/dev/sda4           12453       30401   144175342+   7  HPFS/NTFS
/ 를 위한 파티션, /home 을 위한 파티션, 나머지는 그냥 상관없었기에.. 기존에 쓰던대로 두었습니다. NTFS를 Linux상에서 읽을 수 있기에..

왠지 64bit 가 좋아보여서 7.10부터 64bit용을 쓰고 있었습니다. 8.04도 당연히 64bit를 설치했습니다. /home을 따로 떼어두어서 좋은 점은 다시 설치할 때 개인설정을 또 하지 않아도 된다는 것이었습니다. 다른 좋은점은..... ^^ 별로 없는 듯..
(시스템 활용을 정말 잘해야하는 환경에서는 세세한 설정이 필요하나 개인적 용도에는 아무래도 상관없을 것 같습니다.)

그렇게 설치한 Ubuntu 8.04.. 시작할 때 언어선택하는 것부터 시작해서 모든 것이 아름답게 보였습니다. 기존 7.10에 비해 좋은 점 몇가지를 이야기 하자면..

1. ati 그래픽 환경이 바로 잡힌다는 것입니다. (나중,32bit 7.10을 설치한 후,에 안 사실이지만 64bit Ubuntu에서 모두 잘 잡아주었습니다.)
2. 한글의 hinting이타 antialiasing이 기본적으로 잘 적용되어 있었습니다. 따로 설정하지 않아도 되었습니다.
3. OpenOffice에서 은진체를 쓸 수 없었는데 아주 잘되었습니다. (와우!)
4. 리듬박스에서 연주할 수 없는 파일이 나오자 스스로 코덱을 찾아주었습니다. (이것은 토템에 있는 기능인데 리듬박스에도 적용된 것 같습니다)
5. 접근제한에 대해서 세부적인 설정이 가능했습니다. network-manager 같은 경우 lock 개념을 적용하여 설정을 볼 수는 있지만 고치려면 루트계정이어야 한다는 것.

여러가지로 아주 좋은 점이 많습니다.
버전업이 될때마다 언제나 느끼는 것이지만 큰 변화는 없지만 점점 편리해지는 것 같습니다.
그러나 전 지금 7.10의 그것도 32bit의 Ubuntu를 쓰고 있습니다.

그 이유는..

1. 기존에 사용하던 프로그램을 쓸 수 없습니다. eclipse의 플러그인인 퀀텀DB가 64bit에서는 지원하지 않는 것 같습니다. (이것은 64bit에서 32bit로 온 이유입니다.)
2. 1번과 비슷하나 조금 다릅니다. virtualbox가 제대로 안돌아갑니다. 물론 virtualbox에 관련된 모든 패키지를 설치하니 되기는 합니다만 그렇게 하니 그래픽카드 모듈이 날아가버려 compiz를 사용할 수 없었습니다.
3. firefox3 beta를 지원하는 firebug와 all-in-one gestures가 없습니다. gesture야 조금 불편하지만 다른 것을 쓰면 되는데.. firebug가 안되는 것은... (물론 firefox2를 설치해서 쓰면 됩니다만 이상하게 firefox2를 쓰는데도 플러그인이 설치되지 않았습니다. firefox 설정 디렉토리를 공유하는 문제때문인 듯 합니다.)

정리하고 보니 Ubuntu 8.04의 문제라기보다는 64bit를 사용하기에 생긴 문제 같기는 합니다만.. (firefox문제도 있으니까.. ^^;) virtualbox를 쓸 수 없고, firefox를 쓸 수 없는 것은 매우매우 심각한 문제이기 때문에 사용에 거의 문제가 없는 7.10으로 돌아올 수 밖에 없었습니다.

Ubuntu 8.04 32bit 버전을 쓰면 겪은 모든 문제가 다 해결될 수도 있겠으나.. 더이상 Ubuntu 설치에 시간을 쏟을만큼 한가하지 않기에 안정적인 환경에서 작업합니다.
(Ubuntu 7.10 32bit에서 기본적으로 제공하는 ati 드라이버는.. compiz 동작이 안됩니다. ㅠㅠ 그래도 다른 것은 다 되니까..)

아.... 언젠간 다 되겠죠? 무식하게 제공해주는 것만으로 하려니 이런가? 하는 생각도 합니다.


크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : 32bit OS, 64bit OS, 7.10, 8.04, Linux, OpenOffice font, ubuntu, virtualbox

회사에서 사용하는 컴퓨터에 Dual 모니터를 사용하기 위해서 ati x1550 그래픽 카드를 설치했다.
좋은 그래픽 카드는 아니지만 내가 하는 작업에는 충분한 그래픽 카드이다.
그런데 하필 ati 라니.. ㅠ 이전에 ati 그래픽 카드 상황에서 설치하느라 고생을 너무 많이 해서 이젠 ati가 싫어지기 까지 한다.

문제는 처음부터 나타났다. X가 실행되자 그대로 죽어버렸다.
수동으로 이것저것 해봤지만 아무것도 나아지지 않았다.
결국 선택한 방법은... 재설치... -_-;;

이왕에 설치할 것.. Ubuntu 8.04 hardy를 설치하기로 했다.
설치까지는 아무 문제가 없었다. 듣던대로 훨씬 설치가 간편해졌다.
firefox 3.0 이 기본으로 설치된 것과 글꼴이 좀 이상한 것을 제외하면 아주 마음에 들었다.

이제 그래픽 설정하는 것만이 남았다.
Ubuntu 7.10 on ATI X1550 Desktop 이라는 글을 발견하여 별 문제 없을 것이라 생각했다.
그런데... Ubuntu 버전이 달라서 그런지... 제대로 잡히지 않았다.. 아니. 오히려 X가 또 죽었다.
ㅠㅠ
Ubuntu 7.10을 설치하던 옆의 동료도 마찬가지였다. 뭐가 문제지? 하며 고민하던 중..

사용자 삽입 이미지
제한된 드라이버 관리자를 통해 한번 설치해봤다.
어랏!!! compiz가 잘 동작하는 것을 보니.. 제대로 된 것 같았다.

그런데 두대의 모니터에 동일한 화면은 나오는데 각각 따로 나오는 것은 안되는 것이다.
해상도 조절하는 곳에서도 그래픽 설정하는 곳에서도 잘되지 않았다.

그러다가 ati 드라이버가 aticonfig이라는 명령을 제공해 주는 것을 기억하고 aticonfig --help 로 도움을 청했다.

?????!!!!!?!!?!!?!!!!

이럴수가 거기 방법이 나와있었다.
  1. Setting up fglrx for the first time.
       Single head :    aticonfig --initial --input=/etc/X11/xorg.conf
       Dual head   :    aticonfig --initial=dual-head --screen-layout=above
                        This command will generate a dual head configuration
                        file with the second screen located above the first
                        screen.
  2. Setting up big desktop to horizontal and set overlay on secondary display.
                        aticonfig --dtop=horizontal --overlay-on=1
정말 그대로 잘된다. -_-;;
난 뭘한거지? 그동안?
Ubuntu 8.04가 아직 베타라서 그런가? 내가 제대로 따라하지 못했나? 하며 Ubuntu 설치만 3번을 했는데..
이거 하느라 아무것도 못하고 10시간을 꼬박 앉아있었는데..

허망하다..


결론은 이것이다.. Ubuntu에서 이제 ati 그래픽 카드도 잘 잡아준다는 것... 휴우...

크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : 8.04, ATI, aticonfig, Hardy, Linux, ubuntu

Unix Programming Environment 정리

Posted 2008/03/25 15:39 by Joo
책을 읽으면서 정리하는 것이 가장 좋은 학습법이라 생각해 정리를 해본다.

1장 초보자를 위한 Unix

1.1 출발

단말기와 타이핑

제어문자 : ^M (Return 키) ^D (입력 완료) ^G (단말기 벨소리) ^H (후진) ^I (탭)

tty : teletype, terminal의 동의어

단말기의 이상동작

stty : set terminal options

stty -tabs

오타

return을 누르기 전 오타발생시 삭제 할 수도 있지만 @을 입력하면 이전 입력문자를 버린다. (현재는 ^U를 사용한다.)

#를 누르면 이전 입력문자 1개를 버린다. (현재의 삭제와 같다.)

우편 사용하기

mail을 사용하면 현재 사용자에게 메일을 보낼 수 있다.

write를 사용하여 terminal상의 사용자에게 message를 보낼 수 있다.

1.2 화일과 자주 쓰는 명령어

편집기 ed

a : 입력시작 append

. : 입력 종료

w filename : 파일에 저장

q : 종료

n,mp : n-m줄까지 print 하라 $는 마지막 줄

화일의 프린트 - cat and pr

cat 은 화일을 화면에 출력한다.

pr 은 프린트 가능한 형태로 보여준다.

pr -n : n개의 단으로 나누어 보여준다.

pr 과 lpr은 보통 같이 사용된다. nroff, troff 등의 프린트 명령이 있다.

유용한 명령들

wc : 단어 세기

grep : 찾기

sort : 문자 정렬

-r : reverse

-n : 숫자 순으로 정렬 -nr 도 가능

-f : 대소문자 구분 x

+n : n+1번째부터

tail : 마지막 열을 기준으로 출력

cmp file1 file2 : 차이점 비교 (대부분 같은지를 확인할 때 사용)

diff file1 file2 : 차이점 비교 (다름을 알고 어떻게 다른지 알고자 할 때 사용)

1.3 디렉토리

특별히 정리할 만한 내용이 없다.

1.4 쉘

쉘에서는 패턴을 사용할 수 있다.

패턴을 사용치 않으려면 ' 나 \를 사용하면된다.

입출력 방향전환

> : 왼쪽의 출력을 오른쪽의 입력으로 전환한다. < 는 반대

>> : 동일하나 추가의 의미

파이프

> 가 표준입력을 전달했다면 | 는 인자를 전달한다.

프로세스

& : background 로 실행하라

파이프로 연결된 명령에 & 를 사용하면 모든 명령이 동시에 background로 전환되지만 마지막 PID만이 프린트된다.

wait : & 로 시작된 모든 프로세스를 기다린다.

nohup : "no hangup" 단말기가 로그아웃이 되더라도 명령을 계속 동작시킨다. 해당 명령의 출력은 nohup.out 에 저장된다.

nice : 프로세스의 순위를 변경한다. nohup은 실행되면 nice를 사용하여 실행하는 프로세스의 순위를 낮춘다. (로그아웃할 것이므로)

at : 명령 수행 시간을 지정할 수 있다. (시간 형태 : 0000 or 0000(a|p)m

$ at 시간

명령어들...

^D

$

환경꾸미기

후진키 사용

stty erase '^h"

프롬프트 사용 (PS1 변수를 변경하면 된다.)

PS1='Prompt $'

export 변수 : 쉘에게 변수 알리기

2장 화일 시스템

Unix 시스템에서는 모든 것이 화일이다.

2.1 화일의 기본 사항

od : (octal dump) 화일의 모든 바이트를 사용자가 볼 수 있도록 한다.

od -c : 문자로 보이기

od -b : 각 바이트를 8진수로 보여준다.

개행문자에 대한 터미널의 해석

\n 은 od 같은 프로그램이 사용하는 관십의 표현이며 실제는 한 바이트인 8진수 012로 저장된다.

탭 같은 경우도 터미널이 문자를 보고 해석하여 화면에 뿌려주는데 커널이 하도록 할 수 있다. stty -tabs는 커널이 탭을 공백문자로 바꾼다.

개행문자로 마찬가지이다. 012를 캐리지 리턴과 개행으로 확장하여 출력한다. 일부 시스템(windows, joo생각)은 CRLF를 직접 파일에 입력한다. Unix에서는 사용자가 화일에 넣지 않은 어떠한 바이트도 사용하지 않는다.

2.2 화일의 내용

Unix 에서는 화일은 구별하려는 대신 화일의 차이점을 무시하려고 한다. 모든 화일은 문자와 개행문자로 구성된다. Unix에서는 화일에 접근하기 위해서는 단지 화일 이름만 알면 된다.

그러나 이것은 문제가 될 수 있다. 이진화일의 경우 개행문자 없이 수만문자가 이어져 나온다. 이 경우 Unix 프로그램은 제대로 수행되지 못한다. 한 줄에 대한 가상의 정의가 되어 있기 때문이다.

2.3 디렉토리와 화일명

pwd : 현재의 디렉토리를 알려준다.

du : 한 디렉토리 내의 모든 화일과 모든 부디렉토리가 차지하는 디스크 공간의 양을 알려준다.

2.4 접근권한

화일에 접근권한을 두어서 다른 사용자가 자신의 화일을 볼 수 없도록 할 수 있다.

su를 사용해 수퍼유저이 될 수 있다. 이 경우 모든 화일에 접근할 수 있는데 수퍼유저도 볼 수 없는 화일을 만들기 위해 crypt를 사용할 수 있다.

/etc/passwd : 로그인정보를 포함해 암호정보를 가지고 있다.

set-uid : 화일권한에 x 대신 s가 있는 것은 화일이 실행되는 순간 그 화일의 소유자의 권한이 되는 것이다. 이것은 매우 유용하지만 잘못 사용하면 보안상의 문제가 생길 수 있다.

2.5 i-노드

inode에는 세가지 시간이 있다.

최종수정시간 : 쓰여진 시간

최종사용시간 : 읽거나 수행된 시간

최종변경시간 : inode가 변경된 시간

chmod, chown

2.6 디렉토리 계층

/bin : binaries

/dev : devices

/etc : et cetera

2.7 장치

/dev 에 있는 화일은 device로 사용되지만 Unix에는 동일하게 화일로 인식된다.

3장 쉘의 사용

3.1 명령어 줄의 구조

보통은 개행문자가 명령의 끝으로 인식되지만 ; 도 명령의 끝으로 인식된다.

; 로 구분된 명령을 파이프로 보낼때는 마지막 명령의 결과만이 파이프로 보내진다.

같이 보내기 위해서는 ()로 묶어주어야 한다.

tee : 파이프로 흐르는 data를 화일로 저장하고 파이프로 그대로 흘려보낼 수 있다.

3.2 메타문자

* 과 같은 특수한 특성을 가진 문자

이들 메타문자가 해석되지 않도록 하기 위해서는 ' 로 감싸주면 된다.

줄 끝의 역슬래쉬는 그 줄이 다음줄에 계속 연결되는 것을 말한다.

echo는 명시적으로 요청받지 않아도 최종적으로 개행문자를 출력한다.

echo -n , echo "....\c" : 개행문자를 추가하지 않게 한다.

3.3 새 명령어의 생성

Unix의 여러가지 명령을 조합하여 새로운 명령을 만들 수 있다.

실행권한을 주게되면 쉘의 도움없이도 가능하다.

3.4 명령어 인수 및 매개변수

$1 ... $9 로 입력된 인자와 매개변수를 전달할 수 있다.

$* : 인자 모두를 뜻한다.

echo 'grep $* /usr/you/lib/phone-book' > 114 로 114 명령을 만들 수 있는데..

114 'john mike' 에는 실제로 mike라는 화일에서 john을 찾는 것으로 해석될 수 있다.

따라서 $* 를 "$*" 과 같이 " 로 감싸줄 필요가 있다.

$0 : 현재 수행되는 프로그램 이름이다.

3.5 인수로서의 프로그램 출력

` 로 감싼 부분은 수행된 뒤 그 결과를 반환한다.

pick : 대화식 명령이 가능하다.

3.6 쉘 변수

set : 모든 정의된 변수의 값을 알 수 있다. (몇가지를 보기위해서는 echo를 쓰는 것이 더 좋다)

HOME, PATH 등이 쉘에서 사용된다.

어떤 변수의 값을 부속쉘에서도 접근가능하게 하려면 export를 쓰면 된다.

3.7 I/O 방향전환에 대한 추가 사항

> : 표준출력을 다른 곳으로 돌린다.

2> : 표준에러를 다른 곳으로 돌린다.

2>&1 : 표준에러를 표준출력과 같은 곳으로 한다.

<< s : (here docuement) s를 맨앞에 가진 줄 직전까지의 표준입력을 취한다.

3.8 쉘 프로그램에서의 반복문 처리

for 변수 in 단어들의 목록

do

명령어들

done

for 변수 in 목록 ; do 명령어들 ; done

for i in * 과 for i in $* 은 다르게 해석된다. 파일에서 $*로 사용하면 인자를 받아서 따로따로 수행하는 것이다.

3.9 bundle : 모두 하나로 묶기

bundle은 현재 사용되지 않는다.

3.10 왜 하필이면 프로그램이 가능한 쉘인가?

쉘은 프로그램으로 처리해야 하는 여러가지 문제를 해결해주기 때문에 이를 사용하는 것이 유익하다.

4장 필터

sed : stream editor

awk : 제작자의 이름을 따서 만들었다.

4.1 grep 류

$ grep 패턴 화일명들 ...

grep, egrep, fgrep

4.2 그 밖의 필터들

sort : 입력을 줄 단위로 아스키 순으로 정렬한다.

uniq : 중복된 줄을 버린다. (-c 로 중복된 횟수를 셀 수 있다)

comm : 화일을 비교한다.

tr : 입력의 문자를 변경할 수 있다. (대소문자 변환에 흔히 쓰인다)

4.3 스트림 편집기 sed

sed 는 ed를 고쳐서 사용되었다.

$ sed 'ed의 명령어' files...

명령

's/A/B/f' : substitute A to B, f=g 이면 모두 바꿈

'y/A/B/' : A스트링을 B스트링으로 바꾸라

-f file : 패턴을 파일로부터 읽어들인다.

-n : 자동 프린트를 하지 않는다. 명시적으로 p를 사용해야 프린트한다.

'/pattern/d' : 매칭되는 줄을 삭제

4.4 패턴의 조사 처리 언어 awk

$ awk '프로그램' files ...

프로그램

pattern { action }

awk는 한번에 한 줄씩 화일명들에서 입력을 읽어들인다.

필드

awk는 각 입력 줄을 자동으로 필드로 나눈다. $1 .. $NF(마지막 필드)

-F분리자 : 분리자를 지정한다. (FS="분리자" 로도 쓸 수 있다)

프린트하기

NR : 현제 레코드번호 (= 줄번호)

printf "format" : printf 를 사용해 출력할 수 있다.

패턴

== : 같다.

~ : 문자와 부합된다.

!~ : 문자와 부합되지 않는다.

BEGIN 및 END 패턴

BEGIN { ... } : 입력을 읽기 전에 수행된다.

END { ... } : 입력을 읽은 후 수행된다.

산술과 변수 : awk의 진정한 강점은 입력 데이타에 대한 계산이 가능하다는데에 있다.

awk는 C와 동일한 산술연산을 사용할 수 있다.

awk의 내장 변수

FILENAME : 현재의 입력 화일명

FS : 필드 분리 문자

NF : 입력 레코드 내의 필드 수

NR : 입력 레코드 수

OFMT : 숫자의 출력 포맷

OFS : 출력 필드의 분리 문자열

ORS : 출력 레코드의 분리 문자열

RS : 입력 레코드 분리 문자

제어흐름

C의 문법과 비슷하나 한 명령의 끝을 개행문자로 한다.

next : 다음 입력 줄을 불러들인다.

exit : END 패턴으로 즉각 넘어간다.

배열

선언하지않고 배열이 사용이 가능하다.

awk의 내장함수

cos(expr) : cosine

exp(expr) : 지수

getline() : 다음 입력 줄을 읽고 화일의 끝이면 0, 아니면 1일 반환

index(s1, s2) : s1에서 문자열 s2의 위치, 없으면 0

int(expr) : expr의 정수부, 버림법을 사용한다.

length(s) : 문자열 s의 길이

log(expr) : 자연로그

sin(expr) : sine

split(s, a, c) : s를 문자 c를 기준으로 a[1] ... a[n]으로 분리하고 n을 반환

sprintf(fmt, ...) : fmt에 따른 포맷

substr(s, m, n) : s내의 위치 m에서 시작하는 n 길이의 문자열

연관배열 : awk는 해쉬를 이용해 연관배열을 사용한다.

문자열

a = a " " : awk에는 문자열 접합연산자가 특별히 없다. 단지 나열만으로 접합이 일어난다.

쉘과의 대화

awk에서 인자를 받기위해서는 두가지 방식이 있다.

awk '{ print $'$1' }'

awk '{ print \$$1 }'

따옴표를 사용하는 방법이 더 좋다. \가 너무 많아지면 복잡해지기 때문이다.

또한 BEGIN을 통해 자주 사용되는 부분을 변수화 해두면 복잡함을 줄일 수 있다.

4.5 좋은 화일과 좋은 필터

Unix에서 생성하는 출력은 다른 프로그램의 입력으로 쓰일 수 있다.

크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : Linux, Programming, unix

ProFTPD 를 써보자

Posted 2008/03/20 22:14 by Joo
Local PC에 FTP 서버를 잠깐 쓸 일이 있었는데 리눅스용의 FTP 서버는 대부분 (개인 PC용이 아닌) 정말 서버를 위한 것이라서 사용하기가 어려웠다. 급하게 해야는데 FTP서버 설정을 해봤어야 하지..
어쩔 수 없이 바로 옆에 있는 Windows를 돌리고 있는 노트북에서 알FTP를 써서 파일을 전송하고 Samba로 파일을 가져오는 방법을 쓸 수 밖에 없었다.

아.... 내가 정말 잘 모르긴 모르는구나.... FTP 잠깐 돌리는 방법도 모르다니....
그래서 결심했다. FTP 서버 중에서 아무거나 하나 마스터하기로..

서버는 ProFTPD 로 정하고 연구를 시작했다.

ProFTPD

다운로드와 설치는 간단하니 Pass!
(실은.. 난 Apache Friends에서 LAMPP를 다운받아서 lampp startftp 했다. -_-)

어쨌거나 proftpd.conf 를 설정하는 방법을 연구해본다.

Umask 설정
Umask는 permmission이다. 일반적으로 Unix permmision은 _rwxr_xr_x 의 형태로 나타난다.
맨 처음부터 총 10개로 이루어져 있는데 번호를 매기면 0123456789 가 될 수 있겠다. 하나하나 설명하면..
 0번째 : 디렉토리는 d, 심볼릭 링크는 l로 나타내진다.
 1번째 : 소유자의 읽기권한
 2번째 : 소유자의 쓰기권한
 3번째 : 소유자의 실행권한
 4번째 : 그룹원의 읽기권한
 5번째 : 그룹원의 쓰기권한
 6번째 : 그룹원의 실행권한
 7번째 : anyone의 읽기권한
 8번째 : anyone의 쓰기권한
 9번째 : anyone의 실행권한
0번째 정보를 제외하면 각 사용자별로 3개씩 나누어지는데 이를 bit로 표현한다.
즉 읽기권한은 2^2로 4의 값을 가지고, 쓰기권한은 2^1로 2, 읽기권한은 2^0 으로 1의 값을 가진다.
플래그가 있으면 그 값을 가지고 없으면 그 값을 0으로 생각한다.
이렇게 나타내면 사용자별로 rwxr_xr_x는 세개씩 끊어서 755 라는 수로 나타낼 수 있다.
; (r=4) + (w=2) + (x=1) = 7
Umask는 이 정보의 reverse값이다. rwxr_xr_x 는 ____w__w_가 되어 022로 나타낼 수 있다.
Umask 022
는 Unix의 755와 같은 뜻이다. 쉽게 생각하면 ( 777 - umask ) 를 계산하면 될 것이다.

Umask는 file과 directory를 나누어 지정할 수 있는데.. file은 644, directory는 755라면
Umask 133 022
로 설정하면 된다.


사용자 설정
DefaultRoot와 UserPassword를 설정하면 기본적으로 사용할 수 있지만 ProFTPD는 /etc/passwd 와 /etc/shadow 에 정의된 사용자를 사용할 수 있다.
UserPassword는 설정하지 않고
DefaultRoot ~
로 설정하면 자신의 계정으로 자신의 디렉토리에 접근할 수 있다.
크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : FTP 서버, Linux, proftpd, proftpd.conf, ubuntu, umask, 사용자설정

Ubuntu Linux를 완전히 main OS로 사용하면서 Windows를 쓸때는 전혀 느끼지 못하던 문제를 많이 겪고 있다.
일단.. IE에서만 돌아가는 웹사이트 문제는 제외하고서..

1. 한글과 character-set 문제..
한글 사용은 매우 중요한 문제라 여러번에 걸쳐서 포스팅한 바 있다.
이것은 nabi의 최신 버전(0.99.1)설치로 많은 부분 해결되었다.
그러나 character-set 문제는 조금 해결이 어렵다.
왜냐하면 많은 사람들이 windows에서 쓰던 euc-kr을 여러곳에서 그냥 사용하고 있고
Ubuntu Linux는 기본적으로 utf-8을 사용하기 때문이다.
처음에는 알 수 없는 메세지를 일단 봐야하고 차후 조치(?)를 통해 제대로 본다.

2. 그래픽 카드 관련 문제.,
아무래도 개인용 pc에는 windows를 대다수가 쓰기 때문에 그래픽카드 드라이버가 제대로 지원되지 않는다.
flash player도 그리 원할하지 않은데.. 이해한다..
다행히 현재 대다수가 잘 지원되고 있다. (일부는 아직도..)

3. OpenOffice에서 font가 제대로 적용되지 않는 문제
이것은 참으로 안타까운 일인데.. 최근에 발견했다.
Ubuntu linux는 대부분 유니코드를 사용하기 때문에 한글 사용에도 별 문제가 없는데.. font에서 문제가 생길 줄은 몰랐다. 왜 그런지는 몰라도 OpenOffice에서 특정 font를 사용하려고 하면 어떠한 에러메세지도 없이 그냥 이전 font를 보여준다. 이것은 자세히 살펴보니 한글폰트와 영문폰트가 나누어져 있는데 한글 폰트에 내가 사용하려는 폰트가 등록이 안되어있기 때문이었다. (영문폰트에는 이상하게 다 등록되어있다.)
OpenOffice의 문제인지.. Font의 문제인지는 잘 모르지만 버그 리포트에 올라와 있고 OpenOffice 2.4 RC2 이후 버전에는 해결되었다고 나온다.

deb 로 배포하기에 설치할까 생각해보았는데..
쪼금 겁난다. ^^;; 문제가 생길까봐.. 해보고 별 문제없으면 적극 홍보하리라. :-)


크리에이티브 커먼즈 라이선스
Creative Commons License

Tag : bug, Font, Linux, OpenOffice, ubuntu, 한글

Ubuntu7.10를 설치하면서 해야할 일들을 살짝 정리해본다.

1. Ubuntu7.10을 라이브cd를 이용해 설치한다.
2. language 패키지를 설치한다.
시냅틱 패키지 관리자에서 "ko"로 검색을 한 뒤 language 패키지들을 설치한다.
language-pack-gnome-ko
language-pack-gnome-ko-base
language-pack-ko
language-pack-ko-base
language-support-ko
2-1. 한글 입력기 설치 (nabi)
Ubuntu는 SCIM을 기본 입력기로 사용한다.
그런데 scim은 java기반의 프로그램 상에서 한글을 입력할 때 마지막 글자가 사라지는 (정확히는 입력 중 escape되지 않은 상태에서 커서를 이동하면 쓰던 한글이 프로그램에 붙지 않고 사라져버린다.) 문제가 있다.
따라서 nabi를 설치하고 "im-switch