일반 help/man 명령: 도움말 내장 부분 일치

일반 help/man 명령: 도움말 내장 부분 일치

몇 가지 특정 명령에 대해 설명서를 반복하는 멋진 작은 스크립트를 찾았습니다. 최후의 수단으로 Google에서 검색하여 브라우저 창을 엽니다. 출처는 여기:http://www.commandlinefu.com/commands/view/7581/rtfm-function

rtfm() { help $@ || $@ -h || $@ --help || man $@ || xdg-open "http://www.google.com/search?q=$@"; }

문제는 내장 명령어와 부분적으로 일치하는 매뉴얼을 검색하면 실제 명령어 대신 매뉴얼이 찾아서 표시된다는 점이다. 예:

rtfm tr

trap분명히 내가 찾고 있는 것이 아닌 명령에 대한 도움말을 찾아 표시합니다 .

help그렇다면 내가 찾고 있는 명령과 정확히 일치하지 않는 명령을 찾는 것을 어떻게 방지할 수 있을까요 ? 이것이 가능합니까?

답변1

매개변수가 어떤 유형의 명령인지 테스트합니다. 이는 외부 명령을 숨길 수 있는 별칭과 기능을 올바르게 감지할 수 있는 추가 이점이 있습니다.

rtfm () {
  declare x
  for x; do
    case $(type -t "$x") in
      alias) alias "$x";;
      keyword) LESS="$LESS+/^SHELL GRAMMAR" man bash;;
      function) type "$x";;
      builtin) help "$x";;
      file)
        man -S 1,8 "$x" ||
        "$x" --help ||
        xdg-open "http://www.google.com/search?q=$x";;
      '') # no such command
        man "$x" ||
        xdg-open "http://www.google.com/search?q=$x";;
    esac
  done
}

답변2

help이는 부분 일치에 작동하는 유일한 명령이므로 명령의 순서를 바꿀 수 있습니다 .

rtfm() { "$@" -h || "$@" --help || man "$@" ||
         help "$@ "|| xdg-open "http://www.google.com/search?q=$@"; }

관련 정보