리눅스 매뉴얼 페이지의 링크를 따르는 방법?


92

매뉴얼 페이지에 언급 된 링크를 따라갈 수있는 방법이 있습니까? 예를 들어 다음은 맨 페이지입니다 ps.; 빨간색으로 표시된 링크에 어떻게 액세스합니까?

PS 매뉴얼 페이지의 스크린 샷


1
또한, 내가 man is an interface to the on-line reference manuals잘못하지 않은 경우 인터넷의 일부 웹 페이지에서 모든 정보를 가져와야한다는 것을 알았습니다. 그렇다면 누구나 http : // 링크가 무엇인지에 대한 단서가 있습니까?
its_me

10
여기서 "온라인"은 "인터넷"이 아니라 "컴퓨터"( "종이"와 반대)를 의미합니다.
Gilles

1
"온라인": Sierra On-Line이라는 회사가 내놓은 PC 용 "모험"퀘스트 게임을 기억할 것입니다. 매뉴얼 페이지 : 매뉴얼 페이지 를 탐색하는 가장 좋은 방법은 편집기를 사용하는 것입니다. 이렇게하면 텍스트 탐색, 검색 등이 오래 걸리기 때문에 모든 단축키가 근육 메모리에있을 때처럼 매끄럽게됩니다. 또한 프로그래밍 프로젝트에서 작업한다고 가정하십시오. 맨 페이지에서 코드로 복사 할 수 있습니다. 원활한 상호 작용 이상의 것. 확인 @Gilles '와 내 댓글 대답을 .
Emanuel Berg

답변:


52

매뉴얼 페이지는 Unix First Edition으로 거슬러 올라갑니다 . 하이퍼 텍스트 가 발명 되었지만 여전히 초기 단계에있었습니다. 웹은 20 년이 걸렸으며, 매뉴얼은 실제 인쇄 된 책이었으며, 종종 페이지 당 하나의 명령이있는 경우가 많았습니다 (그래서 페이지라고 불렀습니다).

그 이후로 수동 페이지에 사용되는 형식은 다소 발전했지만 대부분의 페이지는 실제로 하이퍼 텍스트 용으로 설계 man되지 않았 으며 기본 프로그램은이를 지원하지 않습니다 (일부 기본 형식을 지원하는 해킹 기능이있는 일반 텍스트 뷰어 일뿐입니다). 일부 하이퍼 링크를 재구성 매뉴얼 페이지보기 프로그램, 전통적 형태로 작성되어 다른 사람이 페이지에 주로 링크 그러나이있다 man 페이지의 이름이고 는 IS 섹션 번호는 :man(1)man1

  • 하이퍼 링크가있는 GUI 매뉴얼 페이지 뷰어 tkman
  • 하이퍼 링크를 지원하는 Emacs의 맨 페이지 브라우저 인 WoMan ( wiki , man comparsion , 이전 )
  • man2html , man to HTML 변환기 (결과를 읽을 수있는 웹 브라우저)

여러 man2html사이트에서 온라인으로 다음과 같은 여러 운영 체제의 매뉴얼 페이지를 찾아 보거나 유사한 도구 로 HTML로 변환 하거나 유사한 도구를 사용할 수 있습니다.

매뉴얼 페이지가 유닉스에서 확립 된 문서 형식이 된 후 얼마 지나지 않아 웹이 발명되기 전에 언젠가 GNU 프로젝트는 텍스트 터미널 용으로 설계된 간단한 마크 업을 고수하면서 사람보다 고급 정보 문서 형식을 도입했습니다 . 사람에 비해 정보의 주요 혁신은 다른 페이지에 대한 하이퍼 링크가 포함 된 다중 페이지 문서를 작성하는 것이 었습니다. Info는 여전히 GNU 프로젝트에서 선호하는 문서 형식이지만 대부분의 Info 페이지는 HTML을 생성 할 수 있는 Texinfo 소스 (또는 다른 형식)에서 생성됩니다. 프로그램에 대한 정보 문서가 존재하는 경우, 주로 매뉴얼이되지만 매뉴얼 페이지에는 명령 행 인수에 대한 기본 정보 만 포함되어 있습니다.


5
좋은 답변입니다! 언급도 가치가 이맥스에서 맨 페이지의 또 다른 모드가 즉, 하나의 (적어도 나는) 단지에 의해 얻을 수 M-x man(하고 C-h v mode-name있다 Man) 적어도 하나 개의 측면에서, 그것은보다 우수 WoMan가 테이블 (표시하기 때문에 스크린 샷 ). 물론 하이퍼 링크도 있습니다.
Emanuel Berg

1
정보 프로그램 사용자 인터페이스는 잘못되고 반 직관적입니다. 나는 그것을 사용하는 사람을 보지 못했습니다.
Pavel Šimerda

@ PavelŠimerda> 정보 프로그램 사용자 인터페이스는 잘못되고 반 직관적입니다. <음, 무엇에 비해? less (1) (GNU에서 man (1)의 기본 호출기)- <backspace>가 바인딩되지 않아서 <pgup>이 전혀 작동하지 않을 수 있기 때문에 뒤로 스크롤 하는 방법을 상기 해야하는 것 ? 기본 키는 b그런 식입니다. 어떤 인터페이스 패러다임의 사용자에게 이것은 직관적입니까?
Dmitry Alexandrov

@ PavelŠimerda> 나는 그것을 사용하는 사람을 보지 못했습니다. 정확한 이유 텍스트 터미널에 갇혀있어 때 <항상 읽기 맨 (1) 정보를 사용하는 이하 (1)은 달리 않는 바보 변환 page(N)하이퍼 링크로 연결합니다. 그 질에 대한 Gilles의 답변에 언급되지 않은 것은 상당히 놀랍습니다.
Dmitry Alexandrov

37

우선, 그것은 링크가 아닙니다. 밑줄 일뿐입니다. 매뉴얼 페이지는 터미널이 처리 할 수있는 간단한 형식의 텍스트 문서 일뿐입니다. 밑줄은 강조 표시 일 뿐이며 "링크"는 없습니다.

일반적인 man명령은 단지 텍스트 포맷터입니다. 실제로이 man명령은 텍스트를 표시하지 않고 man매뉴얼 페이지 파일 [1]에 저장된 정보를 형식화 less하고 형식화 된 출력을 화면에 표시하는 다른 프로그램 (일반적으로 ) 으로 보냅니다 . 이 디스플레이 프로그램에는 링크 개념이 없습니다.

그와 같은 형식을 볼 수 있고 그러한 강조 표시가 풀리고 링크를 만들 수있는 관련 매뉴얼 페이지가 있음을 나타낼 수있는 교육적인 추측을 할 수있는 특별한 문서 독자가 있습니다. 어느 쪽이 아마도 pinfo?

하이퍼 링크로 웹과 같은 서식을 지정하려면 링크가 추가 된 거의 모든 UNIX 매뉴얼 페이지를 찾을 수 있습니다. man [anything]Google에 입력 하면 첫 커플 히트에서 거의 확실하게 하나를 얻을 수 있습니다.

예제의 경우 시각적 강조 표시는 쉽게 불러올 수있는 자체 맨 페이지가있는 다른 프로그램 이름의 단서입니다. 시도하십시오 man 1 top. 1은 매뉴얼 페이지의 섹션을 표시합니다. 섹션에 대한 설명은이 질문을 참조하십시오. 매뉴얼 페이지 의 숫자는 무엇을 의미합니까?


[1]man 텍스트 편집기에서 페이지 파일 을 열면 man쉽게 읽을 수 있도록 형식이 지정되지 않은 원시 페이지 가 표시됩니다 . 원시 man페이지는이라는 마크 업 언어로 작성됩니다 troff. 페이지 troff작성 방법 에 대한 자세한 내용은 https://liw.fi/manpages/를man 참조 하십시오 .


왜 그런지 man 1 top아십니까 ?? ps 1 top에 대한 매뉴얼 페이지에서 링크를 찾았 기 때문에 이와 비슷한 것이어야합니다 ps. "남자 1 위"는 이해가되지 않습니다. 명확히하십시오.
its_me

인터넷에서 맨 페이지를 사용할 수있게하는 참고 자료도 있으며, 참조는 href로 대체되어 클릭 할 수 있습니다.
개브.

1
top(1)"링크" 를 따르 려면 top첫 번째 섹션에서 매뉴얼 페이지 를 열어야 합니다. 섹션에 대한 자세한 내용은 man (1)을 참조하십시오. 매개 변수에 이상한 명령을 ps 1 top실행하기 때문에 의미가 없습니다 ps.
RVS

2
@Aahan 온라인 매뉴얼 페이지의 첫 번째 섹션에서 top 명령에 대한 매뉴얼 페이지를 보려고하므로 man 1 top입니다. 참조 top (1)은 매뉴얼 페이지의 첫 번째 섹션에서 상단을 의미합니다. 이를 확인하려면 프롬프트에 "man 1 top"을 입력하십시오. "man man"
gabe를

1
@Aaran : "매뉴얼의 섹션은 다른 주제를 다룹니다. 섹션 1은 사용자 명령 (프롬프트에 입력하는 항목)입니다. 섹션 2는 시스템 호출입니다. 일부 문자열은 두 개 이상의 섹션으로 나타납니다. 바로 입력하면 readlink섹션 1과 섹션 2, printf섹션 1과 3에 나타납니다. 방금 입력 man command하면 man은 섹션을 숫자 순서대로 시도하고 가장 먼저 찾은 항목을 표시하거나 man # command문서를 얻기 위해 수행해야하는 특정 항목을 표시 할 수 있습니다.readlink
dmckee

12

이것은 매우 늦은 답변이지만 w3mman을 사용하십시오. w3mman은 w3m에 의한 시스템 매뉴얼 호출기입니다.

https://linux.die.net/man/1/w3mman

w3m 패키지를 설치하여 사용해 볼 수 있습니다. 이 패키지는 대부분의 주요 Linux / UNIX 배포판과 Cygwin의 소프트웨어 저장소에 등록되어 있다고 생각합니다.


1
아직 언급되지 않은 질문에 대한 답변을 추가하는 늦은 답변은 결코 문제가되지 않습니다! Unix & Linux StackExchange에 오신 것을 환영합니다!
Bernhard

w3mman또한 기본 Macports w3m설치 와 함께 제공됩니다 . 대단해 :) 고마워!
sampablokuper

8

워크 플로를 따르려는 의미에서 질문을 조금 더 해석해 보겠습니다. 아마도 man당신이 읽고 싶은 것은 페이지에 있는 키 조합 으로, 당신이 읽고있는 밑줄이 그어진 명령으로 직접 연결됩니다. 따라서 다른 것을 설치할 필요가 없으며 다른 콘솔을 열거 나 예를 들어 정확한 구문을 잊어 버릴 필요가 없습니다.

이 가장 간단한 해결책은 느낌표 ( lessMan 페이지를 표시하는 데 사용 하는 경우 )이며 밑줄로 표시하려고합니다 top.

!man top

또는

!man 1 top

q여러 번 눌러 이들을 모두 닫아야합니다 . 또한 보안 모드에서 LESSSECURE=1실행 less하고 사용할 수없는 환경 변수로 설정된 경우에는 작동 하지 않습니다 !. "명령을 사용할 수 없음"과 같은 정보가 표시됩니다.


1

w3mman 은 링크를 따르는 솔루션 이지만 모든 화면을 사용하지는 않습니다 (적어도 우분투 12.10에서)

나는 사용하는 것을 선호합니다 :

$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'

~ / .bash_aliases 또는 유사한 시작 스크립트에 마지막 명령을 추가하여 모든 세션에서 명령 을 가져 오십시오.

-P의 w3m은 HMAN에 처음 브라우저이기 때문이다 살쾡이 또는 재치있는 브라우저 하지만 선호 w3m

hmanhtml2man 에 번들 된 도구입니다. 참조

확인과 함께 종료가 당신에게 성가 시다면, 이것 에 관해서는


내 실수는, 패키지는 html2man이어야한다
albfan

1

우분투에는 특별히 Yelp가 있습니다. 기본적으로 설치되며 수동 페이지를 표시 할 수 있지만 기본적으로 호출하는 것은 man명령 의 호출과 동일하지 않습니다 . 별명이나 쉘 함수는 후자의 문제를 해결할 수 있습니다 (쉘에 따라 다름).

yelp 'man:exit'

내가 모르는 방식으로 섹션이 기본값으로 설정됩니다. 알림 : 수동 주제에 대한 섹션 목록을 보려면에서 whatis와 같이를 사용하십시오 whatis exit.

Yelp가 특정 섹션 (예 : 2)에서 매뉴얼 페이지를 표시하도록 요청하려면 다음을 수행하십시오.

yelp 'man:exit(2)'

문제점 : yelp에 버그가 있으며 명령 행에서 호출 할 때 여러 오류가 출력 될 수 있도록 준비하십시오. 또한 별칭 또는 사용자 지정 셸 함수는 모든 오류를/dev/null


1

그들이 말했듯이, 그것은 그것을 위해 설계된 것이 아닙니다.

항목의 다음 항목도 참조info man 하면 Enter 키를 누르고 사용할 수 있습니다 .

정보-정보 문서 읽기


1

나는 (커플) 해킹을 가지고 있습니다.

해킹 1

이것을 ~ / .bashrc 또는 ~ / .zshrc에 넣으십시오.

function man(){
    for arg in "$@"; do
        vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
    done
}

스크린 샷 ..

vim 스크린 샷 매뉴얼

Asciinema ..

https://asciinema.org/a/130131

지금..

  1. 입력 할 때 man vim, 예를 들어,이 사람이 페이지 열립니다 정력을

    • 당신이 입력하는 경우 man man vim, 예를 들어, 먼저 열립니다 man의 매뉴얼과 정력을 종료 한 후,이 열립니다 vim의 매뉴얼을
  2. 맨 아래에있는 다른 맨 페이지 ( SEE ALSO 섹션) 에있을 때 K(자본 k) 을 누르면 이 매뉴얼로 이동합니다 (불행히도 적은 호출기 내부 -우리가 가지고 있기 때문에 ; 그렇게하면 vim이 강제 로 되고 매크로를 쉽게 기록 할 수 없으며 vim은 다른 방식으로 기발하게 작동 할 수 있습니다).let no_man_maps = 1q:q

    • 입력 한이 두 번째 매뉴얼을 종료하면보고 있던 이전 매뉴얼로 돌아갑니다.
  3. ftplugin / man.vim 을로드 하고 ft가 (자동으로) 설정되어 있기 때문에 구문 강조가 매우 잘 나타 납니다man .

  4. vim에서 자유롭게 복사하여 붙여 넣기하고 자유롭게 탐색하고 버퍼 및을 수정할 수도 :w ~/usefulfile있습니다. 레코드 매크로, 클립 보드로 얀크 "+y(있는 경우 +clipboard) 등을 포함하여 vim에서 일반적으로하는 모든 작업을 수행 할 수 있습니다 .

나는 것보다 훨씬 더 좋은 찾을 적은 .

내가 찾은 유일한 사소한 단점은 (당신의 호출기로 덜 사용하는 경우에도 여전히 존재합니다) 하나의 vim 세션에서 여러 매뉴얼을 열어 두는 것입니다. 나는 이것을 할 수있는 방법을 실제로 보지 못한다.

몇 가지 참고 사항 :

  1. 버퍼를 저장하려고하면 E382: Cannot write, 'buftype' option is set

    • 실수로 저장하지 않으므로 저장할 수없는 것이 좋습니다
  2. 당신은 여전히 ​​같이 저장할 수 있습니다 :w /tmp/man.man

    • 당신이 그것을 저장하면 .man확장 한 다음 파일 형식을 설정합니다 그것을 열어 man당신을 위해
    • .man확장명으로 저장하지 않으면 다음 man을 실행 하여 ft를 설정할 수 있습니다.:set ft=man
  3. autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'예를 들어 매뉴얼 페이지를 열 때해야 할 일이 있다면 사용할 수 있습니다 .

  4. vimrc에 다음 내용을 입력하여을 눌러 K매뉴얼을 연 다음을 눌러 G이전 매뉴얼로 돌아갈 수 있습니다.


augroup man
    autocmd!
    autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
    autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END

해킹 2

이것을 ~ / .bashrc 또는 ~ / .zshrc에 넣으십시오.

function man(){
    declare -a args
    for arg in "$@"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

스크린 샷 ..

vim의 여러 매뉴얼

Asciinema ..

https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv

이 문제를 해결 한 해킹작은 얼굴 (지금은 하나의 버퍼에 여러 설명서를 볼 수 있습니다)하지만, 덜 우아.

노트:

  1. 중요 당신이 원하는 경우 hack2이 일을, 당신은 삽입해야합니다 :let no_man_maps = 1당신에 ~/.vimrc. 정력 소스 때문입니다 .../vim80/man.vimq강제로 다시 매핑됩니다 :q.

  2. 더 많은 정리가 필요합니다 (이제 모든 매뉴얼을 /tmp/*.man에 저장 하십시오 )

  3. 그러나 위에서 언급 한 것처럼 이제 한 세션에서 여러 매뉴얼 페이지를 볼 수 있습니다

  4. 를 누르면 K여전히 새 vim 세션이 열립니다.

    • 원하는 경우 autocmd (위와 같은 autocmd를 사용하여)를 바인딩하여 비슷한 autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"또는 미친 것을 수행 할 수 있습니다 ( 테스트되지 않은 )

심하게 착색 된 asciinema에 대한 사과. 터미널에서 색상이 훨씬 좋아 보입니다.
Dylan

0

$ BROWSER 환경 변수로 정의 된 브라우저에서 --html인수를 man열려면 인수 를 사용할 수 있었으므로 다음과 같습니다.

BROWSER=google-chrome man ps --help

Fedora를 사용하고 있습니다. 이것이 배포판에 적합한 지 확실하지 않으면 테스트하여 의견을 작성하십시오.


이 옵션은 Ubuntu 12.04에서 인식되는 것처럼 보이지만 실패합니다.
Hibou57

패키지 groff를 설치해야합니다. groff같은 이름의 패키지가없는 상태에서 명령이있을 수 있습니다 (명령이 포함되어 groff-base있지 전체, groff패키지). 나는 man --html="surf file%c//%s" <command>하고 괜찮습니다. 비록 매우 제한적인 하이퍼 텍스트가 있습니다 :-/.
Hibou57
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.