다음 이전 차례

2. 리눅스 박스 안에서 찾기

리눅스 박스 안에는 정말 많은 문서들이 있습니다. 무엇부터 보아야 할 지 몰라 차라리 모든 문서를 다 섭렵하겠다고 욕심내기도 하지만 처음부터 그럴 필요는 없습니다. 리눅스에는 정말 많은 분야가 있고, 그 모든 것을 막연히 좇아 다니는 태도는 여러분의 발전을 더디게 합니다. 차근차근 하나씩 이루어 가세요. 리눅스를 공부하며 더 관심 있는 주제가 생기면 필요한 문서들이 점점 눈에 띌 것이고, 실제로 모든 것을 완벽하게 알 필요는 없지요. 여러분이 우러러 보는 구루들도 대부분 전문 분야를 가진 이들이지요.

2.1 MAN은 그 남자가 아니다.

man [optionS] [Section] command(S)i

맨 페이지는 명령, 옵션에 대한 설명, 관련된 주제를 담고 있는 온라인 도움말(MANual page)입니다. /usr/bin/man 명령은 /usr/man/ 디렉토리 아래 준비된 맨 페이지를 검색하여 화면에 표시하는 유틸리티입니다. 사용법은 매우 간단하지만 때로 황홀한 도움을 얻기도 합니다. 새로운 명령이나 기능, 옵션을 만났다면 언제나 맨 페이지를 요청해 봅니다. 항상 리눅서를 도울 준비가 되어 있는 훌륭한 비서를 만나게 될 것입니다.

하지만 맨 페이지가 만능은 아닙니다. 맨 페이지는 명령이나 설정파일 등에 대한 일반적인 설명이므로 더 실제적인 예가 필요하다면 <@@ref>sect-howtoHOWTO 문서(2.3. 설명되어 있습니다)나 info 명령, 또는 BBS, 뉴스그룹 등의 기사를 참고합니다.

일반적으로 man 명령은 'man ls' 처럼 한 가지 주제에 대한 맨 페이지를 요청하지만 필요하다면 한 번에 여러 가지 주제의 문서를 요구할 수도 있습니다. 아래 예는 리눅서가 사용하는 vi 등 몇 가지 에디터에 대한 맨 페이지를 이어서 보여 줄 것입니다:

$ man vi emacs ed pico

man 명령은 맨 페이지를 검색하여, 압축된 문서를 연 다음, less 유틸리티를 이용해 화면에 출력합니다. less 유틸리티는 more 유틸리티처럼 긴 글을 화면 크기에 맞게 잘라서 표시합니다. 둘의 기능은 비슷하지만 less가 더 나은 기능들을 가지고 있습니다. 흔히 텍스트 뷰어로도 사용하는 vi보다는 훨씬 빠릅니다. 또 more, vi 기반의 다양한 명령을 내장하고 있어 문서 안에서 검색이나 이동 등이 쉽습니다. 앞으로 소개될 문서들은 대부분 less 유틸리티로 살펴보게 될 것입니다.

less

때로 프로그램 개발자들이 대체 무슨 생각으로 유틸리티마다 그리 많은 옵션과 기능들을 넣어 두었는지 궁금할 때도 있습니다. less도 다르지 않아 매우 다양한 기능이 있지만 몇 가지 기본적인 기능들을 살펴봅니다. 물론 여기 소개된 것으로 충분하지 않을 때도 있을 것입니다.

도움말

<h>키는 도움말을 출력합니다. 도움말 역시 아래에 설명한 명령 키들로 제어합니다.

스크롤

방향키, 엔터 키는 한 줄씩 스크롤하고 스페이스바, <f>, <PgDn>, <b>, <PgUp>키는 페이지 단위로 스크롤합니다. <d>(down) <u>(up) 명령은 '10d' 처럼 숫자와 조합하여 스크롤되는 줄 수를 지정할 수 있습니다. <g>는 맨 처음, <G>는 맨 끝으로 옮겨갑니다.

검색

특정 단어를 검색하려면 </> 또는 <?> 키를 누르고 검색할 주제를 입력합니다. 검색된 다음 포인트로 이동하려면 <n> 키를, 이전 검색 포인트는 <N> 키를 눌러 이동합니다. 유닉스 계열의 운영체제는 m$의 것들과 다르게 대소문자를 구분하므로 항상 주의합니다. </> 명령은 앞부터, <?> 명령은 뒤쪽부터 검색을 시작합니다.

책갈피

북마크를 설정하면 매우 빠르게 문서를 스크롤할 수 있습니다. <m>키를 누르고 북마크로 사용할 영문 소문자 한 글자를 입력하면 현재 위치가 북마크로 설정됩니다. 북마크로 이동할 때엔 <'> 키를 누르고 북마크 문자를 입력합니다.

마침

끝낼 때에는 <q> 명령, 끝내고 연결된 편집기로 문서를 편집하려면 <v> 키를 누릅니다. 그 밖의 명령들은 맨 페이지 또는 도움말 화면을 살펴봅니다: $ man less

whatis databaSe

 whatis command
 apropos command

/usr/man/whatis 파일에는 각 메뉴얼 페이지와 섹션에 대한 짤막한 설명이 있습니다.

/usr/man/ 디렉토리 아래 이 파일이 없다면 /usr/sbin/makewhatis 명령으로 데이터베이스를 생성합니다.(makewhatis 명령은 시스템 관리자(root) 권한으로만 실행할 수 있습니다) 예문 맨 앞에 쓰인 '#' 문자는 루트로 로그인 했음을 뜻합니다:

# /usr/sbin/makewhatis

whatis 데이터베이스를 검색하려면 whatis나 apropos 명령을 사용합니다. (whatis나 apropos는 /usr/bin 디렉토리 아래 쉘 스크립트 명령입니다) whatis 명령은 매개 변수로 주어진 주제를 표제어에서만 검색하지만 apropos 명령은 whatis 데이터 베이스 표제어와 설명 전체에서 검색합니다. 아래 예문처럼 두 명령을 비교해 보면 알 수 있습니다.

$ whatis man $ apropos man

apropos는 검색어가 포함된 모든 줄을 출력하므로 검색어를 잘 정하지 않으면 매우 장황한 결과를 보게 될 것입니다. 너무 많은 맨 페이지가 검색되었다면 apropos 검색 결과를 grep 유틸리티로 필터링합니다.

아래 예는 man 이란 낱말이 검색된 항목 가운데 완전한 단어로 man을 포함한 줄만 보여줄 것입니다. (grep은 2.3.4.에 설명되어 있습니다):

$ apropos man | grep -w man

man 명령의 옵션을 이용하여 검색할 수도 있습니다. 아래 man -f, man -k 명령은 whatis, apropos 명령과 같은 결과를 얻을 것입니다:

$ man -f filter $ man -k filter

watis, apropos 스크립트는 grep 유틸리티의 -i 옵션을 사용하므로 키워드로 주어진 명령의 대소문자를 구분하지 않고 검색을 수행합니다.

MAN page SectionS

매뉴얼 페이지는 원래 여덟 권으로 이루어진 유닉스 문서의 온라인 버전입니다. 그 형식을 이어 리눅스 맨 페이지도 /usr/man 디렉토리 아래 섹션에 따라 분류되어 있습니다. (리눅스 맨 페이지는 아홉번째 섹션을 추가했습니다.)

-----------------------------------------------------------------
 섹션   특 성
-----------------------------------------------------------------
  1     사용자가 일반적으로 실행할 수 있는 명령 (commandS)

  2     커늘에 의해 실행되는 시스템 콜 (SyStem caLLS)

  3     C 라이브러리 함수 (Library caLLS)

  4     /dev 아래 장치 파일들(SpeciaL fiLeS)

  5     /etc/passwd, /etc/fstab 등 파일 형식, 규칙
        (fiLe formatS and conventionS)

  6     리눅스 게임 (gameS)

  7     표준 파일시스템 설계, man 페이지 등 설명
        (macro package and conventionS)

  8     lilo, mount처럼 root가 수행하는 시스템 관리 명령
        (SyStem management commandS)

  9     비표준 커늘 루틴 (kerneL routineS)
-----------------------------------------------------------------

맨 페이지는 한 가지 주제가 여러 섹션에 설명될 수 있는데 man 명령을 특별한 옵션 없이 사용하면 검색된 첫 번째 섹션만 보여줍니다. 예를 들어 여러분에게 필요한 것은 /etc/passwd 파일에 대한 맨 페이지이지만 'man passwd' 명령은 섹션 1에 있는 passwd 명령만 보여줍니다. /etc/passwd 파일대 대한 맨 페이지는 'man 5 passwd' 명령을 사용합니다.

man 명령에 섹션 번호를 명시하면 지정한 섹션 하나만 출력하지만 -a 옵션을 이용하면 연관된 모든 섹션을 볼 수 있습니다. -a 옵션은 매우 좋은 버릇입니다.

$ man 4 man $ man -a man

/etc/man.config

맨 명령의 환경을 설정하는 파일입니다. 맨 페이지 경로와 포매터, 페이저, 해독기 등 유틸리티가 설정되어 있습니다. 아래는 설정파일에서 매뉴얼 페이지 경로와 페이저설정 부분을 발췌한 것입니다.

-----------------------------------/etc/man.config
 # less /etc/man.config
 # man.conf
 MANPATH /usr/man
 MANPATH /usr/local/man
 MANPATH /usr/X11R6/man
 MANPATH /usr/lib/perl5/man
 ... 생략
 
 PAGER                    /usr/bin/less -is
 CAT                     /bin/cat
 ... 생략
-------------------------------------------------

기본 페이저 less 유틸리티의 실행 옵션으로 쓰인 -i 는 검색할 때 대소문자를 구분하지 않도록 설정하고, -s 는 빈 줄이 여러 줄 계속되면 한 줄로 줄여서 보여주도록 설정합니다.

local 맨페이지

/usr/man/manl 디렉토리 아래에는 지역적으로 제공되는 맨 페이지가 있습니다. 일반적으로 비표준 패키지라 부르는 프로그램들을 설치하면 이 곳에 자신의 매뉴얼 페이지를 풀어놓습니다. 또는 웹사이트 등에서 구한 맨 페이지를 설치할 수도 있습니다.

로컬 맨페이지에 넣을 매뉴얼은 일반 텍스트 파일도 가능하므로 자신만의 맨 페이지를 만들어 넣을 수 있습니다. 파일 이름을 'lihaa.l' 처럼 꼬리에 'l' 자를 붙여 /usr/man/manl 디렉토리에 저장하면 'man lihaa' 등 명령으로 읽을 수 있습니다. 조금 더 멋지게 하고 싶다면 nroff 포맷으로 만듭니다.

아래 명령으로 맨 페이지 포맷에 대한 도움말을 볼 수 있습니다:

$ man 7 man

man 페이지 프린트하기

맨 페이지에는 백스페이스나 밑줄 등 특수문자들이 포함되어 있어 진한 글씨로 표시하는 등 화면을 보기 좋게 꾸미는 역할을 합니다. 그러나 이런 문자열은 프린터로 출력하거나 텍스트 파일로 저장할 경우 이상한 문자열로 변합니다. man 명령에 대한 맨 페이지 끝에는 이들 특수 문자를 벗겨 내고 일반 텍스트 파일로 저장하는 방법이 들어 있습니다.

예를 들어 grep 명령의 맨 페이지를 보통 텍스트 파일로 저장한다면 다음 명령을 사용합니다.

$ man grep | col -b > grep.txt

xman

xman은 X window에서 실행되는 맨 페이지 브라우저입니다. 팝업 메뉴나 터미널 창에서 'xman&' 명령을 실행하면 버튼 세 개가 있는 작은 윈도우가 나타난다. Manual Page 버튼을 누르면 브라우저 창이 새로 생긴다.

Sections 메뉴에서 필요한 섹션을 고르면 목록 나타난다. 목록에서 명령을 클릭하면 맨 페이지가 표시됩니다. 목록과 맨 페이지는 <ctrl>+<m>, <ctrl>+<d>로 전환하거나 Options 메뉴에서 Show Both Screens를 선택해 함께 봅니다.(그림 1) 분리선 오른쪽 끝에 있는 조절 버튼으로 창 크기 비를 조절할 수도 있습니다.

Options/Search 메뉴나 단축키 <ctrl>+<s>를 눌러 주제를 검색할 수 있습니다.(그림 2) Apropos를 선택하면 맨 페이지 창에 검색된 페이지 목록이 표시됩니다.(그림 1) <ctrl>+<n>명령으로 새 브라우저 창을 만들어 관련된 여러 페이지를 함께 살펴 볼 수도 있습니다.

2.2 gnome-help-browser

gnome-help-browser는 그놈(gnome) 문서, 맨 페이지, info 페이지 등 도움이 되는 문서와 인터넷을 통해 다른 컴퓨터의 문서도 브라우즈하는 프로그램입니다. man 명령보다 강력한 기능을 많이 가지고 있지만 X 윈도우에서만 실행되므로 콘솔에서는 이용할 수 없습니다.

URL 입력박스

URL 입력박스에 URL을 직접 입력할 수 있습니다. 도움말 브라우저는 다음과 같은 표준 방식과 매직 URL 형식을 지원합니다:

http: HTTP 프로토콜을 이용하여 문서에 접근합니다.

file: 로컬 파일시스템의 파일에 접근합니다.

whatis: 주어진 문자열로 문서를 검색합니다.

toc: 가능한 문서들의 목차를 읽어옵니다.

man: 매뉴얼 페이지 읽어옵니다.

info: 그누인포 페이지를 읽어옵니다.

ghelp: 응용프로그램의 그놈 도움말을 읽어옵니다.

2.3 HOWTO

/usr/doc/HOWTO, 그리고 /usr/doc/HOWTO/translation/ko 디렉토리 아래에 특별한 문제에 대해 도움을 얻을 수 있는 일반 텍스트 형식의 HOWTO 문서가 있습니다. 대체로 긴 문서들이므로 less유틸리티나 '한밤중 명령기'(mc)의 뷰어를 사용하여 살펴보는 것이 좋습니다. 하우투 문서에 제시된 옵션은 man 명령으로 자세히 확인하며 읽습니다.

아래 그림은 '한밤중 명령기' 왼쪽 창을 빠르게 보기로 설정한 것입니다. [F3] 키를 눌러 반전된 파일을 뷰어로 볼 수 있습니다. mc는 일반 텍스트 파일뿐만 아니라 tar, gz, rpm 파일도 다른 선행 작업 없이 볼 수 있습니다.

아래 명령으로 PPP를 이용해 다이얼업 네트워킹을 다루는 방법을 상세하게 다룬 하우투 문서를 볼 수 있을 것입니다:

$ cd /usr/doc/HOWTO/translation/ko $ less PPP-HOWTO

하우투 최신문서는 http://sunsite.unc.edu/LDP 에 공개됩니다. 한글로 번역된 LDP 문서는 http://kldp.org에서 구할 수 있습니다.

mini-HOWTO

HOWTO 디렉토리 아래 mini-HOWTO 문서들은 좀더 짧고 세부적인 주제를 다루는 자유로운 형식의 HOWTO입니다.

2.4 find

하우투 문서는 파일 이름이나 /usr/doc/HOWTO/HOWTO-INDEX에서 대강의 내용을 짐작할 수 있습니다. 하우투 문서 안에서도 관련된 다른 문서들을 소개하기도 합니다. 그런 고리를 통해 리눅서는 읽어야 할 목록에 연결됩니다.

제목이나 문서 안내로 짐작할 수 없는 조그만 정보라도 더 얻고 싶다면 find, grep 유틸리티로 특정 단어를 포함한 모든 파일을 검색할 수 있습니다. find와 grep 명령은 가장 많이 사용하는 명령입니다. 잘 알아두면 여러분의 리눅스 인생이 매우 쉬워질 것입니다. (이 글을 쓰는 동안에도 나는 find와 grep의 도움을 참 많이 얻고 있습니다.)

find 명령의 형식

/usr/bin/find 명령은 다음과 같이 사용합니다.

$ find [path...] [expression]

path(경로)는 find 명령으로 찾아볼 디렉토리의 시작위치입니다. 경로 깊이를 따로 지정하지 않았다면 기본적으로 시작위치와 그 하위 디렉토리 모두를 검색합니다. 이 곳에 루트 디렉토리(/)를 지정한다면 find 명령은 파일 시스템 전체를 검색합니다.

expression(표현식)은 옵션과 테스트, 행동(action)으로 구성됩니다.

옵션(option)은 테스트와 상관없이 항상 적용됩니다.

-maxdepth

0이 아닌 정수값으로 경로 깊이를 지정합니다. '-maxdepth 1'은 시작위치로 지정한 디렉토리만 검색하고 하위 디렉토리는 찾지 않습니다. -mindepth 옵션은 반대로 동작합니다. 지정한 숫자만큼의 깊이부터 그 하위 디렉토리를 검색합니다.

-xdev

검색을 시작한 파일시스템에서만 검색을 수행하도록 설정합니다. 하위 디렉토리에 링크된 파일시스템은 검색하지 않습니다.

아래는 find 명령에서 사용되는 테스트입니다. 테스트에 사용되는 인수에는 보다 큰 수를 의미하는 +, 보다 작은 수를 의미하는 - 연산자와 함께 사용할 수 있습니다. 인수에 아무 연산자도 붙지 않는다면 정확히 그 값을 의미합니다.

-----------------------------------------------------------------
 옵션           기능
-----------------------------------------------------------------
-atime N        n일 전에 액세스(access)된 파일을 찾습니다.

-mtime N        n일 전에 수정(modify)된 파일을 찾습니다.

-newer USR      file보다 늦게 수정된 파일을 찾습니다.

-size n         n*512 바이트 길이를 가지는 파일을 찾습니다.

-name WORD      파일 이름으로 검색합니다.  이름에는 메타 문자(*, ?, [])를 
                사용할 수 있습니다.

-perm MODE      퍼미션으로 검색합니다. (-perm +2000)

-type LETTER    파일형식으로 검색합니다.  f는 보통 파일, d는 디렉토리 
                파일을 의미합니다.

-user USR       사용자 이름이 usr인 파일을 찾습니다.

-nouser 파일 소유자 이름이 등록되어 있지 않은 파일을 찾습니다.

-nogrp          파일 소유 그룹 이름이 등록되어 있지 않은 파일을 찾습니다.
-----------------------------------------------------------------

행동(action) 옵션은 조건(test)과 일치하는 파일에 대해 수행할 작업을 설정합니다.

-----------------------------------------------------------------
 옵션           기능
-----------------------------------------------------------------
-exec CMD       명령(CMD)을 실행합니다.  명령행의 끝은 반드시 \; 로 
                닫아 주어야 합니다.  현재 찾은 파일이름의 배열을 {}로 
                입력으로 사용할 수 있습니다.  아래 명령은 확장자가 bak인 
                모든 파일을 찾아 삭제합니다.

                find ./ -name '*.bak' -exec rm -f {} \;

-ok CMD 명령을 실행하기 전에 사용자 입력을 기다립니다.

-print          표준출력(stdout)으로 출력합니다.  기본설정입니다.

-ptint0         -print와 같이 동작하지만 출력의 끝에 개행문자를 붙이지 
                않습니다.

-fprint FILE    -print와 같이 동작하면서 출력을 지정한 파일로 보냅니다.

-printf FORM    c 스타일의 포맷을 사용하여 출력합니다. 
                man 3 printf

-ls             ls -dils 형식으로 파일 정보를 자세히 출력합니다.

-fls            -ls 와 같이 동작하면서 출력을 지정한 파일로 보냅니다.
-----------------------------------------------------------------

find 명령의 활용

아래는 'patch -' 라는 문자열을 담고 있는 문서를 검색하여 파일 이름과 검색된 줄을 화면으로 출력하는 예입니다. find 명령을 둘러 싼 문자(`는 따옴표가 아닙니다)는 둘러싸인 명령의 수행 결과를 다른 명령의 인수로 돌려줍니다. 예에서는 HOWTO와 하위 디렉토리의 모든 파일을 grep 명령의 인수로 넘겨줄 것입니다:

$ grep 'patch -' `find /usr/doc/HOWTO/ -type f`

bash2가 사용중인 셸이라면 위 명령은 다음과 같이 달라집니다:

$ grep 'patch -' $(find /usr/doc/HOWTO/ -type f)

검색된 결과를 파일로 저장하고 less 유틸리티를 이용하여 살펴보는 것도 좋은 방법입니다. 아래에 예가 있습니다:

$ grep 'patch -' `find /usr/doc/HOWTO/ -type f` | tee patch.list $ less patch.list

파일이름으로 검색하려면 아래 예처럼 -name 을 사용합니다. 아래 명령은 파일이름 끝에 net이라는 문자열이 포함된 파일을 모두 프린터로 출력합니다:

$ find /usr/doc/HOWTO/ -name '*net' -exec lpr {} \;

2.5 grep

/bin/grep은 입력되는 정보에서 패턴을 포함한 줄을 걸러내는 유틸리티입니다. 시스템 관리를 위해 매우 다양하게 쓰이므로 find와 함께 잘 익혀 두어야 합니다.

grep [OPTION...] PATTERN [FILE]...

아래 표는 grep 명령에서 자주 쓰이는 옵션입니다.

-----------------------------------------------------------------
짧은이름        긴이름                  기능
-----------------------------------------------------------------
-h              --no-filename           파일 이름을 감춥니다.
-l              --files-with-matches    파일 목록만 나열합니다.
-n              --line-number           줄번호를 표시합니다.
-i              --ignore-case           대소문자 구분 없이 필터링을 수행합니다.
-w              --word-regexp           완전한 단어만 찾습니다.
-v              --revert-match          패턴을 포함하지 않은 문자열만 걸러냅니다.
-----------------------------------------------------------------

아래는 grep 명령의 간단한 형식입니다. 현재 디렉토리의 모든 파일에서 문자열 'bash'를 포함한 문서를 필터링합니다:

$ grep bash *

grep 유틸리티는 일반적으로 명령의 수행결과를 파이프(|)를 통해 입력받아 사용합니다. 예를 들어 ls 명령의 결과로 net 또는 Net 을 포함한 파일만 출력하고 싶다면 아래처럼 사용합니다.

$ ls /usr/doc/HOWTO | grep [Nn]et

2.6 info

info command

/usr/info 디렉토리 아래에는 하이퍼텍스트 형식으로 된 구체적인 설명이 있습니다. info 명령 또는 emacs를 사용하여 검색하거나 인쇄합니다.

$ info bash

<n>은 다음 노드, <p> 는 이전 노드, <u>는 상위 노드로 이동하는 명령입니다. 노드 이름을 직접 입력하려면 <m> 을 눌러 나타나는 입력창에 노드 이름 일부를 쓰고 <tab> 키를 누르면 됩니다. 스페이스바와 딜리트 키는 각각 한 화면씩 위, 아래로 스크롤합니다.

2.7 LDP & KLDP : linux document projecT

리눅스 문서 프로젝트 팀, 그리고 개발자들에게 리눅스 풀그림의 개발이나 문서화에 특별한 책임이 있는 것은 아니다. 대부분 순수한 열정으로 풀그림 개발과 문서화에 참여합니다. LDP는 그런 다양한 노력들을 모아 효율적으로 문서화하기 위해 시작되었습니다.

LDP( http://sunsite.unc.edu)의 문서들은 일반적으로 개론서의 성격을 가지며 SGML, TeX, ps, HTML, plain TEXT 형태로 배포됩니다. 한글문서 프로젝트팀 홈페이지( http://kldp.org)에서 한글로 번역된 LDP문서들인 KLDP를 볼 수 있습니다. KLDP 홈페이지는 권순선님이 관리하며 LDP 문서들의 번역뿐만 아니라 리눅스 한글화와 관련된 문서들도 제작하여 배포하고 있습니다. 한글 배포판을 설치했다면 /usr/doc/HOWTO/taranslations/ko/docs 아래 KLDP 문서들이 있습니다.

IGSG  초보자를 위한 문서 Installation and Getting Started Guide
KHG    커늘 해킹을 위한 문서 The Linux Kernel Hackers' Guide
LNAG   리눅스 네트워크 관리자를 위한 문서 
         The Linux Network Administrators' Guide
LPG     리눅스 프로그래머 가이드 The Linux Programmer's Guide
LSAG   리눅스 시스템 관리자를 위한 문서 
        The Linux System Administrators' Guide
LUG    리눅스 사용자 가이드 The Linux Users' Guide
TLK    커늘 구조 설명서 The Linux Kernel
LKMPG  리눅스 커늘모듈 프로그래밍 가이드 
         Linux Kernel Module Programming Guide

2.8 whereis

whereis [option] filename(S)

실행파일의 위치와 함께 소스, 설정파일, 매뉴얼 페이지를 검색하여 보여줍니다. locate 명령보다 검색 속도가 느리고 검색범위가 제한되어 있지만 출력결과가 단순한 것이 장점이 될 때도 있습니다.

아래 예문은 ifconfig 명령의 위치와 다양한 리소스를 여러분에게 보고합니다:

# whereis fstab

2.9 locate

locate [OPTION]... PATTERN

locate 유틸리티는 파일과 디렉토리 목록을 데이터베이스(/var/lib/locatedb)로 만들어 검색을 수행하므로 수행속도가 매우 빠릅니다. 실행 파일과 메뉴얼 페이지, 리소스, 그리고 그 외 관련 문서들을 검색하여 보여줍니다.

아래 예는 문자열 'anterm'을 포함한 파일, 디렉토리를 검색하여 보여줍니다. 한텀과 관련된 파일음 Hanterm, 또는 hanterm 등 다른 이름을 가지고 있으므로 모두를 찾기 위해 앞 한 글자를 빼고 검색했습니다:

$ locate anterm

locatedb는 /usr/bin/updatedb 명령으로 업데이트합니다. updatedb 명령은 특별한 설정이 없다면 / 아래 마운트된 모든 디렉토리에서 자료를 수집하므로 데이터베이스를 갱신하기 위해 매우 오래 작업을 할 것입니다. 시스템 관리자에겐 매우 번거로운 일이므로 바쁜 시간을 피해 매일 새벽에 cron 데몬이 업데이트를 수행하도록 설정되어 있습니다. (/etc/cron.daily/updatedb.cron)

당장 업데이트를 수행하고 싶다면 대개 백그라운드로 작업할 것입니다. 명령 끝에 '&' 문자는 프로그림이나 명령을 백그라운드로 실행하도록 지시합니다:

# /usr/bin/updatedb &

locate 명령은 grep 유틸리티와 함께 사용하여 효율을 높일 수 있습니다.

locate 명령에서 가장 주의해야 할 것은 패턴의 선정입니다. locate 명령은 패턴을 포함한 모든 문자열을 검색하므로 키워드 선정에 따라 검색효율이 달라집니다. 예를 들어 키워드로 'sh'를 사용했다면 share, shadow, brush 등 관련 없는 정보들이 화면 가득 흐를 것입니다. grep 유틸리티로 관련이 적은 문자열을 필터링하기도 어려울 만큼 많을 수도 있습니다.

2.10 그 밖의 문서들

/usr/doc

/usr/doc 디렉토리 아래에는 풀그림을 제작한 프로그래머가 유의점이나 설치방법 등을 설명한 디렉토리가 있습니다.

이렇게 접근했습니다. GQview 팝업메뉴 Edit에서 Electric Eyes가 연결되어 있기에 GQview Help 메뉴를 열어 풀그림 이름이 ee라는 것을 알았습니다. 당연히 man -a ee 명령을 썼지만 그런 매뉴얼은 없다고 합니다. man -k ee, man -k eye, locate eye, locate ee 모두 엉뚱한 것들을 검색하여 보여줍니다. 어디서 찾을 수 있을까?

결국, /usr/doc/ee-3.0 디레토리 아래에서 작은 문서를 몇 개 발견하였습니다.

커늘문서

커늘과 관련된 문서들은 /usr/src/linux/Documentation, /usr/src/linux/driver 아래에 있습니다.

아래 명령으로 커늘 환경설정을 위한 스크립트(make menuconfig 따위)에서 제공하는 도움말 전체를 볼 수 있을 것입니다:

$ cd /usr/src/linux/Documentation $ less Configure.help

--------------------------------------------start of tip
유틸리티는 각각 고유의 기능을 가지는 작은 도구들로 리눅서의 창의성에 따라 매우 유연하게 활용할 수 있는 프로그램입니다.  유틸리티를 잘 활용하는 것은 리눅서가 반드시 갖추어야 할 덕목입니다.

아래아 한글처럼 어떤 특별한 작업을 위해 만들어진 풀그림은 일반적으로 어플리케이션이라 부르며 대개 다른 목적으로 사용할 수 없습니다.(유틸리티와 어플리케이션이 언제나 명확하게 구분되는 것은 아닙니다.)
-----------------------------------------------------


다음 이전 차례