매뉴얼 페이지에서 특정 옵션 검색


14

나는 종종 man하나의 특정 옵션에 대해 배우기 위해 명령을 내린다. 대부분의 시간은 내가 잘 옵션으로 검색 할 수 있습니다 그것의 같은 것을하지 않는 한 ffmpeg또는 gcc어디 옵션의 실제 설명을 얻을 때까지 나는 약 40 경기를 통해 단계로이 ...

때때로 나는 운이 좋으면서 "options"라는 단어를 찾아 가서 가까이 다가 가서 다듬을 수 있지만, 문제의 옵션으로 확실하게 뛰어 넘을 수 있다면 좋을 것입니다. 옵션을 파싱하고 검색 할 수있는 데이터베이스를 구축 할 수있는 도구가 있다면 멋지지만 몇 페이지에 대한 groff 마크 업을 살펴본 후에는 최고의 추측 노력이라고 결정했습니다. groff markup에 메타 정보가 없기 때문에 ... emacs의 이상적인 세계 여성 모드 에서 특정 옵션 검색을 지원할 것입니다 ... :)

매뉴얼 페이지에서 특정 옵션으로 바로 이동하기위한 팁이 있습니까?

답변:


5

여기 내 스크립트가 있습니다. 그는 라고 불렀 습니다 .

$ he cp    
SYNOPSIS
       cp [OPTION]... [-T] SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY
       cp [OPTION]... -t DIRECTORY SOURCE...

$ he gcc -dD
       -dD Dump all macro definitions, at the end of preprocessing, in addition to normal output.

$ he rsync -v
        -v, --verbose               increase verbosity

$ he bash getopts
       getopts optstring name [args]
              getopts is used by shell procedures to parse positional parameters.  optstring contains the option characters to be recognized; if a character is  followed  by  a  colon,  the  option  is
              expected  to  have  an  argument, which should be separated from it by white space.  The colon and question mark characters may not be used as option characters.  Each time it is invoked,
              getopts places the next option in the shell variable name, initializing name if it does not exist, and the index of the next argument to be processed into the variable OPTIND.  OPTIND  is
              initialized  to  1 each time the shell or a shell script is invoked.  When an option requires an argument, getopts places that argument into the variable OPTARG.  The shell does not reset
              OPTIND automatically; it must be manually reset between multiple calls to getopts within the same shell invocation if a new set of parameters is to be used.

              When the end of options is encountered, getopts exits with a return value greater than zero.  OPTIND is set to the index of the first non-option argument, and name is set to ?.

              getopts normally parses the positional parameters, but if more arguments are given in args, getopts parses those instead.

              getopts can report errors in two ways.  If the first character of optstring is a colon, silent error reporting is used.  In normal operation diagnostic messages are printed  when  invalid
              options or missing option arguments are encountered.  If the variable OPTERR is set to 0, no error messages will be displayed, even if the first character of optstring is not a colon.

              If  an  invalid  option  is  seen, getopts places ? into name and, if not silent, prints an error message and unsets OPTARG.  If getopts is silent, the option character found is placed in
              OPTARG and no diagnostic message is printed.

              If a required argument is not found, and getopts is not silent, a question mark (?) is placed in name, OPTARG is unset, and a diagnostic message is printed.  If getopts is silent, then  a
              colon (:) is placed in name and OPTARG is set to the option character found.

              getopts returns true if an option, specified or unspecified, is found.  It returns false if the end of options is encountered or an error occurs.

그러나 이와 같은 스크립트에 액세스 할 수없는 경우 run less을 입력 한 다음 맨 페이지 /^ *-option에 (공백 참고)를 gcc입력 /^ *-dDEnter하여 -dD옵션에 대한 설명서를 찾으십시오 .

옵션은 대개 줄의 시작 부분에 나타나기 때문에 작동합니다.


1
이것을 위해 당신의 발가락에 키스하는 큰 수염 곰 남자를 상상해보십시오!
sepehr

ㅋ! 감사! 또한 he"짧은 도움말"과 같이 스크립트 이름을로 바꿨습니다 . 최신 버전은 github
Mikel

2

이것이 내가 사용하는 기능입니다. 나는 "남자 검색"을 "남자"라고 부릅니다.

mans ()
{
    local pages string;
    if [[ -n $2 ]]; then
        pages=(${@:2});
        string="$1";
    else
        pages=$1;
    fi;
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
}

용법:

$ mans ^OPTIONS grep find xargs

단! 내가 원했던 "이상적인"룩업 테이블 타입 솔루션은 아니지만 여전히 매우 유용합니다. 감사.
mgalgs

1
아래에서 언급했듯이, 당신이 찾고있는 대부분의 시간은 들여 쓰기 후 줄의 시작 부분에 있으므로 패턴은 일반적으로 다음과 같습니다 mans '^ *<something>' <page>. 자세한 내용은 내 답변을 참조하십시오.
Mikel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.