이른바 유틸리티라는 프로그램들이 있다. 이것들은 간단한 기능만을 하는 프로그램들을 말하는데, 전통적인 Unix에는 정말이지 잡다한 유틸리티들이 있다.

예를 들면, "y" 라는 프로그램은 단지 화면에 y를 한 줄에 하나씩만 출력할 따름이며, "true" 라는 프로그램은 항상 정상종료만하는 프로그램, "false"라는 프로그램은 항상 오류 종료만하는 프로그램이다.

이런 유틸리티는 처음 나올때부터 조금씩 진화에 진화를 거듭하게 되고, 때에 따라 개발자가 중도 포기하면, 다른 사람이 이어가거나 아니면 아예 명령어 구문만 같은 다른 프로그램을 만들기도 한다.

따라서, 다양한 버전의 같은 일을 하는 유틸리티가 존재하는데, 그 중 GNU에서 다시 만들어 배포하는 유틸리티들에 대한 얘기를 해보고자 한다.

GNU에서 배포하는 것 들은 기본적으로 긴 옵션을 가지고 있다.
또 이들이 배포하는 것은 --version 과 --help 옵션을 항상가지고 있다.

그리고, 상당히 쓸모 없을 것 같은 이런 긴 옵션들이 너무나, 정말 많다. Linux의 man page에서 이들 옵션에 압도당할 수 있는데, 아마 대부분 그런 긴 옵션에 대해서 거부감을 가지고 자세히 읽지 않는 습관이 들었을 것이다. 이 옵션들은 같은 뜻의 한 글자 옵션이 있기도 하고, 없기도 하다.

내가 보기에 이들 옵션들은 해커기질이 있는 사람들이나 사용할 것 같은데, 예를들어:

grep --mmap -w HOJIN *.txt

라는 명령을 예로 들어 보자. 설명서를 보니 가능하면 메모리 매핑을 해서 파일을 열란다. 이런 확장된 옵션들이 가지고 있는 것은 우리에게 많은 상상력을 불어 넣어준다.

왜? 메모리 맵을 사용하여 열까? 검색할 때, 더 빠르다는 뜻인가? 또, 왜 "가능하면"인가? 메모리 맵이 안되는 파일도 있다는 말인가?

또 다른 옵션을 보자.

$ ls --full-time

-rw-rw-r-- 1 pynoos pynoos 311 2004-06-11 12:34:00.000000000 +0900 AUTHORS
-rw-rw-r-- 1 pynoos pynoos 5 2006-01-05 11:20:56.000000000 +0900 BUILD_NUMBER
-rw-rw-r-- 1 pynoos pynoos 57 2004-06-11 12:34:00.000000000 +0900 COPYING


--full-time 옵션은 ls 명령으로 하여금 시간을 아주 고정폭으로 출력해준다. 그런데 소수점 이하의 초단위가 모두 0 이다. full-time format이 원래 초 이하까지 보여주는 것일까? 아니면 file system에 따라서는 마이크로초까지 저장하는데 내가 사용하는 것만 유독 초까지만 저장되어서 그런 것일까?

위 질문들에 대한 답은 하지 않겠지만, 이와 같이 한번도 사용하지 않은 옵션들을 통해서 설계의 철학을 엿볼 수 있는 질문들을 던져보는 것은 사실 정*말* 중요한 습관 중의 하나이다.

아는 것과 보는 것만 가지고 상상할 수 있는 우리들에게 보는 것에 노출이 된다는 것은 상상을 통한 영역 확장의 좋은 길 아닌가...!

아무거나 보는 습관을 갖는 것이 경험을 통해 아는 것보다 천 배 중요하다.
신고

+ Recent posts