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"> </A> <H2>NAME</H2> ...
ซึ่งไฟล์ HTML ที่สร้างได้ จะมีการจัดรูปแบบตัวอักษร เช่นตัวหนา หรือทำลิ้งค์เชื่อมโยงในแต่ละหัวข้อได้ด้วย