it-swarm-vi.com

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

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 man cho ps; Làm thế nào để tôi truy cập vào liên kết được đánh dấu màu đỏ?

Screenshot of the ps man page

101
its_me

Các trang man có từ Phiên bản đầu tiên của Unix . Trong khi 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à chương trình man mặc định không hỗ trợ nó (chỉ là trình xem văn bản đơn giản, có hỗ trợ hack một số định dạng cơ bản). Tuy nhiên, có những chương trình xem trang người đàn ông tái cấu trúc một số siêu liên kết, chủ yếu là liên kết đến các trang người đàn ông khác, được viết theo truyền thống dưới dạng man(1) trong đó man là tên của trang man và 1số phần :

  • tkman , trình xem trang người dùng GUI có siêu liên kết
  • WoMan ( wiki , man comparsion , trước đây ), trình duyệt trang dành cho Emacs, hỗ trợ 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 cách man2html hoặ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, GNU dự án đã giới thiệu thông tin định dạng tài liệu, cao cấp hơn con người trong khi vẫn sử dụng đánh dấu đơn giản được thiết kế cho 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ừ một Texinfo nguồn (hoặc đôi khi các định dạng khác) cũng có thể tạo HTML. 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 man chỉ chứa thông tin cơ bản về các đối số dòng lệnh.

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 man bình thường chỉ là một trình định dạng văn bản. Trong thực tế, lệnh man thậm chí không hiển thị văn bản, man chỉ đị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 là 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ử gõ 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. Thử man 1 top. Số 1 biểu thị 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ở tệp trang man trong trình soạn thảo văn bản, bạn sẽ thấy trang man thô không được định dạng để dễ đọc. Trang man thô được viết bằng ngôn ngữ đánh dấu có tên troff. Để biết thêm thông tin về troff và cách viết một trang man xem: https://liw.fi/manpages/ .

39
Caleb

Đâ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 hệ thống của 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.

13
akawaguc

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 trang man 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 man) và bạn muốn đi đến dấu 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 q nhiề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àm 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".

11
Anne van Rossum

Mặc dù w3mman là một giải pháp để theo liên kết, 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.

- P w3m là vì trình duyệt đầu tiên cho hman là lynx hoặc trình duyệt nhạy cảm nhưng tôi thích w3m

hman là một công cụ được 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

2
albfan

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

Bạn có thể dùng info man và sau đó nhấn enter khi bạn ở dưới XEM CSONG phần trên mục của bạn.

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

2
binarytrails

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 với lệnh man; 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 lỗi đầu ra khi gọi nó từ dòng lệnh. Ngoài ra, một bí danh hoặc chức năng Shell tùy chỉnh có thể giúp chuyển hướng tất cả các lỗi sang /dev/null

2
Hibou57

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 "[email protected]"; 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 ..

manual in vim screenshot

Asciinema ..

https://asciinema.org/a/130131

Hiện nay..

  1. ví dụ: khi bạn nhập man vim, nó sẽ mở ra trang man này trong vim

    • ví dụ: nếu bạn nhập man man vim, trước tiên, nó sẽ mở hướng dẫn của man và sau khi bạn thoát vim, nó sẽ mở hướng dẫn của vim
  2. khi bạn nhấn K (vốn đó k) khi bạn ở trang người đàn ông 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 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 đó, thì vim sẽ buộc q thành :q và bạn sẽ không thể ghi lại một macro một cách 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 macro bản ghi, yank vào clipboard với "+y (Nếu bạn có +clipboard), V.v.

Tôi thấy nó đẹp hơn nhiều so với ít.

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ể lưu như :w /tmp/man.man

    • nếu bạn lưu nó với phần mở rộng .man, thì việc mở nó lên sẽ đặt kiểu tệp thành man cho bạn
    • nếu bạn không lưu nó với tiện ích mở rộng .man, bạn chỉ có thể đặt ft thành man bằng cách chạy :set ft=man
  3. nếu bạn cần làm mọi thứ 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 để 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 "[email protected]"; do
        command man "$arg" > "/tmp/${arg}.man"
        args+=("/tmp/${arg}.man")
    done
    vim "${args[@]}"
}

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

multiple manuals in vim

Asciinema ..

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

Điều này giải quyết vấn đề rằng hack 1less face (bây giờ bạn có thể xem nhiều hướng dẫn 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 hoạt động, thì bạn phải đặt :let no_man_maps = 1 trong ~/.vimrc. Điều này là do vim sẽ nguồn .../vim80/man.vimq sẽ bị buộc phải ánh xạ lại thành :q.

  2. có nhiều dọn dẹp hơn liên quan (bây giờ bạn lưu trữ mọi hướng dẫn sử dụng để / 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 autocmd như ở trên) để làm một cái gì đó 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 )
2
Dylan

Tôi đã có thể sử dụng --html đối số với man để mở 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 distro của bạn, xin vui lòng kiểm tra và báo cáo trong các ý kiến.

1
tutuDajuju