2012-11-17 36 views
16

Có cách nào để chuyển đổi tất cả các trang người dùng Linux thành văn bản thuần túy, html hoặc markdown không?Chuyển đổi tất cả các trang người dùng Linux thành văn bản/html hoặc markdown

Tôi cần thực hiện việc này cho mọi tệp người dùng mà tôi đã cài đặt trên hệ thống của mình.

+2

[Pandoc] (http://johnmacfarlane.net/pandoc/) có thể làm khá nhiều, nhưng đáng buồn là không 'man' -> bất cứ điều gì khác (mặc dù nó có thể chuyển đổi nhiều định dạng sang 'man') –

+0

Nó có thể chuyển đổi nhiều định dạng thành' man', kém. - FTFY –

Trả lời

24

Có ... Để chuyển đổi một trong số họ, nói rằng, người đàn ông của con người:

zcat /usr/share/man/man1/man.1.gz | groff -mandoc -Thtml 

Nếu bạn muốn 'tất cả các cài đặt trên máy tính của bạn, bạn chỉ cần lặp qua chúng. Đối với đầu ra khác nhau (ví dụ: văn bản), sử dụng 'thiết bị' khác nhau (đối số -T).

Chỉ trong trường hợp ... nếu 'lặp' là vấn đề thực sự, bạn có thể sử dụng:

OUT_DIR=... 

for i in `find -name '*.gz'`; do 
    dname=`dirname $i` 
    mkdir -p $OUT_DIR/$dname 
    zcat $i | groff -mandoc -Thtml > $OUT_DIR/$i.html 
done 
+0

Cảm ơn, tôi đoán tôi có thể xây dựng một kịch bản để làm điều đó ... Tôi đang tìm kiếm một cách lành mạnh để chuyển đổi tất cả các tệp của người đàn ông, không chỉ một. – KJS

+6

Đối với một manpage $ PAGE, công việc này, nhưng đáng buồn là HTML được tạo ra không phải là rất tốt (CSS nội tuyến, không có tên lớp, không ngữ nghĩa). Tôi muốn tự động liên kết với tiêu đề, v.v. Thời gian để tự học định dạng manpage ... Phím tắt nhanh để tìm và xuất manpage: '' 'zcat $ (man -w $ PAGE) | groff -mandoc -Thtml''' –

+0

Mẹo hay; trong trường hợp người dùng OSX tìm thấy điều này: sử dụng 'gzcat' thay vì' zcat' để giải nén (hầu hết các trang không thực sự được nén trên OSX). Ngoài ra, trong khi Ubuntu (tính đến 14.04) không có 'groff', bộ lọc đầu ra HTML không được cài đặt sẵn và không rõ ràng cách cài đặt nó (không thêm' groff' cũng như 'groff-base'' apt-get 'gói giúp); có một gói 'man2html' thay thế, nhưng lưu ý rằng đầu ra HTML của nó khác nhau. – mklement0

0

Hôm nay là ngày may mắn của bạn. Ai đó đã làm điều này cho bạn. http://linux.die.net/

+3

Nhưng một số trang có tin đồn không được cập nhật. http://www.kernel.org/doc/man-pages/ cũng là một địa điểm tốt. –

+0

@ Dễ dàng - tuyệt. Tốt để biết. Tôi sẽ nghi ngờ rằng kernel.org sẽ được cập nhật. Cảm ơn! – cowboydan

+1

Trang người đàn ông được gói ở đó, điều này khá sai, vì tôi muốn là người kiểm soát chiều rộng đầu ra. – mbaitoff

7

Sử dụng lệnh man -k '' thể liệt kê tất cả các tên người đàn ông trang có sẵn, mà có thể là tốt hơn so với findzcat man-page file dữ liệu gốc; Trong khi đó, lệnh của người đàn ông có một lựa chọn -T, --troff-device[=DEVICE] có thể tạo ra HTML của phần và tên trang người đàn ông đã cho. Vì vậy, các kịch bản bash sau nói đến chuyển đổi tất cả các nhân trang có sẵn trong Linux của bạn vào các tập tin HTML:

man -k '' | while read sLine; do 
    declare sName=$(echo $sLine | cut -d' ' -f1) 
    declare sSection=$(echo $sLine | cut -d')' -f1|cut -d'(' -f2) 
    echo "converting ${sName}(${sSection}) to ${sName}.${sSection}.html ..." 
    man -Thtml ${sSection} ${sName} > ${sName}.${sSection}.html 
done 

Trong một mạng nội bộ mà không cần kết nối Internet mà online man-pages service không có sẵn, đặt file này trong máy chủ tĩnh HTTP của bạn như vậy như Nginx với autoindex trên là một lựa chọn tốt, trong đó browse và Ctrl + F có thể thuận tiện.

+1

Có dự án tự động hóa công việc này: https: // github.com/vbem/man-to-github-pages – vbem

1
man -Hfirefox ls 

mở manpage của "ls" trực tiếp trong firefox

+1

Trên nền tảng/phiên bản nào của con người là tùy chọn này? – crobicha

+0

Xin chào @crobicha. Tôi không biết phiên bản 'man' tối thiểu hỗ trợ tùy chọn này. nhưng 'man-2.7.5' của tôi có tùy chọn' -H, --html [= BROWSER] sử dụng elinks hoặc BROWSER để hiển thị đầu ra HTML'. Vui lòng uhelp, cải thiện câu trả lời của bạn, cung cấp phiên bản 'man' tối thiểu và trích xuất từ ​​trang man' man'. Nói cũng không trả lời câu hỏi OP để chuyển đổi ** TẤT CẢ ** trang địa phương thành HTML hoặc đánh dấu. Chúc mừng – olibre

+0

Có dòng lệnh ngắn hơn: 'man -H ls' nhưng biến môi trường' BROWSER' phải được đặt trước: 'export BROWSER = firefox' – olibre

Các vấn đề liên quan