การแปลง Linux man page ให้เป็น HTML

man page บางคำสั่งบน Linux/UNIX นั้น นอกจากจะอธิบายวิธีการใช้งานโปรแกรมแล้ว จะพูดถึงพื้นฐานของคำสั่งนั้นด้วยด้วย บางคำสั่งมีขนาดยาวมากๆ หลายหน้าจอ ซึ่งอาจไม่สะดวกอ่าน หรือทำให้เมื่อยล้าต่อการศึกษาทำความเข้าใจ โดยเฉพาะส่วนตัวผมเองนั้น ไม่ชอบการอ่านบนหน้าจอนานๆ

วิธีการหนึ่งที่ผมใช้คือ ผมจะแปลงไฟล์ manual page ให้เป็นไฟล์ HTML โดยใช้คำสั่ง man2html ก่อนเพื่อนำไปสั่งพิมพ์ ซึ่งข้อดีนอกจากการจัดรูปแบบตัวอักษรของไฟล์ HTML แล้ว ยังมีการสร้างลิ้งค์เชื่อมโยงในแต่ละหัวข้อให้ด้วย ซึ่งจะสะดวกในการอ้างอิง

ไฟล์ man page บนลินุกซ์จะถูกเก็บไว้ใน /usr/share/man/ โดยจะถูกแบ่งย่อยเป็น directory ต่างๆ เช่น man1, man2, man3 ตามแต่ประเภทของคำสั่ง ตัวอย่างเช่นไฟล์ man page ของคำสั่ง ls คือ /usr/share/man/man1/ls.1.gz ซึ่งไฟล์จริงๆ จะเป็นไฟล์ชนิดที่เรียกว่า troff และจะถูก gzip ไว้

ตัวอย่างของไฟล์ man page ของคำสั่ง ls

[root@server ~]# cd /tmp
[root@server tmp]# cp /usr/share/man/man1/ls.1.gz 
[root@server tmp]# ls -l ls.1.gz
-rw-r--r-- 1 root root 3025 2008-08-24 01:32 ls.1.gz
[root@server tmp]# gzip -dv ls.1.gz
ls.1.gz:         60.0% -- replaced with ls.1
[root@server tmp]# file ls.1
ls.1: troff or preprocessor input text
[root@server tmp]# head ls.1
.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.35.
.TH LS "1" "January 2008" "GNU coreutils 6.9.92.4-f088d-dirty" "User Commands"
.SH NAME
ls \- list directory contents
.SH SYNOPSIS
.B ls
[\fIOPTION\fR]... [\fIFILE\fR]...
.SH DESCRIPTION
.\" Add any additional description here
.PP
...

เราจะใช้คำสั่ง man2html เพื่อแปลไฟล์ man page นี้เป็น HTML สำหรับการพิมพ์

ตัวอย่างการใช้คำสั่ง man2html

[root@server tmp]# man2html ls.1  > ls.html
[root@server tmp]# head ls.html
Content-type: text/html
<HTML><HEAD><TITLE>Manpage of LS</TITLE>
</HEAD><BODY>
<H1>LS</H1>
Section: User Commands (1)<BR>Updated: January 2008<BR><A HREF="#index">Index</A>
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
...

ซึ่งไฟล์ HTML ที่สร้างได้ จะมีการจัดรูปแบบตัวอักษร เช่นตัวหนา หรือทำลิ้งค์เชื่อมโยงในแต่ละหัวข้อได้ด้วย

Leave a Reply

Your email address will not be published.