쉘 내장 명령 및 키워드에 대해`man`을 작동시키는 방법은 무엇입니까?


56

man특정 명령에 대한 정보를 얻고 싶을 때 항상 명령을 사용합니다 . 그러나 이것은 특정 명령이 쉘 내장 일 때 나에게 큰 도움이되지 않습니다. 예를 들면 다음과 같습니다.

man cd

보고:

No manual entry for cd

그것을 만들 수 있습니다 : 내 질문은 man모든 쉘 내장 명령 (등에도 작동 cd, alias, history, 등) 및 키워드 (같은 if, while, [[, {, 등)?


그리고 echo내장 명령은 어떻게 되지만 매뉴얼 페이지가 있습니까?
Parto

5
@AvatarParto echo또한에 위치한 시스템 명령 (실행 가능)입니다 /bin. 를 사용하여 확인할 수 있습니다 type -a echo. 같은 일이 일어날 time수도 있고 다른 사람들이 일어날 수도 있습니다.
Radu Rădeanu

info bash아직 탐험 했습니까 ?
bbaassssiiee

언제든지 자신의 매뉴얼 페이지를 작성할 수 있습니다 .
Elliott Frisch

답변:


66

help함께 사용되는 명령 -m의사 맨 페이지 형식으로 내장 명령에 대한 정보를 표시 할 수 있습니다 옵션을 선택합니다. 예를 들면 다음과 같습니다.

help -m cd | less

cd매뉴얼 페이지와 거의 같은 형식으로 명령에 대한 정보를 표시 합니다.

이 명령으로 시작하여 다음과 같이 파일의 man한 함수에서 명령을 래핑 할 수 있습니다 .bashrc.

man () {
    case "$(type -t -- "$1")" in
    builtin|keyword)
        help -m "$1" | sensible-pager
        ;;
    *)
        command man "$@"
        ;;
    esac
}

그런 다음 man모든 쉘 내장 명령 및 키워드에 대해서도 작동합니다. 예를 들면 다음과 같습니다.

man :

표시됩니다 :

NAME
    : - Null command.

SYNOPSIS
    :

DESCRIPTION
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

SEE ALSO
    bash(1)

IMPLEMENTATION
    GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

매우 영리한 접근법! +1
phatskat

5
내장으로 마스크 된 실행 파일이있는 경우 섹션을 지정할 수 있습니다. man timevs.man 1 time
OrangeDog 2014 년

1
... zsh사용자 인 경우 운이 좋지는 않습니다 : bugs.launchpad.net/ubuntu/+source/zsh/+bug/1242108 (man page가 설치되지 않음)
Rmano

info, help -m, 왜 우리는 요즘 좋은 사람 페이지를 가질 수 없습니다? 어쨌든 고마워!
Tor Klingberg

+1 ... 좋아! yr 함수의 동작은 C / C ++에서 함수 오버로딩을 통해 발생하는 것과 다소 유사합니다 man type. Ubuntu 14.04.4에서 "-a"또는 "-t"옵션에 대한 설명은 흥미롭지 않습니다. '거기에있어 !
Cbhihe

28
man bash-builtins

여기에는 기본 명령에 대한 도움말 스 니펫이 포함되어 있지만 help이에 비해 약간 더 압축 된 형식이 있습니다.


알아 둘만 한! 매뉴얼의 섹션 7에 있습니다. 지금까지이 매뉴얼 페이지에 대해 들어 보지 못했습니다. +1이지만이 질문에 대한 답이 아니기 때문에이 답변을 수락 할 수 없습니다.
Radu Rădeanu

명령 맥 OS 높은 시에라에 단순히 "사람의 내장 명령"입니다
토니 Barganski은

13

POSIX 시스템을 사용하여 개발 하는 방법에 대한 매뉴얼 페이지를 다음과 같이 설치할 수 있습니다 .

sudo apt-get install manpages-posix-dev

쉘 내장에 대한 매뉴얼 페이지를 제공합니다.

$ type cd
cd is a shell builtin

이제 시도해보십시오

$ man cd
CD(P)                      POSIX Programmer's Manual                      CD(P)

NAME
   cd - change the working directory

SYNOPSIS
   cd [-L | -P] [directory]


...

3
나는 누군가 가이 대답을하기를 기다리고있었습니다. 그러나 문제는 이것이 POSIX에 의해 지정된 일부 내장에서만 작동한다는 것 입니다.
Radu Rădeanu

3
POSIX 모드에서 실행하지 않는 한 Bash는 POSIX를 엄격하게 준수하지 않으므로 이러한 매뉴얼 페이지는 포괄적이지 않을 수 있으며 일부 상황에서는 특히 특정 기능의 동작을 설명 할 때 잘못 될 수 있습니다.
Chris Down

@ RaduRădeanu 네, 당신은 절대적으로 정확합니다. 일부 내장에서 작동합니다.
souravc

3

이 솔루션은 완벽하게 작동하지만 약간의 농담이기도합니다. 왜냐하면 내가 당신의 질문을 읽을 때 가장 먼저 생각했던 것은 '누가 말 그대로 명령 행에서 사람을 사용합니까? 모든 사람이 원하는 맨 페이지를 Google에 국한하지 않습니까 (무제한 스크롤과 같은 멋진 기능을 얻을 수 있습니까)? '. 그런 다음 Google 사이트에는 일반적으로 두 가지 유형의 명령이 모두 있으므로 모든 명령에서 균일 한 맨 페이지 인터페이스를 제공하는 데 사용하지 않는 이유는 무엇입니까? 따라서이 재미가 태어났습니다.

아직 한 번도 조회하지 않은 항목에 대해서는 인터넷 연결이 필요합니다. 또한 우분투의 기본 설치에서 누락 된 다음 두 개의 작은 앱이 필요합니다.

 sudo apt-get install tidy html2text

이것들은 반드시 필요한 것은 아니지만 조금 더 멋지게 보이도록 도와줍니다. Tidy는 HTML을 정리하고 html2text는 해당 HTML을 형식화 된 텍스트로 형식화합니다 (대부분의 사이트는 이미 텍스트 형식이며 <pre> 태그로 싸여 있기 때문에 매우 사소합니다.

이제 다음 끝에 이것을 추가하기 만하면됩니다 ~/.profile.

function iman() {
    if [ ! -d "/usr/share/iman" ]; then
        sudo mkdir -m a=rwx /usr/share/iman
    fi
    if [ ! -f "/usr/share/iman/$1.html" ]; then
        curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html"; 
    fi
    if [ -f "/usr/share/iman/$1.html" ]; then
        cat "/usr/share/iman/$1.html";
    else
        echo "Entry not found."
    fi
}

로그 아웃 한 후 다시 로그인하면 다음을 입력 할 수 있습니다.

iman cd

에 대한 매뉴얼 페이지가 표시됩니다 cd.

이것은 네트워크 요구 사항을 최소화하기 위해 데이터 디렉토리 (/ usr / share / iman)를 사용합니다 (따라서 연결하지 않아도 이미 찾은 항목에 대해 작동합니다.이 무작위 Linux 매뉴얼 페이지 사이트의로드를 최소화하십시오 우리가 원하는 시스템 항목도 찾았습니다). 더 이상 이것을 사용하지 않으면 디스크 공간을 복구하기 위해 이것을 제거하고 싶을 것입니다.

잘만되면, 나머지는 꽤 직설적입니다.


6
'누가 말 그대로 명령 행에서 사람을 사용합니까?' 그리고 데이터 센터를 방문
해야하는

포인트, 이것은 명확하게하는 데 도움이되지 않습니다.
krowe

6
나는 반대를 생각할 것이다. 나는 거의 bash 명령을 찾기 위해 구글을 거의 사용하지 않는다. 키보드를 떠나지 않고 "man command"를 입력하는 것이 훨씬 빠릅니다.
laurent

alt + tab-> alt + d-> 명령은 마우스와 현재 cli 명령을 취소하지 않고 스크롤하지 않고 브라우저가 제공하는 수백만 가지 멋진 것들을 사용하여 동일한 작업을 수행합니다. 나는 당신이 항상이 사이트와 lynx에서와 같은 다른 사이트를 사용하기 때문에 그것에 대해 아무것도 모른다고 확신합니다 ... ffs
krowe

내장의 경우 iman함수 는와 동일한 출력을 반환합니다 man bash-builtins.
Radu Rădeanu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.