매뉴얼 페이지에 언급 된 링크를 따라갈 수있는 방법이 있습니까? 예를 들어 다음은 맨 페이지입니다 ps
.; 빨간색으로 표시된 링크에 어떻게 액세스합니까?
매뉴얼 페이지에 언급 된 링크를 따라갈 수있는 방법이 있습니까? 예를 들어 다음은 맨 페이지입니다 ps
.; 빨간색으로 표시된 링크에 어떻게 액세스합니까?
답변:
매뉴얼 페이지는 Unix First Edition으로 거슬러 올라갑니다 . 하이퍼 텍스트 가 발명 되었지만 여전히 초기 단계에있었습니다. 웹은 20 년이 걸렸으며, 매뉴얼은 실제 인쇄 된 책이었으며, 종종 페이지 당 하나의 명령이있는 경우가 많았습니다 (그래서 페이지라고 불렀습니다).
그 이후로 수동 페이지에 사용되는 형식은 다소 발전했지만 대부분의 페이지는 실제로 하이퍼 텍스트 용으로 설계 man
되지 않았 으며 기본 프로그램은이를 지원하지 않습니다 (일부 기본 형식을 지원하는 해킹 기능이있는 일반 텍스트 뷰어 일뿐입니다). 일부 하이퍼 링크를 재구성 매뉴얼 페이지보기 프로그램, 전통적 형태로 작성되어 다른 사람이 페이지에 주로 링크 그러나이있다 man 페이지의 이름이고 는 IS 섹션 번호는 :man(1)
man
1
여러 man2html
사이트에서 온라인으로 다음과 같은 여러 운영 체제의 매뉴얼 페이지를 찾아 보거나 유사한 도구 로 HTML로 변환 하거나 유사한 도구를 사용할 수 있습니다.
매뉴얼 페이지가 유닉스에서 확립 된 문서 형식이 된 후 얼마 지나지 않아 웹이 발명되기 전에 언젠가 GNU 프로젝트는 텍스트 터미널 용으로 설계된 간단한 마크 업을 고수하면서 사람보다 고급 정보 문서 형식을 도입했습니다 . 사람에 비해 정보의 주요 혁신은 다른 페이지에 대한 하이퍼 링크가 포함 된 다중 페이지 문서를 작성하는 것이 었습니다. Info는 여전히 GNU 프로젝트에서 선호하는 문서 형식이지만 대부분의 Info 페이지는 HTML을 생성 할 수 있는 Texinfo 소스 (또는 다른 형식)에서 생성됩니다. 프로그램에 대한 정보 문서가 존재하는 경우, 주로 매뉴얼이되지만 매뉴얼 페이지에는 명령 행 인수에 대한 기본 정보 만 포함되어 있습니다.
M-x man
(하고 C-h v mode-name
있다 Man
) 적어도 하나 개의 측면에서, 그것은보다 우수 WoMan
가 테이블 (표시하기 때문에 스크린 샷 ). 물론 하이퍼 링크도 있습니다.
b
그런 식입니다. 어떤 인터페이스 패러다임의 사용자에게 이것은 직관적입니까?
page(N)
하이퍼 링크로 연결합니다. 그 질에 대한 Gilles의 답변에 언급되지 않은 것은 상당히 놀랍습니다.
우선, 그것은 링크가 아닙니다. 밑줄 일뿐입니다. 매뉴얼 페이지는 터미널이 처리 할 수있는 간단한 형식의 텍스트 문서 일뿐입니다. 밑줄은 강조 표시 일 뿐이며 "링크"는 없습니다.
일반적인 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 위"는 이해가되지 않습니다. 명확히하십시오.
top(1)
"링크" 를 따르 려면 top
첫 번째 섹션에서 매뉴얼 페이지 를 열어야 합니다. 섹션에 대한 자세한 내용은 man (1)을 참조하십시오. 매개 변수에 이상한 명령을 ps 1 top
실행하기 때문에 의미가 없습니다 ps
.
readlink
섹션 1과 섹션 2, printf
섹션 1과 3에 나타납니다. 방금 입력 man command
하면 man은 섹션을 숫자 순서대로 시도하고 가장 먼저 찾은 항목을 표시하거나 man # command
문서를 얻기 위해 수행해야하는 특정 항목을 표시 할 수 있습니다.readlink
이것은 매우 늦은 답변이지만 w3mman을 사용하십시오. w3mman은 w3m에 의한 시스템 매뉴얼 호출기입니다.
https://linux.die.net/man/1/w3mman
w3m 패키지를 설치하여 사용해 볼 수 있습니다. 이 패키지는 대부분의 주요 Linux / UNIX 배포판과 Cygwin의 소프트웨어 저장소에 등록되어 있다고 생각합니다.
w3mman
또한 기본 Macports w3m
설치 와 함께 제공됩니다 . 대단해 :) 고마워!
워크 플로를 따르려는 의미에서 질문을 조금 더 해석해 보겠습니다. 아마도 man
당신이 읽고 싶은 것은 페이지에 있는 키 조합 으로, 당신이 읽고있는 밑줄이 그어진 명령으로 직접 연결됩니다. 따라서 다른 것을 설치할 필요가 없으며 다른 콘솔을 열거 나 예를 들어 정확한 구문을 잊어 버릴 필요가 없습니다.
이 가장 간단한 해결책은 느낌표 ( less
Man 페이지를 표시하는 데 사용 하는 경우 )이며 밑줄로 표시하려고합니다 top
.
!man top
또는
!man 1 top
q
여러 번 눌러 이들을 모두 닫아야합니다 . 또한 보안 모드에서 LESSSECURE=1
실행 less
하고 사용할 수없는 환경 변수로 설정된 경우에는 작동 하지 않습니다 !
. "명령을 사용할 수 없음"과 같은 정보가 표시됩니다.
w3mman 은 링크를 따르는 솔루션 이지만 모든 화면을 사용하지는 않습니다 (적어도 우분투 12.10에서)
나는 사용하는 것을 선호합니다 :
$ sudo su -
# apt-get install w3m man2html
# exit
$ alias man=' hman -P w3m'
~ / .bash_aliases 또는 유사한 시작 스크립트에 마지막 명령을 추가하여 모든 세션에서 명령 을 가져 오십시오.
-P의 w3m은 HMAN에 처음 브라우저이기 때문이다 살쾡이 또는 재치있는 브라우저 하지만 선호 w3m
hman 은 html2man 에 번들 된 도구입니다. 참조 이
확인과 함께 종료가 당신에게 성가 시다면, 이것 에 관해서는
우분투에는 특별히 Yelp가 있습니다. 기본적으로 설치되며 수동 페이지를 표시 할 수 있지만 기본적으로 호출하는 것은 man
명령 의 호출과 동일하지 않습니다 . 별명이나 쉘 함수는 후자의 문제를 해결할 수 있습니다 (쉘에 따라 다름).
yelp 'man:exit'
내가 모르는 방식으로 섹션이 기본값으로 설정됩니다. 알림 : 수동 주제에 대한 섹션 목록을 보려면에서 whatis
와 같이를 사용하십시오 whatis exit
.
Yelp가 특정 섹션 (예 : 2)에서 매뉴얼 페이지를 표시하도록 요청하려면 다음을 수행하십시오.
yelp 'man:exit(2)'
문제점 : yelp에 버그가 있으며 명령 행에서 호출 할 때 여러 오류가 출력 될 수 있도록 준비하십시오. 또한 별칭 또는 사용자 지정 셸 함수는 모든 오류를/dev/null
나는 (커플) 해킹을 가지고 있습니다.
이것을 ~ / .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
}
스크린 샷 ..
Asciinema ..
https://asciinema.org/a/130131
지금..
입력 할 때 man vim
, 예를 들어,이 사람이 페이지 열립니다 정력을
man man vim
, 예를 들어, 먼저 열립니다 man
의 매뉴얼과 정력을 종료 한 후,이 열립니다 vim
의 매뉴얼을맨 아래에있는 다른 맨 페이지 ( SEE ALSO 섹션) 에있을 때 K(자본 k
) 을 누르면 이 매뉴얼로 이동합니다 (불행히도 적은 호출기 내부 -우리가 가지고 있기 때문에 ; 그렇게하면 vim이 강제 로 되고 매크로를 쉽게 기록 할 수 없으며 vim은 다른 방식으로 기발하게 작동 할 수 있습니다).let no_man_maps = 1
q
:q
ftplugin / man.vim 을로드 하고 ft가 (자동으로) 설정되어 있기 때문에 구문 강조가 매우 잘 나타 납니다man
.
vim에서 자유롭게 복사하여 붙여 넣기하고 자유롭게 탐색하고 버퍼 및을 수정할 수도 :w ~/usefulfile
있습니다. 레코드 매크로, 클립 보드로 얀크 "+y
(있는 경우 +clipboard
) 등을 포함하여 vim에서 일반적으로하는 모든 작업을 수행 할 수 있습니다 .
나는 것보다 훨씬 더 좋은 찾을 적은 .
내가 찾은 유일한 사소한 단점은 (당신의 호출기로 덜 사용하는 경우에도 여전히 존재합니다) 하나의 vim 세션에서 여러 매뉴얼을 열어 두는 것입니다. 나는 이것을 할 수있는 방법을 실제로 보지 못한다.
몇 가지 참고 사항 :
버퍼를 저장하려고하면 E382: Cannot write, 'buftype' option is set
당신은 여전히 같이 저장할 수 있습니다 :w /tmp/man.man
.man
확장 한 다음 파일 형식을 설정합니다 그것을 열어 man
당신을 위해.man
확장명으로 저장하지 않으면 다음 man
을 실행 하여 ft를 설정할 수 있습니다.:set ft=man
autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'
예를 들어 매뉴얼 페이지를 열 때해야 할 일이 있다면 사용할 수 있습니다 .
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
이것을 ~ / .bashrc 또는 ~ / .zshrc에 넣으십시오.
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
스크린 샷 ..
Asciinema ..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
이 문제를 해결 한 해킹 과 작은 얼굴 (지금은 하나의 버퍼에 여러 설명서를 볼 수 있습니다)하지만, 덜 우아.
노트:
중요 당신이 원하는 경우 hack2이 일을, 당신은 삽입해야합니다 :let no_man_maps = 1
당신에 ~/.vimrc
. 정력 소스 때문입니다 .../vim80/man.vim
및 q
강제로 다시 매핑됩니다 :q
.
더 많은 정리가 필요합니다 (이제 모든 매뉴얼을 /tmp/*.man에 저장 하십시오 )
그러나 위에서 언급 한 것처럼 이제 한 세션에서 여러 매뉴얼 페이지를 볼 수 있습니다
를 누르면 K여전히 새 vim 세션이 열립니다.
autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"
또는 미친 것을 수행 할 수 있습니다 ( 테스트되지 않은 )$ BROWSER 환경 변수로 정의 된 브라우저에서 --html
인수를 man
열려면 인수 를 사용할 수 있었으므로 다음과 같습니다.
BROWSER=google-chrome man ps --help
Fedora를 사용하고 있습니다. 이것이 배포판에 적합한 지 확실하지 않으면 테스트하여 의견을 작성하십시오.
groff
를 설치해야합니다. groff
같은 이름의 패키지가없는 상태에서 명령이있을 수 있습니다 (명령이 포함되어 groff-base
있지 전체, groff
패키지). 나는 man --html="surf file%c//%s" <command>
하고 괜찮습니다. 비록 매우 제한적인 하이퍼 텍스트가 있습니다 :-/.
man is an interface to the on-line reference manuals
잘못하지 않은 경우 인터넷의 일부 웹 페이지에서 모든 정보를 가져와야한다는 것을 알았습니다. 그렇다면 누구나 http : // 링크가 무엇인지에 대한 단서가 있습니까?