매뉴얼 페이지에 줄 번호를 추가하는 방법은 무엇입니까?

매뉴얼 페이지에 줄 번호를 추가하는 방법은 무엇입니까?

Linux에서 페이지에 man줄 번호를 추가하는 방법은 무엇입니까? info맨페이지를 탐색하기 위해 줄 번호를 사용하고 싶습니다. 매뉴얼 페이지를 파일에 작성하고 Vim으로 열 수도 있지만 더 좋은 방법이 있을까요?

답변1

에서 man man:

   -P pager, --pager=pager
          Specify  which  output  pager to use.  By default, man uses less
          -s.  This option overrides the $MANPAGER  environment  variable,
          which  in turn overrides the $PAGER environment variable.  It is
          not used in conjunction with -f or -k.

          The value may be a simple command name or a command  with  argu-
          ments, and may use shell quoting (backslashes, single quotes, or
          double quotes).  It may not use pipes to connect  multiple  com-
          mands;  if  you  need that, use a wrapper script, which may take
          the file to display either as an argument or on standard input.

less따라서 행 번호 플래그를 사용하여 호출기를 지정할 수 있습니다 -N.

man -P "less -N" 

문제는 man페이지 너비가 터미널의 열 수에 따라 설정되지만 줄 번호에 따라 less줄 시작 부분에 추가 문자(공백 + 줄 번호)가 추가되므로 출력 형식은 다음과 같습니다. 좀 지저분해.

$ man -P "less -N" man

결과:

      1 MAN(1)                        Manual pager utils                        M
      1 AN(1)
      2 
      3 
      4 
      5 NAME
      6        man - an interface to the on-line reference manuals
      7 
      8 SYNOPSIS
      9        man  [-C  file]  [-d]  [-D]  [--warnings[=warnings]]  [-R encoding
      9 ] [-L
     10        locale] [-m system[,...]] [-M path] [-S list]  [-e  extension]  [-
     10 i|-I]
     11        [--regex|--wildcard]   [--names-only]  [-a]  [-u]  [--no-subpages]
     11   [-P
     12        pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-jus
     12 tifi-
     13        cation]  [-p  string]  [-t]  [-T[device]]  [-H[browser]] [-X[dpi]]
     13  [-Z]
     14        [[section] page ...] ...

따라서 환경 변수를 변경하여 숫자에서 MANWIDTH7자(줄 접두사의 너비)를 빼서 페이지의 너비를 더 짧게 포맷하도록 할 수 있습니다.lessCOLUMNSman

$ MANWIDTH=$(( $COLUMNS -7 )) man -P "less -N" man

결과:

      1 MAN(1)                     Manual pager utils                     MAN(1)
      2 
      3 
      4 
      5 NAME
      6        man - an interface to the on-line reference manuals
      7 
      8 SYNOPSIS
      9        man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L
     10        locale] [-m system[,...]] [-M  path]  [-S  list]  [-e  extension]
     11        [-i|-I]  [--regex|--wildcard] [--names-only] [-a] [-u] [--no-sub-
     12        pages] [-P pager] [-r prompt] [-7]  [-E  encoding]  [--no-hyphen-
     13        ation]   [--no-justification]   [-p   string]  [-t]  [-T[device]]
     14        [-H[browser]] [-X[dpi]] [-Z] [[section] page ...] ...

답변2

맨페이지를 열고 클릭한 -N후 입력하세요. ( -, 다음 ShiftN, 다음 Enter)

예를 들어 man man::

  1 MAN(1)                                             Manual pager utils                                             MA      2 
  3 NAME
  4        man - an interface to the system reference manuals
  5 
  6 SYNOPSIS
  7        man [man options] [[section] page ...] ...
  8        man -k [apropos options] regexp ...
  9        man -K [man options] [section] term ...
 10        man -f [whatis options] page ...
 11        man -l [man options] file ...
 12        man -w|-W [man options] page ...

줄 번호 삭제-n Enter

행 중복을 방지하려면 MANWIDTH변수를 설정하세요. LESS변수는 -N줄 번호를 인쇄하도록 설정됩니다.

MANWIDTH=100 LESS=-N man man

답변3

man긴 줄을 출력하고 비슷한 호출기가 있다고 가정합니다 less.

특정 매뉴얼 페이지 출력의 줄 번호는 man실행되는 창의 너비에 따라 줄이 바뀌기 때문에 다를 수 있습니다.

다음과 같이 시도해 보세요:

COLUMNS=72 man --pager='cat' -s 3 printf | nl -ba > Man.printf

fold출력에서 이 명령을 사용하는 것은 mantty에 쓰지 않더라도 COLUMNS 변수를 사용하여 줄을 구분한 다음 fold모든 단어 간격을 단일 공백으로 재설정하기 때문에 보기 흉합니다.

-s 3섹션 번호와 페이지 이름을 매개변수에 넣기 위해 이를 스크립트로 래핑할 수 있습니다 .

답변4

다른 사람들은 이미 효과적인 솔루션을 제공했기 때문에 대안을 추가하고 싶었습니다.

다음 2개의 패키지를 설치합니다.

후자는 다음과 같은 응용 프로그램을 설치합니다.batman, 매뉴얼 페이지에 색상을 추가할 뿐만 아니라 줄 번호도 추가합니다.

다음은 출력의 예입니다.

여기에 이미지 설명을 입력하세요.

(제가 입력한 명령어는 매우 간단합니다 batman emerge.)

보시 batman다시피 디스플레이 너비가 자동으로 처리됩니다.

관련 정보