Làm thế nào để theo liên kết trong các trang man linux?


92

Có cách nào để theo các liên kết được đề cập trong một trang người đàn ông? Ví dụ: đây là trang hướng dẫn ps; Làm thế nào để tôi truy cập vào liên kết được đánh dấu màu đỏ?

Ảnh chụp màn hình của trang ps man


1
Ngoài ra, tôi thấy rằng man is an interface to the on-line reference manuals(nếu tôi không sai) có nghĩa là nó nên lấy tất cả thông tin từ một số trang web trên internet, phải không? Vì vậy, bất cứ ai cũng có manh mối về liên kết http: // là gì?
it_me

10
Ở đây, trên mạng, có nghĩa là trên mạng, có nghĩa là trên máy tính (trên trái ngược với trên máy tính trên giấy), chứ không phải trên Internet.
Gilles

1
"Trực tuyến": Bạn có thể nhớ các trò chơi Quest "Phiêu lưu" dành cho PC do một công ty (lúc đó) đặt tên là Sierra On-Line. trang man: Cách tốt nhất để duyệt trang man là sử dụng trình soạn thảo của bạn. Bằng cách đó, điều hướng, tìm kiếm (vv) văn bản sẽ rất mượt mà vì mọi phím tắt đều nằm trong bộ nhớ cơ của bạn từ lâu. Ngoài ra, giả sử bạn làm việc trong một dự án lập trình - bạn có thể sao chép từ các trang man vào mã của mình. Không có gì ngoài sự tương tác liền mạch. Kiểm tra điều này và nhận xét của tôi cho câu trả lời của @Gilles .
Emanuel Berg

Câu trả lời:


52

Các trang Man có từ phiên bản Unix First . Mặc dù siêu văn bản đã được phát minh, nó vẫn còn trong giai đoạn trứng nước; web cách đó hai thập kỷ và sách hướng dẫn là một cuốn sách in thực tế, thường có một lệnh trên mỗi trang nếu chúng phù hợp (đó là lý do tại sao chúng được gọi là trang).

Định dạng được sử dụng cho các trang thủ công đã phát triển phần nào kể từ đó, nhưng hầu hết các trang không thực sự được thiết kế cho siêu văn bản và manchương trình mặc định không hỗ trợ nó (nó chỉ là một trình xem văn bản đơn giản, có hack để hỗ trợ một số định dạng cơ bản). Tuy nhiên có những người đàn ông trang xem các chương trình tái tạo lại một số các siêu liên kết, chủ yếu là các liên kết đến các trang người đàn ông khác, mà theo truyền thống được viết dưới dạng man(1)nơi manlà tên của trang con người và 1số phần :

  • tkman , một trình xem trang người dùng GUI với các siêu liên kết
  • WoMan ( wiki , man comparsion , trước đây ), một trình duyệt trang dành cho Emacs, hỗ trợ các siêu liên kết
  • man2html , một người chuyển đổi sang HTML (cộng với trình duyệt web để đọc kết quả)

Bạn có thể duyệt các trang thủ công của một số hệ điều hành, được chuyển đổi sang HTML bằng man2htmlhoặc các công cụ tương tự, trên một số trang web trực tuyến, ví dụ:

Một thời gian sau khi các trang man đã trở thành định dạng tài liệu được thiết lập trên unix và một thời gian trước khi web được phát minh, dự án GNU đã giới thiệu định dạng tài liệu thông tin , tiên tiến hơn so với con người trong khi gắn vào đánh dấu đơn giản được thiết kế cho các thiết bị đầu cuối văn bản. Sự đổi mới chính của thông tin so với con người là có tài liệu nhiều trang với các siêu liên kết đến các trang khác. Thông tin vẫn là định dạng tài liệu ưa thích cho các dự án GNU, mặc dù hầu hết các trang Thông tin được tạo từ nguồn Texinfo (hoặc đôi khi các định dạng khác) cũng có thể tạo HTML. Khi tài liệu thông tin cho một chương trình tồn tại, nó thường là hướng dẫn chính, trong khi các trang hướng dẫn chỉ chứa thông tin cơ bản về các đối số dòng lệnh.


5
Câu trả lời chính xác! Một điều đáng nói nữa là có một chế độ khác cho các trang man trong Emacs, một chế độ (ít nhất là tôi) chỉ bằng M-x man(và C-h v mode-nameMan): ít nhất là ở một khía cạnh, nó tốt hơn WoManbởi vì nó hiển thị các bảng ( ảnh chụp màn hình ). Tất nhiên, nó là siêu liên kết là tốt.
Emanuel Berg

1
Giao diện người dùng chương trình thông tin cảm thấy vừa sai và phản trực giác. Tôi chưa thấy ai sử dụng nó.
Pavel imerda

@ PavelŠimerda> Giao diện người dùng chương trình thông tin cảm thấy vừa sai vừa phản trực giác. <Emm, so với cái gì? Để ít hơn (1) (là máy nhắn tin mặc định cho người đàn ông (1) trong GNU) - điều đó, trong đó bạn phải nhớ lại cách cuộn lại , vì <backspace> không bị ràng buộc (và <pgup> hoàn toàn không hoạt động) ? bBằng cách đó, chính là . Đối với người dùng mô hình giao diện này có thể là trực quan?
Dmitry Alexandrov

@ PavelŠimerda> Tôi chưa thấy ai sử dụng nó. <Luôn sử dụng thông tin (1) cho trang man đọc khi bị nhốt trong một thiết bị đầu cuối văn bản cho lý do chính xác, rằng không giống như ít (1) nó không chuyển đổi câm page(N)liên kết vào các siêu liên kết. Đã khá ngạc nhiên rằng điều đó không được đề cập trong câu trả lời của Gilles về chất lượng đó.
Dmitry Alexandrov

37

Trước hết, nó không phải là một liên kết. Nó chỉ là một gạch chân. Các trang man chỉ là các tài liệu văn bản với một chút định dạng đơn giản mà một thiết bị đầu cuối có thể xử lý. Phần gạch chân chỉ là một điểm nổi bật, không có "liên kết" liên quan.

Lệnh bình thường manchỉ là một định dạng văn bản. Trong thực tế, manlệnh thậm chí không hiển thị văn bản, manchỉ định dạng thông tin được lưu trữ trong tệp trang man [1] và gửi đầu ra được định dạng đến một chương trình khác (thường less) hiển thị đầu ra được định dạng ra màn hình. Các chương trình hiển thị này không có khái niệm về liên kết.

Có một số độc giả tài liệu đặc biệt có thể nhìn vào định dạng như vậy và đưa ra một phỏng đoán có giáo dục rằng một điểm nổi bật như vậy có thể chỉ ra rằng có một trang người đàn ông liên quan có thể được kéo lên và tạo một liên kết, nhưng tôi không biết cái nào làm Có lẽ pinfo?

Nếu bạn muốn định dạng web như siêu liên kết, bạn có thể tìm thấy hầu hết mọi trang người dùng UNIX trực tuyến với các liên kết được thêm vào. Hãy thử nhập man [anything]vào google và bạn gần như chắc chắn sẽ nhận được một trong hai lần truy cập đầu tiên.

Trong trường hợp ví dụ của bạn, đánh dấu hình ảnh là một đầu mối là một tên chương trình khác có trang man riêng mà bạn có thể dễ dàng kéo lên. Hãy thử man 1 top. 1 cho biết phần của các trang man cần xem. Xem câu hỏi này để được giải thích về các phần: Các số trong trang man có ý nghĩa gì?


[1] Nếu bạn mở mantệp trang trong trình soạn thảo văn bản, bạn sẽ thấy mantrang thô không được định dạng để dễ đọc. manTrang thô được viết bằng ngôn ngữ đánh dấu được gọi là troff. Để biết thêm thông tin về troffvà cách viết một mantrang, hãy xem: https://liw.fi/manpages/ .


Bất cứ ý tưởng tại sao nó là man 1 top?? Tôi có nghĩa là nó phải giống như ps 1 topvì tôi tìm thấy liên kết trên trang người đàn ông cho ps. "Người đàn ông 1 đầu" không có ý nghĩa với tôi. Vui lòng làm rõ.
it_me

Ngoài ra còn có một số tài nguyên giúp trang man có sẵn trên internet, với các tài liệu tham khảo được thay thế bởi href, có thể nhấp được.
gabe.

1
Nếu bạn muốn theo top(1)"liên kết", bạn cần mở toptrang thủ công từ phần 1. Để biết thêm thông tin về các phần, xem người đàn ông (1). ps 1 topkhông có ý nghĩa gì, vì bạn sẽ chỉ chạy pslệnh với một số thông số lạ.
rvs

2
@Aahan đó là người đàn ông 1 đầu vì bạn muốn xem trang hướng dẫn cho lệnh trên cùng trong phần 1 của trang hướng dẫn trực tuyến. Đầu tham chiếu (1) có nghĩa là như vậy, đầu trong phần 1 của các trang hướng dẫn. Để thấy điều đó, bạn gõ "man 1 top" tại dấu nhắc. Xem "người đàn ông"
gabe.

1
@Aaran: "Các phần của hướng dẫn sử dụng bao gồm các chủ đề khác nhau. Phần 1 là các lệnh người dùng (nội dung bạn nhập tại dấu nhắc) phần 2 là các cuộc gọi hệ thống, v.v. Một số chuỗi xuất hiện n nhiều hơn một phần. Trên máy tôi đang bật ngay bây giờ readlinkxuất hiện trong phần 1 và phần 2 và printftrong phần 1 và 3. Nếu bạn chỉ cần nhập man command, man trys các phần theo thứ tự số và hiển thị đầu tiên nó tìm thấy, hoặc bạn có thể cụ thể man # command, mà bạn phải làm để lấy tài liệu cho readlinkcuộc gọi hệ thống.
dmckee

12

Đây là trả lời rất muộn nhưng sử dụng w3mman. w3mman là máy nhắn tin thủ công của hệ thống bằng w3m.

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

Bạn có thể thử nó bằng cách cài đặt gói w3m. Tôi tin rằng gói này được đăng ký trong kho phần mềm của hầu hết các bản phân phối Linux / UNIX và Cygwin.


1
Một câu trả lời muộn có thêm một số câu trả lời cho câu hỏi chưa được đề cập, nó không bao giờ là một vấn đề! Chào mừng bạn tại Unix & Linux StackExchange!
Bernhard

w3mmancũng được cung cấp với w3mcài đặt Macports mặc định . Thật tuyệt :) Cảm ơn!
sampablokuper

8

Hãy để tôi cố gắng diễn giải câu hỏi của bạn nhiều hơn một chút theo nghĩa mà tôi cố gắng theo dõi quy trình làm việc của bạn. Những gì bạn có thể muốn có là một tổ hợp phím trong một mantrang dẫn bạn trực tiếp đến các lệnh được gạch chân mà bạn đang đọc. Vì vậy, không phải cài đặt một cái gì đó khác, cũng không mở một giao diện điều khiển khác và quên cú pháp chính xác chẳng hạn.

Giải pháp đơn giản nhất này là dấu chấm than (nếu bạn đang sử dụng lessđể hiển thị các trang hướng dẫn) và bạn muốn đi đến phần gạch chân top:

!man top

Hoặc là

!man 1 top

Bạn sẽ phải đóng tất cả chúng bằng cách nhấn qnhiều lần. Cũng lưu ý rằng điều này sẽ không hoạt động nếu LESSSECURE=1được đặt là biến môi trường sẽ chạy lessở chế độ bảo mật và không cho phép bạn sử dụng !. Nó sẽ cho bạn biết một cái gì đó như "Lệnh không có sẵn".


1

Mặc dù w3mman là một giải pháp để theo các liên kết, nhưng không sử dụng tất cả màn hình (ít nhất là trên Ubuntu 12.10)

Tôi thích sử dụng:

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

thêm lệnh cuối cùng vào ~ / .bash_aliases hoặc tập lệnh khởi động tương tự để có được nó trên mỗi phiên.

Các w3m -P là do trình duyệt đầu tiên hman là lynx hoặc hợp lý trình duyệt nhưng tôi thích w3m

hman là một công cụ được đóng gói trên html2man. Xem cái này

Nếu lối ra có xác nhận gây khó chịu cho bạn, thì với tôi là sử dụng cái này


Lỗi của tôi, gói phải là html2man
albfan

1

Cụ thể cho Ubuntu, có Yelp. Nó được cài đặt theo mặc định và theo mặc định có thể hiển thị các trang thủ công, mặc dù lệnh gọi để làm như vậy, không giống như manlệnh; một bí danh hoặc một hàm shell có thể hoạt động xung quanh điểm sau (tùy thuộc vào shell của bạn).

yelp 'man:exit'

Nó sẽ mặc định là một phần theo cách tôi không biết. Nhắc nhở: để có được danh sách các phần cho một chủ đề thủ công, hãy sử dụng whatis, như trong whatis exit.

Để yêu cầu Yelp hiển thị trang thủ công từ một phần cụ thể, giả sử 2, làm:

yelp 'man:exit(2)'

Vấn đề: yelp có lỗi và được chuẩn bị để nhận nhiều đầu ra lỗi khi gọi nó từ dòng lệnh. Ngoài ra, một bí danh hoặc một hàm shell tùy chỉnh có thể giúp chuyển hướng tất cả các lỗi sang/dev/null


1

Như họ đã nói, nó không được thiết kế cho nó.

Bạn có thể sử dụng info manvà sau đó nhấn enter khi bạn ở dưới mục XEM CSONG trên mục của bạn.

thông tin - đọc thông tin tài liệu


1

Tôi có một (vài) hack (s).

hack 1

Đặt cái này trong ~ / .bashrc hoặc ~ / .zshrc của bạn

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
}

Ảnh chụp màn hình ..

hướng dẫn sử dụng trong ảnh chụp màn hình vim

Asciinema ..

https://asciinema.org/a/130131

Hiện nay..

  1. khi bạn gõ man vimchẳng hạn, nó sẽ mở ra trang man này trong vim

    • man man vimví dụ, nếu bạn nhập , nó sẽ mở manhướng dẫn sử dụng và sau khi bạn thoát vim, nó sẽ mở vimhướng dẫn sử dụng
  2. khi bạn nhấn K(vốn đó k) khi bạn ở trang nam khác ở phía dưới (phần XEM CSONG ), bạn sẽ chuyển sang hướng dẫn này (không may là bên trong một máy nhắn tin ít hơn - điều này là do chúng tôi có let no_man_maps = 1; nếu bạn không làm điều đó, sau đó vim sẽ buộc qphải có :qvà bạn sẽ không thể ghi lại một macro dễ dàng, và vim có thể hành xử mạnh mẽ theo những cách khác).

    • thoát khỏi hướng dẫn thứ hai mà bạn đã nhập sẽ đưa bạn trở lại hướng dẫn trước bạn đang xem
  3. bạn nhận được cú pháp tô sáng rất đẹp vì bạn đã tải ftplugin / man.vim và ft được (tự động) được đặt thành man.

  4. bạn có thể sao chép và dán, điều hướng tự do trong vim và thậm chí sửa đổi bộ đệm và :w ~/usefulfile. Bạn có thể làm mọi thứ bạn thường làm trong vim, bao gồm các macro bản ghi, yank vào clipboard với "+y(nếu bạn có +clipboard), v.v., v.v.

Tôi thấy nó đẹp hơn ít hơn .

Nhược điểm nhỏ duy nhất tôi đã tìm thấy (vẫn còn tồn tại nếu bạn sử dụng ít hơn như máy nhắn tin của mình) là nếu bạn muốn mở nhiều hướng dẫn sử dụng trong một phiên vim. Tôi thực sự không thấy một cách để làm điều này.

Một vài lưu ý:

  1. nếu bạn cố lưu bộ đệm, bạn sẽ nhận được E382: Cannot write, 'buftype' option is set

    • Tôi thích rằng bạn không thể lưu vì nó ngăn chặn vô tình lưu nó
  2. bạn vẫn có thể tiết kiệm như :w /tmp/man.man

    • nếu bạn lưu nó với một .manphần mở rộng, thì việc mở nó lên sẽ thiết lập kiểu tệp mancho bạn
    • nếu bạn không lưu nó với .mantiện ích mở rộng, bạn có thể đặt ft thành manbằng cách chạy:set ft=man
  3. nếu bạn cần làm những việc khi mở trang man bạn có thể sử dụng autocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!', chẳng hạn.

  4. Tôi đã đặt các mục sau trong vimrc của mình để tôi có thể nhấn Kđể thử mở thủ công, sau đó nhấn Gđể quay lại hướng dẫn trước:


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

hack 2

đặt cái này trong ~ / .bashrc hoặc ~ / .zshrc của bạn

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

Ảnh chụp màn hình ..

nhiều hướng dẫn trong vim

Asciinema ..

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

Điều này giải quyết vấn đề hack 1ít phải đối mặt (bây giờ bạn có thể xem nhiều hướng dẫn sử dụng trong một bộ đệm), nhưng nó kém thanh lịch.

Ghi chú:

  1. QUAN TRỌNG nếu bạn muốn hack2 để làm việc, sau đó bạn phải đặt :let no_man_maps = 1trong bạn ~/.vimrc. Điều này là do vim sẽ nguồn .../vim80/man.vimqsẽ bị buộc phải ánh xạ lại :q.

  2. có nhiều dọn dẹp liên quan hơn (bây giờ bạn lưu trữ mọi hướng dẫn sử dụng vào /tmp/*.man )

  3. tuy nhiên, bây giờ bạn có thể xem nhiều trang man trong một phiên, như đã lưu ý ở trên

  4. nếu bạn nhấn K, bạn vẫn sẽ mở một phiên vim mới, tuy nhiên

    • nếu bạn muốn, bạn có thể liên kết một autocmd (sử dụng một autocmd như ở trên) để làm một cái gì đó giống như autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"hoặc một cái gì đó điên rồ như thế ( chưa được kiểm tra )

lời xin lỗi cho asciinema màu xấu. Các màu sắc trông đẹp hơn rất nhiều trong thiết bị đầu cuối của tôi.
Dylan

0

Tôi đã có thể sử dụng --htmlđối số để manmở nó trong trình duyệt được xác định bởi biến môi trường $ BROWSER, vì vậy:

BROWSER=google-chrome man ps --help

Tôi đang sử dụng Fedora. Không chắc chắn nếu điều này làm việc cho bản phân phối của bạn, xin vui lòng kiểm tra và báo cáo trong các ý kiến.


Tùy chọn này dường như được nhận ra trên Ubuntu 12.04, nhưng không thành công.
Hibou57

OK, gói groffcần phải được cài đặt. Các grofflệnh có thể có mặt ở đó trong khi gói cùng tên không phải là (lệnh đi kèm với groff-base, không phải là đầy đủ grofftrọn gói). Tôi làm man --html="surf file%c//%s" <command>, và nó ổn. Có siêu văn bản rất hạn chế mặc dù: - /.
Hibou57
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.