`man의 출력을 리디렉션합니다.` to file은 OS X에서 `^H` 문자가 많은 파일을 생성합니다.

`man의 출력을 리디렉션합니다.` to file은 OS X에서 `^H` 문자가 많은 파일을 생성합니다.

다음 동작은 BSD 유틸리티를 사용하는 OS X(10.9.5)에서 발생하지만 GNU 유틸리티를 사용하는 Linux(Ubuntu 15.10)에서는 발생하지 않습니다.

운영 체제:

 $ man -v
 man, version 1.6c

리눅스:

 $ man --version
 man 2.7.4

bash/tcsh 자동 완성에 사용하기 위해 특정 프로그램에서 지원하는 옵션을 자동으로 구문 분석하는 쉘 스크립트를 작성하려고 합니다. 예를 들어, 이는 터미널에서 볼 때 이름 출력별 Perl의 이름 및 요약 부분입니다.

$ man perl | cat

NAME
       perl - The Perl 5 language interpreter

SYNOPSIS
       perl [ -sTtuUWX ]      [ -hv ] [ -V[:configvar] ]
            [ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
            [ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
            [ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
            [ -C [number/list] ]      [ -S ]      [ -x[dir] ]
            [ -i[extension] ]
            [ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...

$ man perl > /tmp/perl.out

처음 의심했을 때

$ </tmp/perl.out awk '/SYNOPSIS/ {print}'

아무 줄도 인쇄되지 않았습니다. 파일을 열어 vi보니 이 내용이 있었습니다. 도대체 왜 이렇게 불필요하게 반복되는 문자와 ^H문자가 많은 걸까요?

N^HNA^HAM^HME^HE
       perl - The Perl 5 language interpreter

S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
       p^Hpe^Her^Hrl^Hl [ -^H-s^HsT^HTt^Htu^HuU^HUW^HWX^HX ]      [ -^H-h^Hhv^Hv ] [ -^H-V^HV[:_^Hc_^Ho_^Hn_^Hf_^Hi_^Hg_^Hv_^Ha_^Hr] ]
            [ -^H-c^Hcw^Hw ] [ -^H-d^Hd[t^Ht][:_^Hd_^He_^Hb_^Hu_^Hg_^Hg_^He_^Hr] ] [ -^H-D^HD[_^Hn_^Hu_^Hm_^Hb_^He_^Hr_^H/_^Hl_^Hi_^Hs_^Ht] ]

답변1

의 출력은 man일반 텍스트가 아닙니다. 대신 사용해 보세요 man perl | col -b.

관련 정보