คำสั่ง man: วิธีใช้และออปชัน หมายเลขเซกชัน และการค้นหาด้วย man -k
เมื่อต้องการดูวิธีใช้คำสั่งหรือไฟล์ตั้งค่าบนเซิร์ฟเวอร์ Linux ให้เปิดหน้าคู่มือด้วยคำสั่ง man และถ้าไม่รู้ชื่อ ให้ค้นหาคำอธิบายสั้นด้วย man -k เมื่อค้นหาหน้า passwd บนเซิร์ฟเวอร์ AlmaLinux 9 และ Debian 12 พบว่า Debian 12 มีทั้งหน้าคำสั่งในเซกชัน 1 และหน้ารูปแบบไฟล์ในเซกชัน 5 แต่ AlmaLinux 9 ไม่มีหน้าในเซกชัน 5
ผลลัพธ์ด้านล่างได้จากเซิร์ฟเวอร์ AlmaLinux 9.8 ด้วยบัญชี root และจากเซิร์ฟเวอร์ Debian 12 ด้วยบัญชีทั่วไป ชื่อโฮสต์และที่อยู่การเชื่อมต่อในซิมูเลเตอร์เป็นค่าตัวอย่าง
1️⃣ วิธีใช้พื้นฐานของคำสั่ง man
เมื่อพิมพ์ชื่อคำสั่งต่อจาก man หน้าคู่มือของคำสั่งนั้นจะเปิดขึ้น man ส่งหน้าให้โปรแกรมเพจเจอร์แสดงทีละหน้าจอ จึงไม่กลับไปที่พรอมต์ทันทีหลังรัน เพจเจอร์กำหนดด้วยตัวแปรสภาพแวดล้อม MANPAGER หรือ PAGER และถ้าทั้งสองว่าง จะใช้ less
ถ้าส่งผลลัพธ์ผ่านไปป์ จะได้เฉพาะข้อความโดยไม่มีเพจเจอร์ เมื่อรับ 12 บรรทัดแรกของ [man ls] ด้วย head บรรทัดแรกมี LS(1) แล้วตามด้วยหัวข้อ NAME, SYNOPSIS และ DESCRIPTION ตามลำดับ
man ls | head -n 12LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is speci-
fied.เลข 1 ในวงเล็บของ LS(1) ในบรรทัดแรกคือหมายเลขเซกชันที่หน้านี้อยู่
ภายในหน้า [Space] แสดงหน้าจอถัดไป และ [/คำ] ตามด้วย Enter ใช้ค้นหาคำ [n] ไปยังตำแหน่งถัดไปที่มีคำเดียวกัน และ [q] ปิด man
ถ้าพิมพ์ชื่อที่ไม่มีอยู่ จะขึ้นข้อผิดพลาด [No manual entry for] และรหัสออกคือ 16
man no-such-cmd9No manual entry for no-such-cmd9echo $?16หัวข้อ EXIT STATUS ของหน้า man อธิบายว่า 16 เป็นค่าเมื่อไม่พบหน้า ไฟล์ หรือคำ อย่างน้อยหนึ่งรายการ ส่วนข้อผิดพลาดในการใช้งานคือ 1 สคริปต์จึงแยกจัดการสองกรณีนี้ได้
2️⃣ หมายเลขเซกชันของ man
ถ้ามีหน้าชื่อเดียวกันอยู่ในหลายเซกชัน man จะค้นหาตามลำดับเซกชันที่กำหนดไว้ และเปิดเฉพาะหน้าแรกที่พบ เซกชันมีตั้งแต่ 1 ถึง 9 และเซกชันที่เปิดบ่อยในงานเซิร์ฟเวอร์คือเซกชัน 1 คำสั่ง เซกชัน 5 รูปแบบไฟล์ และเซกชัน 8 คำสั่งดูแลระบบ
| เซกชัน | หน้าที่อยู่ในเซกชัน | ตัวอย่างที่เห็นบนเซิร์ฟเวอร์ AlmaLinux 9.8 |
|---|---|---|
| 1 | โปรแกรมที่รันได้และคำสั่งเชลล์ | ls, passwd, crontab, man |
| 2 | การเรียกระบบ (ฟังก์ชันที่เคอร์เนลให้บริการ) | |
| 3 | ฟังก์ชันไลบรารี | |
| 4 | ไฟล์พิเศษ (ส่วนใหญ่อยู่ใต้ /dev) | |
| 5 | รูปแบบไฟล์และข้อกำหนด เช่น /etc/passwd | crontab |
| 6 | เกม | |
| 7 | เบ็ดเตล็ด (แพ็กเกจมาโครและข้อกำหนด) | |
| 8 | คำสั่งดูแลระบบ ส่วนใหญ่สำหรับ root | useradd, mandb |
| 9 | รูทีนของเคอร์เนล (ไม่เป็นมาตรฐาน) |
crontab มีหน้าอยู่ในสองเซกชัน เพราะคำสั่งและรูปแบบไฟล์ตั้งค่าใช้ชื่อเดียวกัน เมื่อตรวจสอบด้วย [man -f crontab] บรรทัดของเซกชัน 1 และเซกชัน 5 แสดงออกมาด้วยกัน
man -f crontabcrontab (1) - maintains crontab files for individual users
crontab (5) - files used to schedule the execution of programsถ้ารัน [man crontab] โดยไม่ใส่หมายเลขเซกชัน หน้าคำสั่ง crontab ในเซกชัน 1 จะเปิดขึ้น หากต้องการดูรูปแบบของไฟล์ตั้งเวลางาน ให้ใส่ 5 ไว้หน้าชื่อ
man 5 crontab | head -n 4CRONTAB(5) File Formats CRONTAB(5)
NAME
crontab - files used to schedule the execution of programsบรรทัดแรกเปลี่ยนเป็น CRONTAB(5) และ File Formats และบรรทัด NAME ก็แสดงคำอธิบายไฟล์ตั้งเวลางานแทนคำอธิบายคำสั่ง
ถ้าเซกชันที่ระบุไม่มีหน้าชื่อนั้น จะขึ้นข้อผิดพลาด บนเซิร์ฟเวอร์ AlmaLinux 9.8 เมื่อรัน [man 5 passwd] เพื่อดูรูปแบบไฟล์ /etc/passwd ก็ขึ้นข้อผิดพลาดว่าไม่มีหน้าในเซกชัน 5
man 5 passwdNo manual entry for passwd in section 5บนเซิร์ฟเวอร์ Debian 12 [man -f passwd] แสดงบรรทัด passwd ของเซกชัน 5 ด้วย เซกชันใดมีหน้าบ้างนั้นขึ้นกับคู่มือที่ติดตั้งบนเซิร์ฟเวอร์ จึงควรตรวจสอบด้วย [man -f] ก่อนใส่หมายเลขเซกชัน
man -f passwdpasswd (1) - change user password
passwd (1ssl) - OpenSSL application commands
passwd (5) - the password fileเซกชัน 8 มีคำสั่งดูแลระบบที่ส่วนใหญ่รันด้วยบัญชี root เช่น useradd ที่ใช้สร้างบัญชี
man -f useradduseradd (8) - create a new user or update default new user information3️⃣ ออปชันของคำสั่ง man และการค้นหาด้วย -k, -f
[man -f] แสดงคำอธิบายหนึ่งบรรทัดของหน้าที่มีชื่อเดียวกัน และทำงานเหมือน whatis เมื่อรัน [man -f passwd] และ [whatis passwd] บนเซิร์ฟเวอร์ AlmaLinux 9.8 ได้สองบรรทัดเดียวกัน
man -f passwdpasswd (1) - update user's authentication tokens
passwd (1ossl) - OpenSSL application commandsบรรทัด 1ossl คือหน้าของคำสั่ง OpenSSL ที่ใช้ชื่อ passwd ร่วมกัน
ถ้าไม่รู้ชื่อ ให้ใช้ [man -k] ค้นหาชื่อหน้าและคำอธิบายสั้น ทำงานเหมือน apropos และคำที่ค้นจะถูกอ่านเป็นนิพจน์ปกติ
man -k '^passwd'passwd (1) - update user's authentication tokens
passwd (1ossl) - OpenSSL application commands^ หมายถึงต้นบรรทัด จึงแสดงเฉพาะบรรทัดที่ขึ้นต้นด้วย passwd นอกจากนี้ยังค้นด้วยคำในคำอธิบายได้ โดย [man -k 'directory contents'] พบหน้า dir และ vdir พร้อมกับ ls
man -k 'directory contents'dir (1) - list directory contents
ls (1) - list directory contents
vdir (1) - list directory contents[man -k] ค้นเฉพาะคำอธิบายสั้นในหัวข้อ NAME จึงหาหน้าด้วยชื่อออปชันหรือคำในเนื้อหาไม่ได้ ส่วน [man -K] ที่ค้นถึงเนื้อหาจะอ่านทุกหน้าตามลำดับ จึงใช้เวลานาน
ถ้าไม่มีคำที่ค้นหา จะขึ้น [nothing appropriate] และรหัสออกคือ 16
man -k no-such-word9no-such-word9: nothing appropriate.echo $?16[man -w] แสดงเฉพาะตำแหน่งของไฟล์ต้นฉบับโดยไม่เปิดหน้า
man -w ls/usr/share/man/man1/ls.1.gzman -w 5 crontab/usr/share/man/man5/crontab.5.gzไฟล์ทั้งสองอยู่ในโฟลเดอร์ man1 และ man5 ใต้ /usr/share/man และตัวเลขในชื่อโฟลเดอร์ตรงกับหมายเลขเซกชัน ไฟล์หน้า 1ossl ที่หาด้วย [man -w 1ossl passwd] ก็อยู่ในโฟลเดอร์ man1 เดียวกับเซกชัน 1
รวมออปชันไว้ในสองแท็บด้านล่าง
| ตัวเลือก | คัดลอก | คำอธิบาย |
|---|---|---|
| -f, --whatis | แสดงคำอธิบายหนึ่งบรรทัดของหน้าที่มีชื่อเดียวกัน ทำงานเหมือน whatis | |
| -k, --apropos | ค้นหาชื่อหน้าและคำอธิบายสั้น ทำงานเหมือน apropos | |
| -w, --where, --path, --location | แสดงเฉพาะตำแหน่งของไฟล์ต้นฉบับโดยไม่เปิดหน้า | |
| -a, --all | แสดงทุกหน้าที่ชื่อตรงกันตามลำดับ |
| ตัวเลือก | คัดลอก | คำอธิบาย |
|---|---|---|
| -K, --global-apropos | ค้นหาคำในเนื้อหาของทุกหน้า ใช้เวลานาน | |
| -S, -s, --sectionsรายการ | กำหนดเซกชันที่จะค้นหาและลำดับเป็นรายการที่คั่นด้วยจุลภาคหรือโคลอน | |
| -P, --pagerเพจเจอร์ | กำหนดเพจเจอร์ที่ใช้แสดงหน้า ค่าเริ่มต้นคือ less | |
| -M, --manpathพาธ | กำหนดพาธคู่มือที่ใช้ค้นหาหน้า | |
| -L, --localelocale | กำหนด locale ที่ใช้ในการรันครั้งนี้ | |
| -l, --local-file | แสดงไฟล์ที่ระบุเป็นหน้า โดยไม่ค้นหาในคู่มือของระบบ | |
| -u, --update | อัปเดตแคชดัชนีของหน้าที่ติดตั้งไว้ | |
| -V, --version | แสดงข้อมูลเวอร์ชัน |
🔲 ซิมูเลเตอร์คำสั่ง man
ในซิมูเลเตอร์ด้านล่าง เปิดหน้าด้วย [man ls] แล้วเลื่อนหน้าจอด้วยชิป [Space], [/list], [n], [q] ได้ บนเซิร์ฟเวอร์เสมือนเดียวกันยังใส่หมายเลขเซกชันอย่าง [man 5 crontab] หรือพิมพ์ [man -f], [man -k], [man -w] ได้
4️⃣ โครงสร้างของหน้า man
หน้า man แบ่งเป็นหัวข้อที่มีชื่อเป็นตัวพิมพ์ใหญ่ เมื่อดึงเฉพาะชื่อหัวข้อด้วย grep มาเทียบกัน หน้า ls มีคำอธิบายออปชันอยู่ใน DESCRIPTION ส่วนหน้า crontab มีหัวข้อ OPTIONS แยกต่างหาก
man ls | grep -E '^[A-Z]+( [A-Z]+)*$'NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSOman crontab | grep -E '^[A-Z]+( [A-Z]+)*$'NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHORชื่อหัวข้อต่างกันเล็กน้อยในแต่ละหน้า และหัวข้อที่พบบ่อยมีดังนี้
| หัวข้อ | เนื้อหาที่อยู่ในหัวข้อ |
|---|---|
| NAME | ชื่อและคำอธิบายหนึ่งบรรทัด (บรรทัดที่ man -f และ man -k แสดง) |
| SYNOPSIS | รูปแบบการพิมพ์คำสั่ง |
| DESCRIPTION | คำอธิบายการทำงาน (หน้า ls ใส่คำอธิบายออปชันไว้ในหัวข้อนี้ด้วย) |
| OPTIONS | หนึ่งย่อหน้าต่อหนึ่งออปชัน |
| EXIT STATUS | ความหมายของรหัสออก |
| FILES | ไฟล์ที่คำสั่งอ่านหรือเขียน |
| SEE ALSO | หน้าที่ควรดูประกอบ |
สัญลักษณ์ใน SYNOPSIS เป็นไปตามกฎที่หน้า man กำหนด สิ่งที่อยู่ในวงเล็บเหลี่ยมละได้ ออปชันที่คั่นด้วยเส้นตั้ง (|) ใช้ร่วมกันไม่ได้ และอาร์กิวเมนต์ที่มีจุดสามจุด (...) ต่อท้ายเขียนได้หลายครั้ง
SYNOPSIS ของ ls คือ ls [OPTION]... [FILE]... จึงละได้ทั้ง ออปชันของคำสั่งและอาร์กิวเมนต์บรรทัดคำสั่งอย่างชื่อไฟล์ทั้งหมด หรือจะเขียนหลายตัวก็ได้
[--help] เป็นสรุปวิธีใช้ที่โปรแกรมแสดงเอง จึงออกที่เทอร์มินัลโดยตรงโดยไม่มีเพจเจอร์ Usage ในบรรทัดแรกของ [ls --help] มีรูปแบบเดียวกับ SYNOPSIS และความยาวทั้งหมดคือ 121 บรรทัด สั้นกว่า 245 บรรทัดของ [man ls]
ls --help | head -n 3Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.หน้า man ยังมีหัวข้ออื่นที่ไม่มีใน [--help] เช่น AUTHOR และ SEE ALSO เมื่อต้องการดูออปชันเดียวอย่างรวดเร็วให้ใช้ [--help] และเมื่อต้องการคำอธิบายที่แบ่งเป็นหัวข้อ เช่น รูปแบบไฟล์ตั้งค่าหรือรหัสออก ให้เปิด man
🔢 FAQ & เนื้อหาแนะนำ
ตั้งเวลางาน
Linux: ตั้งค่า crontab
วิธีตั้งเวลาให้งานบนเซิร์ฟเวอร์รันตามเวลาที่กำหนดด้วยคำสั่ง crontab
ค้นหาตำแหน่ง
คำสั่ง which, whereis, locate ของ Linux: 3 คำสั่งตรวจสอบตำแหน่ง (พาธ)
คำสั่งสำหรับหาว่าไฟล์รันและไฟล์คู่มือของคำสั่งอยู่ในพาธใด
ส่งต่อผลลัพธ์
รีไดเรกชันบน Linux (Redirection)
การไหลของอินพุตมาตรฐานและเอาต์พุตมาตรฐานที่ส่งผลลัพธ์ของคำสั่งไปยังไฟล์หรือคำสั่งอื่น
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน