파일이 많은 경우엔, ls 명령어를 통해 디렉토리 내부를 출력한뒤 일일히 세기에는 조금 무리가 있다고 봅니다. 그럴때는 | 파이프를 통해,

ls | wc -l


해주시면 현재 디렉토리내에 파일과 서브 디렉토리가 몇개나 되는지 보실 수 있어요. 디렉토리 갯수만 찾고 싶으실 때는 아래처럼 조금만 바꿔주시면 됩니다.

ls -d */ | wc -l


주- 서브 디렉토리를 검색하지 않고 "/" 로 끝나는 것 (디렉토리) 만을 표시해서 갯수를 세라.

물론 제시된 방법들은 간단하긴 하지만 재미가 없습니다. 특히 파일갯수만 세는 것도 힘들구요. 그래서, 요즘 find, |, grep등의 조합으로 재미를 보고 있는 지라 조금 복잡해보일지라도 이것 저것 가져다 붙여보기로 했습니다. :D

우선,

find . | wc -l


명령어는 현재 디렉토리를 시작으로 모든 파일과 서브 디렉토리를 검색합니다.

여기서 살짝 추가해 줄 것이,

find . -type d | wc -l


하지만 이렇게 하면 서브 디렉토리까지 모두 검색이 되니,

find . -type d -maxdepth 1 | wc -l


로 바꿔줍니다. 이렇게 하면 현재 디렉토리내에 존재하는 서브 디렉토리만 보여주게 되죠.

여기에다가 조금만 더 바꿔주면,

find . -type d -maxdepth 1 -path './*' | wc -l


현재 디렉토리를 의미하는 . 까지 없애줄 수 있습니다. :) 또는 색다르게,

find . -type d -maxdepth 1 -name "*" | wc -l


도 동일한 결과를 보여줍니다.

파일만 검색하고 싶을 때는 d 대신에 f 를 사용하시면 되요. -type f 로.

유닉스 명령어. 이것 저것 배우다 보면 재밌게 응용할 수 있는 부분이 굉장히 많다고 생각됩니다. :)

주- [man find]
       -type c
              File is of type c:

              b      block (buffered) special

              c      character (unbuffered) special

              d      directory

              p      named pipe (FIFO)

              f      regular file

              l      symbolic link

              s      socket

              D      door (Solaris)

Posted by hyomini 트랙백 0 : 댓글 2

집에서는 우분투를 깔아뒀지만 워크래프트3를 하는 관계로 윈도우만 쓰게 되네요. /먼산 그래도 회사 와서 많이 배우게 되어서 그나마 다행입니다. :P

시스템내 디스크 사용량 알아보기:
df 라는 명령어가 있습니다.


# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.9G  2.2G  7.3G  23% /
...


위와 같이 현재 디스크 사용 정도를 보여주기에 전반적으로 얼마나 사용되었는지를 보기엔 꽤나 도움이 됩니다. 문제는 마운트된 파일 시스템의 사용도를 보여주는 것이라서 세세한 부분을 알아보기는 힘듭니다.

특정 디렉토리나 파일의 사용량을 알아보기 위해선 du 라는 명령어를 쓰면 됩니다.


# du -h /bin
5.5M    /bin



du 명령어의 강력함은 sub directories 의 사용량도 전부 보여준다는 것에 있습니다. 예를 들어서 음악 폴더가 있는데 얼마나 많은 용량을 차지하고 있는 지 궁금하시다면, dh -h 음악폴더이름 해주시면 되거든요. 대신에 모든 sub directories 들이 다 출력되니, dh -hs 를 사용하셔서 간략하게 Summary 만 보시는 것도 괜찮겠네요. 아니면 저처럼 일일히 바이트 단위 계산하기 귀찮으신 분은 du -h . 명령어를 통해 현재 디렉토리내에 파일들이 얼마나 많은 용량을 차지하고 있는지 쉽게 알아보실 수 있구요. :D
Posted by hyomini 트랙백 0 : 댓글 0
그저께부터 잠을 줄여가며 고생하다가 겨우겨우 어느 정도 안정적으로 설치된 것 같습니다.
우분투 설치한 직 후 지금 순간까지 해온 모든 것들을 차례대로 정리해 봤습니다.

주의. 아래 내용은 ATI 그래픽 카드 사용자가 Compiz + Xgl 조합을 사용하고자 할 때 제공된 방법들입니다. 본문의 링크는 XGL/Compiz on ATI/Gnome 로 가시면 보실 수 있고, 아래 접어둔 내용은 단순히 제가 나중에라도 다시 쉽사리 볼 수 있도록 정리해둔 내용이니 오해 없으시길 바랍니다.

설치가 끝나고, 첫 로그인 후 Compiz + Xgl 조합 설치를 위해 할 것들
수정, Compiz + Xgl 조합은 실패했습니다... 그래도 글 작성해둔 게 아까우니 우선은 남겨둡니다. 아래의 Beryl + Xgl 조합은 성공했어요. :)

<ins><strong>접어둔 글 읽어보기..</strong></ins>


추가 및 수정 - Beryl + Xgl (fglrx) on ATI
위의 Compiz 는 설치는 제대로 되었는 데 막상 실행이 제대로 되지 않아서 베릴 쪽으로 시도해봤습니다. 결과는! 좋군요. :D

3D Desktop (Beryl and Xgl) on Ubuntu Edgy Eft with ATI card.

<ins><strong>(성공한 방법) 접어둔 글 읽어보기..</strong></ins>


영문 Locale (en_US.UTF8류) 에서 한글 입력을 위해 할 것들

1. 우선 Nabi 설치하기

Synaptic Package Manager 에서 Nabi 를 설치해줍니다. 물론 sudo apt-get install nabi 로도 가능하겠네요.

2. ~/.gnomerc 파일 생성 하기

cd ~/ 하면 자동으로 현재 사용자의 Home 디렉토리로 이동하게 됩니다.


절대 sudo 로 하지 마시고, 그냥

vim ~/.gnomerc

아래 내용으로 작성

export XMODIFIERS="@im=nabi"
export XIM_PROGRAM=/usr/bin/nabi
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim
nabi &

3. 리붓
그냥 X-server 재시작로도 될련지 모르겠네요. X-server 재시작 방법은 Ctrl + Alt + Backspace



이 외에, 자바 JDK도 깔아야 겠고 펄, C 등 개발도구들 설치할 게 널렸네요 으흑 ㅜ_ㅜ
아 한글 폰트도 설치해야 겠네요... 그래도 Nabi 까지 제대로 작동되기 시작하면 그 다음은 수월한 편입니다.
Posted by hyomini 트랙백 0 : 댓글 2
뭐 어떻게 보면 굳이 문제랄 것까지는 없는 부분입니다만, LOG파일 분석할 때 가장 최근 내용이  때로는 무슨 내용이 있어야 분석하고 말고 할꺼 아니겠어요.

열심히 스크립트를 작성하고, 꼼꼼하게 로그파일까지 만들어지게 해두었는 데 막상 tail -f 'FILENAME' 신공으로 로그파일을 좀 보려니, 왠걸 아무것도 들어있지 않는 경우가 발생합니다. 한참을 뒤적거리다가 펄 자체의 버퍼링이 관련이 있다는 것을 발견했습니다.

Suffering from Buffering?

요는, 펄 자체에서 좀 더 효율적으로 메모리 관리를 하기 위해서 바로 바로 쏟아내는 게 아니라 버퍼링 시켜서 조금 모아뒀다가 한번에 쏟아낸다고 하네요. (쏟아낸다는 표현이 껄끄럽긴 하지만)

자세한 내용은 위 사이트를 보시면 되겠고, 다른 건 다 귀찮고 그냥 방법만 알면 된다 하시는 분은 사이트에서 Flushing on Command 항목을 보시면 되겠네요. 표현이 조금 우습지만, 파일 핸들러를 뜨겁게 만들어서 버퍼를 바로 토해내게(!!) 만드는 겁니다!

               my $ofh = select OUT;
               $| = 1;
               print OUT "\n";
               $| = 0;
               select $ofh;

를 통해, print OUT 에 쌓여있던 버퍼를 한번에 뿜어내는 것이죠. 그때 그때 로그 파일이 작성되기 때문에 저한테는 굉장히 유용하네요. :D
Posted by hyomini 트랙백 0 : 댓글 0
아아, 이틀밤을 우분투와 씨름하느라 5-6시간 씩 밖에 못자고...
오늘은 회사에 일찍 여느때처럼 일찍 왔더니 시애틀에 폭우가 쏟아져서 그쪽 네트워크 다운문제로 일 해야 되는 것도 못하고 다들 휴가 분위기에 돌입 해버렸습니다.
인턴(코압)인 몸이라 눈치보여서 막 놀지는 못하겠고, 테스팅에 쓰일 펄 스크립트 끄적 거리다가 나중에 도움이 될까 싶어서 이렇게 링크 걸어봅니다.

Using Perl DBI to interface to MySQL

A Simple Query

위 둘에서 포인트는 아무래도,
@row = $sth->fetchrow_array 랑

print "@row\n" 라지요...

fetchrow_array는 한번에 한줄 씩 불러오는 역할을 하고, 불러온 쿼리 결과를 row 배열에 저장한 뒤 바로 프린트해주면 한줄 씩 화면에 출력됩니다.


Retrieve data from a PostgreSQL database using the Perl DBI

위 링크에서 포인트는 바로,
while(my $ref = $sth->fetchrow_hashref()) 과,

print "$ref->{'name'} is a $ref->{'species'}\n"; 입니다.

fetchrow_hashref는 칼럼마다 레퍼런스를 걸 수 있게 해줍니다. (표현이 조금 부족했네요. 뭐라고 말을 해야 할지, 마땅한 단어가 생각이 안납니다.)
예를 들어, select name, species from animals 라는 SQL 문의 쿼리 결과를 좀 더 보기 쉽게 출력해주려면, fetchrow_hashref 이후에 위의 프린트 문, print "$ref->{'name'} is a $ref->{'species'}\n"; 을 쓰게 되는 겁니다. 화면상에는 Niko is a cat 이런 식으로 나오겠죠.


또 한가지 쓸만한 게 있다면, 펄 언어와 직접적인 관계가 있는 건 아니지만, SQL 문 작성할 때, 쿼리 결과를 제한할 수 있다죠. 테이블 안에 수많은 데이터가 기록되어 있다면, LIMIT 은 필수입니다. ORDER BY 와 LIMIT 의 조합은 항상 최신의 데이터만 뽑아내는 데 굉장히 유용합니다.

예) select * from TABLE_NAME ORDER BY gmt_time desc LIMIT 1;

위 SQL 문은 하나의 테이블에서 (gmt_time 이라는 칼럼이 있다는 가정하에) 항상 최근의 데이터를 뽑아줍니다. (음 적어도 제가 하는 일과 관련되어선 말이에요)
Posted by hyomini 트랙백 0 : 댓글 2