2009. 4. 23. 12:49

23. man 페이지 내용을 파일로 보자.

솔직히 수많은 man 페이지 내용을 일일이 읽어보지는 않으나
필요할때가 가끔 있어서 읽어야 하는데 막상 터미널 창에서는 읽기가 왠지 짜증이난다.

그럼 파일로 저장해보면 어떨가? 리다이렉트를 이용한다면 쉽지만
또 막상 해보면 많은 이상한 문자들이 나오게 되는 경우를 보게 된다.

man top > top.txt

그러면 이럴 땐 어떻게 해야 할까?

여러가지 meta 문자나 그런 것을 읽기 편하게 하도록 하기 위해선 다음과 같이 해야 한다.

man top | col -b > top.txt


col 이 무엇일까?
NAME
     col - 입력으로부터 줄 바꿈문자(line feed)를 바꾸는 필터

SYNOPSIS
     col [-bfx] [-l num]

DESCRIPTION
     Col 필터는 "\n\r" 문자를 "\n" 문자로 바꾸어 주는 필터이다.     또한 공백문자
     를 탭문자로 바꾸고, 백스페이스 문자를 없애는 기능을한다. 이 필터는
     nroff(1) 와 tbl(1) 출력물의 처리에 아주 유용하게 쓰인다.  (이 두 풀그림에
     의해서 만들어지는 대표적인 출력이 man의 cat 파일이다.  즉, cat 파일을 단
     순 텍스트 파일로 바꾸는데 아주 유용하게 쓰인다.)

     Col 필터는 표준 입력으로 받아서 표준 출력으로 보낸다. (즉, 파일로 저장하
     려면, 파이프와 방향전환이 필요하다.)

     여기서 사용되는 옵션은 다음과 같다:

     -b        어떠한 백스페이스 문자도 출력하지 않는다.  이것은 팩스페이스 문자
        와 연결되는 마지막 문자만 출력한다.

     -f        밑줄 속성을 가진 문자열을(Forward half line feed) 변환하지않는다.
        일반적으로 밑줄 속성을 가진 문자열들은 다음줄에서밑줄(-)이 나타난
        다.(그런데, 실질적으로 colcrt(1) 필터를사용하지 않고는 제대로 이
        기능이 나타나지 않더군요. - 옮긴이 말)

     -h        여러 공백문자를 탭문자로 바꾼다.

     -x        여러 공백문자들을 그대로 둔다.

     -lnum  메모리에 한번에 둘수 있는 최대 줄수를 num 줄로 한다.  초기값은 128
        줄이다.

     다음은 col 명령에서 변환대상이 되는 각종 문자들이다:

     ESC-7          reverse line feed (escape then 7)
     ESC-8          half reverse line feed (escape then 8)
     ESC-9          half forward line feed (escape then 9)
     backspace          moves back one column (8); ignored in the first column
     carriage return  (13)
     newline          forward line feed (10); also does carriage return
     shift in          shift to normal character set (15)
     shift out          shift to alternate character set (14)
     space          moves forward one column (32)
     tab          moves forward to next tab stop (9)
     vertical tab     reverse line feed (11)

     윗 문자들과 영문, 숫자, 글쇠판에 있는 각종 기호를 제외한나머지 문자들은
     모두 무시되어버린다.  (즉 한글은 완전 무시되어버린다. - 옮긴이 말)

관련 항목
     expand(1), nroff(1), tbl(1)

HISTORY
     col 명령은 Version 6 AT&T UNIX에서 처음 사용되었다.