วันอังคารที่ 18 พฤศจิกายน พ.ศ. 2551

คำสังของ Linux

คำสังเบื้องต้นของยูนิกซ์และลีนุกซ์
เนื่องจากลีนุกซ์ถูกพัฒนาขึ้นมาโดยอาศัยรูปแบบส่วนใหญ่มาจากยูนิกซ์ และผู้พัฒนาระยะ แรกๆก็เป็นผู้เชี่ยวชาญยูนิกซ์เป็นส่วนใหญ่ ดังนั้นหากเรียนรู้ยูนิกซ์เราก็จะรู้ลีนุกซ์ด้วยเช่นเดียวกัน
หลังจากความพยายามอันยาวนานของคุณ เครื่องพีซีของคุณก็เริ่มบูตลีนุกซ์ และต้อนรับคุณด้วยหน้าจอรับชื่อผู้ใช้และรหัสผ่าน จะสังเกตุเห็นว่าลักษณะคล้ายกับ เวลาต่อโมเด็มเข้าไปที่โฮสต์ของ ISP (Internet Service Provider) เมื่อเราต้องการจะใช้งานอินเทอร์เนต คุณได้ใส่ชื่อผู้ใช้ ถ้าคุณเป็นคนติดตั้งเอง แน่นอนที่ว่าคุณจะต้องใส่ชื่อผู้ใช้เป็น root ซึ่งแสดงถึงความเป็น super user ซึ่งเป็นเจ้าของระบบและตามด้วยรหัสผ่านที่คุณได้ให้ไว้ในขั้นตอนการติดตั้ง
Login :
root Password : ********
เมื่อคุณใส่รหัสผ่านได้ถูกต้อง ระบบจะอนุญาตให้คุณเข้ามาใช้งานในระบบได้ ซึ่งจะแสดงเครื่องหมายพร้อมพท์ เตรียมรับคำสั่ง ในกรณีที่ทำการล็อกอินเข้ามาด้วย super user เครื่องหมายพร้อมพท์จะแสดงเป็น "#" แต่ถ้าเข้ามาในฐานะผู้ใช้ปกติเครื่องหมายจะแสดงเป็น "$"
คุณก็สามารถเข้ามาในระบบแล้ว และก็น่าจะลองสั่งแสดงชื่อไฟล์ดูสักหน่อยโดยใช้คำสั่ง ls ซึ่งย่อมาจาก list directory
# ls
mbox
คำสั่งนี้จะคล้ายกับ DIR ในดอสและมันก็แสดงรายชื่อไฟล์ออกมา ซึ่งตอนนี้มีอยู่หนึ่งไฟล์คือ mbox คำสั่งในยูนิกซ์จะแตกต่างจากดอส คือเป็นลักษณะที่เรียกว่า case-sensitive หมายความว่าตัวอักษรตัวใหญ่ และตัวอักษรตัวเล็กจะมีความแตกต่างกัน เช่น cat และ Cat จะมีความแตกต่างกัน ดังนั้นเราจะต้องระวังสะกดตัวอักษรให้ถูกต้องตามคำสั่งที่มีอยู่ในคู่มือด้วย
ตอนนี้คุณควรเรียนรู้คำสั่งที่สำคัญสองคำสั่ง คำสั่งแรก คือคำสั่งเมื่อคุณจะเลิกใช้งานระบบ ถ้าคุณต้องการพักการใช้งาน เพื่อเข้าไปใช้อีกครั้งโดยใช้ชื่อล็อกอินของผู้ใช้คนอื่น คุณต้องใช้คำสั่ง
logout
หรือ
exit
และแล้วคุณก็จะกลับออกมาสู่หน้าจอ ของการรอรับชื่อผู้ใช้และรหัสผ่านอีกครั้งหนึ่ง แต่ในกรณีที่คุณต้องการจะเลิกใช้งานเลย คุณจะปิดเครื่องเฉยๆเลยเหมือนกับการใช้งานดอสไม่ได้ คุณจะต้องสั่งให้ระบบทำการเก็บข้อมูลทุกสิ่งทุกอย่างจากหน่วยความจำลงไปเก็บไว้ในฮาร์ดดิสก์ทั้งหมด และบางทีอาจจะต้องมีการหยุดโปรแกรมที่รันทิ้งไว้ในหน่วยความจำบางงาน ไม่ต้องเป็นกังวลกับงานพวกนี้ คุณใช้แค่คำสั่งเดียวเท่านั้น แต่อย่าลืม คุณจำเป็นจะต้องเป็น root หรือเป็นผู้ใช้ที่มีฐานะเทียบเท่ากับ root
# /sbin/shutdown -h now สั่งชัตดาวน์ (ยุติการทำงานระบบ) และหยุดเครื่อง
# /sbin/shutdown -r now สั่งชัตดาวน์ และให้ระบบทำการบูตใหม่
พารามิเตอร์ "now" ข้างหลังคือบอกให้กระทำคำสั่งในทันที ถ้าใส่ตัวเลขก็จะถือเป็นการ หน่วงเวลาก่อนจะกระทำคำสั่ง เมื่อชัตดาวน์เสร็จแล้วและถ้าเป็นการสั่งแบบหยุดเครื่อง คุณก็สามารถปิดสวิทช์เครื่องของคุณได้เลย
ในกรณีที่คุณเข้าใช้งานด้วย ชื่อทะเบียนผู้ใช้ธรรมดา และต้องการเปลี่ยนระดับ (permission) ไปเป็น root ก็ให้ใช้คำสั่ง
$ su root (หรือ su เฉยๆ)
password : ********
#<--- สังเกตที่พร้อมพท์ '#'
หมายความว่าคุณมีฐานะเทียบเท่าrootแล้วคราวนี้คุณก็สามารถสั่งชัตดาวน์ตามคำสั่งข้างบนได้
การใช้คำสั่งบนลีนุกซ์
คำสั่งแรกก็คือ cat ให้ทดลองพิมพ์คำว่า cat ที่พร้อมพต์แล้วกดปุ่ม Enter $ cat
จะปรากฎเคอร์เซอร์รอรับคำสั่งในบรรทัดถัดมา ให้ทดลองพิมพ์ประโยคลงไปสักหนึ่งบรรทัด กดปุ่ม Enter แล้วตรวจผลที่เกิดขึ้น
$ cat
This is a cat
This is a cat
จะสังเกตุเห็นว่า เมื่อเราพิมพ์ประโยคใดลงไป cat จะพิมพ์ประโยคที่เราพิมพ์นั้นออกมาที่หน้าจอภาพ หากต้องการจะออกจากโปรแกรม cat ให้กดปุ่ม Ctrl-d ซึ่งจะหมายถึง การส่งสัญลักษณ์ end-of-file (EOF) ไปให้กับโปรแกรม นั่นหมายความว่าเรา (หรืออาจเป็นโปรแกรมอื่นๆ) ได้บอกกับโปรแกรม cat ให้ทราบว่า จบการอ่านข้อมูลแล้ว โปรแกรม cat จะรับทราบและหยุดการทำงาน โปรแกรมลักษณะเดียวกับ cat นี้มีมากบนยูนิกซ์ และโดยมากมักจะมีขนาดเล็กและมีจุดมุ่งหมายในการใช้งานจำเพาะ ซึ่งมักจะเรียกว่า utility program และโดยมากเราสามารถกดปุ่ม Ctrl-d เพื่อทำการเลิกใช้งาน utility program เหล่านั้นได้ ให้ทดลองใช้งานโปรแกรม sort แล้วสังเกตุผลลัพธ์ที่เกิดขึ้นว่า มันทำงานอย่างไรหากคุณทดลองเรียกใช้งานโปรแกรม sort แล้ว และลองพิมพ์ข้อมูลลงไปสองบรรทัด และจบการทำงานของโปรแกรมด้วยการกด Ctrl-d คุณจะเห็นว่ามันจะทำการพิมพ์ผลลัพธ์ออกมาสองบรรทัดซึ่งเป็นข้อมูลที่คุณพิมพ์เข้าไป แต่พิมพ์ออกมาในลักษณะที่เรียงลำดับกัน
ขอความช่วยเหลือจากระบบ
ระบบยูนิกซ์จะมีระบบให้ความช่วยเหลือ ซึ่งเป็นเอกสารที่อธิบายความหมายและการใช้งาน คำสั่งต่างๆให้ทราบอย่างคร่าวๆ ซึ่งจะคล้ายกับ help ในดอส แต่ในยูนิกซ์คุณจะต้องใช้คำสั่ง man ซึ่งย่อมาจาก manual ตัวอย่าง ถ้าคุณต้องการจะทราบรายละเอียดเกี่ยวกับคำสั่ง cat ให้คุณใช้คำสั่งดังนี้
$ man cat
CAT(1) CAT(1)
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [-benstuvAET] [--number] [--number-nonblank]
[--squeeze-blank] [--show-nonprinting] [--show-ends]
[--show-tabs] [--show-all] [--help] [--version] [file...]
DESCRIPTION
This documentation is no longer being maintained and may
be inaccurate or incomplete. The Texinfo documentation is
now the authoritative source.
This manual page documents the GNU version of cat. cat
writes the contents of each given file, or the standard
input if none are given or when a file named `-' is given,
to the standard output.
OPTIONS
-b, --number-nonblank
คำสั่งนี้จะแสดงรายละเอียดเกี่ยวกับคำสั่ง man มาหนึ่งหน้า ซึ่งบางทีคุณอาจจะไม่เข้าใจทั้งหมด ทั้งนี้เราจะต้องมีความรู้ของยูนิกซ์บางอย่างก่อน และโชคร้ายที่ไม่มีคำอธิบายคำสั่งบนยูนิกซ์ออกมาเป็นภาษาไทย เนื่องจากยังไม่มีผู้คิดจะทำ
ในด้านล่างของคำอธิบาย จะมีเครื่องหมาย ":" หรือ "-more-,Line1" หรือที่คล้ายกัน ซึ่งเป็นเครื่องหมายพร้อมพต์ของโปรแกรม more หรือ page (แล้วแต่กรณี) จุดประสงค์คือ เนื่องจากคำอธิบายคำสั่งของยูนิกซ์นั้น อาจมีความยาวมากกว่าหนึ่งหน้า ดังนั้นการใช้ more หรือ page เข้ามาช่วย จะทำให้เราสามารถหยุดอ่านเอกสารในแต่ละหน้าได้ทัน คุณสามารถกดปุ่ม spacebar เพื่อสั่งให้เปิดคำอธิบายในหน้าถัดไป หรือกดปุ่ม q เพื่อออกจากระบบให้ความช่วยเหลือ
หากคุณต้องการค้นหาหัวข้อเกี่ยวกับคำ (keyword) ที่คุณสนใจ ตัวอย่างเช่นคุณอาจสนใจ คำว่า "ps" หรือ "Postscript" และคุณต้องการคำอธิบายเพิ่มเติม คุณสามารถใช้ man เข้ามาช่วยในกรณีนี้ได้โดยใช้คำสั่ง
man -k ps
และ
man -k Postscript
man จะทำการแสดงหัวข้อที่เกี่ยวข้องกับที่เราต้องการค้นหาออกมา วิธีนี้จะมีประโยชน ในกรณีที่คุณไปเจอ keyword หรือคำที่คุณไม่ทราบความหมายต่างๆ
โครงสร้างของระบบไฟล์และไดเรกทอรี
ในระบบยูนิกซ์ทำการเก็บข้อมูลโดยใช้ ไฟล์ และ ไดเรกทอรี เข้ามาช่วย โดยจะมีลักษณะเป็นรูปแบบของ heirachy หรือโครงสร้างแบบต้นไม้ หากคุณค้นเคยกับดอสมาก่อน จะเห็นว่ามีรูปแบบการเก็บข้อมูลที่คล้ายกัน เพียงแต่การใช้งานจะแตกต่างกันบ้าง ไดเรกทอรีจะเปรียบเสมือนแฟ้ม ที่สามารถเก็บไฟล์ต่างๆ (เหมือนกับกระดาษ) ในไดเรกทอรีลำดับบนๆ ก็เหมือนกับแฟ้มขนาดใหญ่ ซึ่งนอกจากจะเก็บไฟล์ได้แล้วก็ยังสามารถเก็บไดเรกทอรีอื่นๆได้ด้วย
ไดเรกทอรีลำดับบนสุดจะถูกเรียกว่า ไดเรกทอรีราก (root directory) ซึ่งจะประกอบไปด้วยไฟล์และไดเรกทอรีต่างๆ ในไดเรกทอรีที่ย่อยลงมาก็อาจจะประกอบไปด้วยไฟล์และไดเรกทอรีไปเรื่อยๆ ในไฟล์แต่ละไฟล์จะต้องมีชื่ออยู่ จะมีชื่ออยู่สองแบบที่ใช้อ้างถึงไฟล์ได้ คือชื่อแบบยาว และชื่อแบบสั้น ตัวอย่างชื่อแบบสั้นก็คือ "note" และถ้าจะอ้างถึงชื่อแบบยาว ก็อาจจะอ้างได้เป็น "/home/mary/note"
ให้สังเกตุชื่อยาวของไฟล์นี้ ตัวอักษรซ้ายสุดคือ "/" ซึ่งจะระบุถึงไดเรกทอรีราก ซึ่งเป็นไดเรกทอรีลำดับบนสุด ในไดเรกทอรีรากนี้จะมีไดเรกทอรี "home" บรรจุอยู่และภายใต้ไดเรกทอรี "home" ก็จะมีไดเรกทอรี "mary" ไฟล์ "note" ของเราก็จะอยู่ภายใต้ไดเรกทอรี "mary" นั่นเอง สรุปคือ ในการอ้างถึงชื่อแบบยาว ชื่อทั้งหมดก่อนหน้าชื่อไฟล์ (คือ "/home/mary") จะเป็นชื่อของไดเรกทอรี ส่วนชื่อ "note" จึงจะเป็นชื่อของไฟล์จริงๆการขอดูชื่อของไฟล์
ดังที่ได้แนะนำแล้วในตอนต้น คุณสามารถจะใช้คำสั่ง "ls" เพื่อจะดูไฟล์ต่างๆ ได้ ถ้าหากคุณใช้คำสั่ง "ls" ในไดเรกทอรีที่ไม่มีไฟล์ คุณจะไม่เห็นผลลัพธ์ใดๆ (ตรง ข้ามกับดอสที่จะบอกว่า No file found) วิธีนี้เป็นรูปแบบของยูนิกซ์ที่บอกคุณให้ทราบว่าไม่มีไฟล์อะไรอยู่ในไดเรกทอรีนี้
ในการใช้งานยูนิกซ์จะมีคำพูดวลีหนึ่งคือ "No news is good news" นั่นคือระบบยูนิกซ์ จะมีการแจ้งข้อความออกมาให้น้อยที่สุด และถ้ามีการแจ้งมาแล้ว หมายความว่าอาจมีปัญหา บางอย่างเกิดขึ้น จากโครงสร้างของไดเรกทอรีข้างบนคุณอาจสงสัยว่า ในระบบยูนิกซ์มีไดเรกทอรีตั้งมากมาย และก็น่าจะมีไฟล์เป็นจำนวนมากด้วย ทำไมเมื่อสั่งแสดงผลด้วย ls ถึงปรากฏผลลัพธ์ออกมา เป็นไฟล์เพียงไม่กี่ไฟล์ ทั้งนี้ก็เนื่องจากคำสั่ง ls จะทำการแสดงชื่อของไฟล์และไดเรกทอรี ที่มีอยู่ในไดเรกทอรีที่คุณอยู่ในขณะนั้น หรือ ไดเรกทอรีปัจจุบัน (current directory)
คุณสามารถจะระบุให้แสดงชื่อของไฟล์ที่มีอยู่ในไดเรกทอรีอื่นก็ได้เช่น
# ls /
bin etc lost+found opt sbin var
boot home mnt proc tmp
dev lib net root usr
คำสั่งนี้จะเป็นการแสดงชื่อของไฟล์และไดเรกทอรีที่มีอยู่ในไดเรกทอรีรากออกมา หากคุณต้องการให้มันแสดงด้วยว่าชื่อไหนเป็นไฟล์ ชื่อไหนเป็นไดเรกทอรี หรือเป็นไฟล์ ชนิดพิเศษ คุณจะต้องระบุตัวเลือก (option) เพิ่มเติมคือ option "-F" ตัวอย่าง
# ls -F /
bin/ etc/ lost+found/ opt/ sbin/ var/
boot/ home/ mnt/ proc/ tmp/
dev/ lib/ net/ root/ usr/
ให้คุณทดลองใช้คำสั่ง ls กับไดเรกทอรีอื่นๆดู โดยทั่วไปแล้วคำสั่งในยูนิกซ์ส่วนใหญ่ จะต้องมีการระบุ option ด้วย ซึ่งถ้าคุณใช้ man ดูคุณอาจจะเห็น รูปแบบของการใช้งานคำสั่งคล้ายๆกับดังต่อไปนี้
ls [-arF] [directory]
นี่คือ รูปแบบ (template) ของคำสั่ง คุณจะสังเกตุเห็นเครื่องหมาย "[" และ "]" สิ่งที่ระบุไว้ในเครื่องหมายก้ามปูดังกล่าว หมายความว่าเป็น option เราอาจจะใส่หรือ ไม่ใส่ไว้ก็ได้
การปฏิบัติการกับไดเรกทอรี
หากคุณต้องการอยากจะทราบว่าคุณกำลังอยู่ ณ ไดเรกทอรีไหนในขณะนี้ คุณสามารถใช้คำสั่ง pwd
เพื่อให้แสดงชื่อของไดเรกทอรีที่คุณกำลังอยู่ในขณะนั้นออกมาได้ (current directory) pwd ย่อมาจากคำว่า print work directory และถ้าคุณต้องการย้ายเปลี่ยนไปอยู่ไดเรกทอรีอื่น คุณสามารถใช้คำสั่ง cd ได้ คำสั่ง นี้โดยมีรูปแบบคือ
cd [directory]
โดยถ้าหากคุณสั่ง cd เฉยๆ จะหมายความว่า คุณต้องการจะกลับไปที่ไดเรกทอรีแรกสุดที่ คุณเข้ามาหลังจากทำการล็อกอิน (home directory)
ในทุกไดเรกทอรีจะมีรูปแบบที่ใช้การอ้างถึง ไดเรกทอรีที่อยู่ลำดับเหนือขึ้นไป และ ไดเรกทอรีที่หมายถึงไดเรกทอรีตนเอง คือ cd .. หมายถึงต้องการย้ายไปอยู่ไดเรกทอรีที่อยู่ลำดับเหนือขึ้นไปและ cd . หมายถึงระบุไดเรกทอรีตนเอง (current directory)
ดังนั้นการอ้างชื่อของไฟล์ note ข้างบนนอกจากจะอ้างด้วยชื่อเต็มและชื่อแบบสั้นแล้ว ยังสามารถอ้างได้อีกแบบ (ในกรณีที่ไดเรกทอรีปัจจุบันเป็น "/home/mary") คือ
./note
และถ้าหากคุณต้องการสร้างไดเรกทอรีใหม่ คุณสามารถใช้คำสั่ง
mkdir [directory]
หากต้องการลบไดเรกทอรี ก็ให้ใช้คำสั่ง
rm [directory]
การปฏิบัติการกับไฟล์
ในระบบยูนิกซ์เป็นระบบที่เกี่ยวข้องกับผู้ใช้หลายคน ดังนั้นระบบยูนิกซ์จึงมีการกำหนดเกี่ยวกับเรื่องสิทธิ์ที่จะเข้าถึงแฟ้มข้อมูล (file permission) ในระบบได้ ซึ่งคุณสามารถจะขอดู permission ของไฟล์ได้จากคำสั่ง
$ ls -l
drwxr-xr-x 2 root root 1024 Nov 17 21:49 axhome
drwxr-xr-x 2 root root 1024 Dec 28 13:57 backup
-rw------- 1 root root 6 Mar 31 23:26 dead.letter
-rw------- 1 root root 3075 Apr 15 03:49 mbox
คุณจะเห็นคอลัมน์แรก ซึ่งจะเป็นคอลัมน์ที่ระบุเกี่ยวกับเรื่อง permission ของไฟล์ type คือชนิดของไฟล์ ถ้าหากไม่ระบุ (-) จะหมายความว่าเป็นไฟล์ปกติ แต่ถ้าหากเป็น (d) จะหมายความว่าเป็นไดเรกทอรี และถ้าเป็น (b) จะหมายถึงเป็น device file แบบ block หากเป็น (c) หมายถึง device file แบบ character นอกจากนั้นยัง มีรูปแบบชนิดอื่นๆอีก
user permission จะระบุระดับการอนุญาตให้เข้าถึงไฟล์ในระดับผู้ใช้ (ตัวเอง)
r จะหมายถึง "อ่านไฟล์ได้" (readable)
w จะหมายถึง "เขียนไฟล์ได้" (writable)
x จะหมายถึง "สามารถเรียกใช้งานได้ หรือรันได้" (executable)
group permission จะระบุระดับการอนุญาตให้เข้าถึงไฟล์ในระดับกลุ่มผู้ใช้ (group) ซึ่งจะมีรูปแบบเหมือนกับ user permission
other permission จะระบุระดับการอนุญาตให้เข้าถึงไฟล์ในระดับผู้ใช้รายอื่นๆ ที่ไม ได้อยู่กลุ่มเดียวกัน รูปแบบก็จะเหมือนกันกับ user permission
ในระบบยูนิกซ์จะมีไฟล์ที่มองไม่เห็นอยู่ด้วย (hidden file) ซึ่งไฟล์เหล่านี้เมื่อ ใช้คำสั่ง ls ธรรมดาจะไม่สามารถมองเห็นได้ เราจะต้องใช้ option -a ดังตัวอย่าง
# ls -a
. .saves-622-daffy.kaiwal.com~
.. .seyon
.FVWM95-errors .tcshrc
.Xauthority .tin
.Xclients .xboing-scores
.Xclients,bkp .xfm
.Xdefaults .xsession
.bash_history .xsession-errors
.bash_logout axhome
.bash_profile backup
.bashrc dead.letter
.cshrc mbox
hidden file เหล่านี้จะถูกนำหน้าด้วย จุด "." ซึ่งถ้าเราไม่ใช้ option -a ก็จะ มองไม่เห็นไฟล์เหล่านั้น โดยทั่วไปมักจะใช้ไฟล์แบบนี้เพื่อเก็บข้อมูลเฉพาะของรูปแบบ การทำงานของผู้ใช้ (user environment) เช่น .bash_profile , .xsession เป็นต้น
COPY
เราสามารถทำการสำเนาแฟ้มข้อมูล (หรืออาจจะเป็นไดเรกทอรีด้วยก็ได้) โดยใช้คำสั่ง cp file1 file2
คำสั่งข้างบนจะทำการสำเนาแฟ้มข้อมูล (copy) จาก file ไปเป็นชื่อ file2
REMOVE
หากต้องการทำการลบแฟ้มข้อมูล (หรืออาจจะเป็นไดเรกทอรี) ก็สามารถใช้คำสั่ง rm filename
MOVE
เราสามารถใช้คำสั่ง mv เพื่อทำการย้ายแฟ้มจากไดเรกทอรีหนึ่ง ไปสู่อีกไดเรกทอรีหนึ่ง mv filename directory
คำสั่งข้างบนจะทำการย้ายแฟ้มชื่อ filename จากไดเรกทอรีปัจจุบัน ไปสู่ไดเรกทอรีที่ ชื่อ directory นอกจากนี้เราสามารถใช้คำสั่ง mv เพื่อใช้ทำการเปลี่ยนชื่อไฟล์ได้ mv file1 file2
คำสั่งนี้จะทำการเปลี่ยนชื่อจาก file1 ไปเป็นชื่อ file2
การใช้ wildcard
คุณได้เรียนรู้เรื่องของ การจัดการเกี่ยวกับไฟล์บนลีนุกซ์มาแล้ว ต่อไปนี้เราจะเรียนรู้คำสั่งเพิ่มเติมเพื่อที่จะสามารถใช้คำสั่งเหล่านั้นให้มีประสิทธิภาพยิ่งขึ้น
หากคุณต้องการทำสำเนาแฟ้มข้อมูลจากไดเรกทอรีปัจจุบันไปยังไดเรกทอรีอื่น ในจำนวนหลายไฟล์ คุณอาจจะต้องใช้คำสั่ง "cp" และสั่งซ้ำๆกันหลายครั้งเพื่อที่จะทำการสำเนาไฟล์ให้ครบตามความต้องการ เราจะใช้ความสามารถของ wildcard เข้ามาช่วยเพื่อให้การใช้คำสั่งเป็นไปได้อย่างสะดวกขึ้น
ตัวอย่าง : คุณต้องการทำการสำเนาไฟล์ทั้งหมดจากไดเรกทอรีปัจจุบันไปยังไดเรกทอรีที่ชื่อว่า backup ให้คุณใช้คำสั่งต่อไปนี้
cp data* ~/backup เครื่องหมายดอกจัน (*) หมายถึงคุณสั่งให้ระบบทำการสำเนาไฟล์ที่มีชื่อขึ้นต้นด้วย data ทั้งหมดไปไว้ที่ไดเรกทอรี ~/backup
เราสามารถใช้เครื่องหมายตัวหนอน (~)เพื่อแทนความหมายของ home directory ได้ซึ่ง home directory ก็คือไดเรกทอรีของเจ้าตัวผู้ใช้งานนั่นเอง ซึ่งจะเป็นไดเรกทอรีแรกที่เราทำการล็อกอินเข้ามาใช้งาน โดยปกติ home directory ของ super user จะเป็น /root สำหรับตัวอย่างข้างบน หาก home directory ของเราเป็น /home/peter การอ้าง ถึง ~/backup จะหมายความถึง /home/peter/backup นั่นเอง
ให้คุณทดลองใช้คำสั่งดูว่า
cp d*w ~/backup
จะทำงานอย่างไร
การใช้เครื่องหมายอัศเจรีย์ (?)
การใช้เครื่องหมาย ? จะหมายถึงแทนตัวอักษรอะไรก็ได้ จำนวนเท่ากับจำนวนของเครื่องหมาย ? นั้น ตัวอย่างเช่น
cp abc.d?? ~/backup
จะหมายถึงให้ทำการสำเนาไฟล์ ที่มีชื่อเป็น abc และมีนามสกุลที่ขึ้นต้นด้วย d และลง ท้ายด้วยตัวอักษรอะไรก็ได้สองตัว ไปไว้ที่ไดเรกทอรี ~/backup
UNIX concept
standard input/output
ยูนิกซ์จะเรียกอุปกรณ์ที่นำข้อมูลเข้าว่า standard input (stdin) ซึ่งโดยปกติจะเป็น keyboard และอุปกรณ์ที่แสดงผลลัพธ์ออกมาว่า standard output (stdout)ซึ่งโดยปกติ ก็จะเป็น monitor หรือจอภาพนั่นเอง เหตุที่ไม่ได้กำหนดระบุไปอย่างตายตัวว่าต้องเป็น คีย์บอร์ดหรือจอภาพเลย ก็เนื่องจากว่า อุปกรณ์เหล่านี้สามารถมีการเปลี่ยนแปลงให้เป็นอุปกรณ์ชนิดอื่นๆได้
ตัวอย่างเช่นผลลัพธ์จากคำสั่ง ls จะถูกแสดงออกมาที่ standard output หรือจอภาพ ในขณะที่โปรแกรมเช่น ยูนิกซ์เชลล์ต่างๆ จะคอยรับคำสั่งจากผู้ใช้ผ่านทาง standard input นอกจากอุปกรณ์ทั้งสองอย่างนี้แล้ว ยูนิกซ์ยังอาจแสดงข้อผิดพลาดออกมาทาง standard error (stderr) ได้อีกด้วย เราอาจสามารถกำหนดให้อุปกรณ์ของ standard error เป็นอุปกรณ์เดียวกับ standard input (คือจอภาพ) หรือไม่ก็ได
การทำ redirection
การเปลี่ยนทิศทางของการแสดงผลลัพธ์ (output redirection) ซึ่งจะมีประโยชน์ในการเก็บ ผลลัพธ์ของคำสั่งต่างๆนั้นลงไปเก็บไว้ในไฟล์ หรือนำออกไปพิมพ์ผ่านทางเครื่องพิมพ์ แทนที่จะพิมพ์ออก ทางหน้าจอตามปกติ เราสามารถสั่งให้ยูนิกซ์ทำการเปลี่ยนทิศทางของ การแสดงผลลัพธ์ได้โดยการใช้เครื่องหมายมากกว่า (>) ต่อท้ายคำสั่งเช่น
ls -l > listing
คำสั่งนี้จะแสดงรายชื่อไฟล์ในไดเรกทอรีปัจจุบันออกมา และนำไปเก็บไว้ในไฟล์ที่ชื่อ listing หากใช้การเปลี่ยนทิศทางของการแสดงผลลัพธ์กับคำสั่ง cat ดังตัวอย่าง
cat > myfile
This is a cat in a file ^D
เมื่อเราพิมพ์ข้อความต่างๆลงไป และสิ้นสุดด้วยการกด Ctrl-d แล้วนั้น ระบบจะไม่นำเอาข้อความที่เราพิมพ์ลงไปแสดงออกมาที่หน้าจอ แต่จะเก็บลงไปในไฟล์ที่ชื่อว่า myfile แทน คุณสามารถสั่งให้ระบบแสดงข้อความในไฟล์ออกมาได้โดยใช้คำสั่ง cat myfile
จะเห็นข้อความที่ได้พิมพ์เก็บไว้ข้างต้น เราสามารถใช้วิธีนี้ในการพิมพ์ข้อมูลเก็บลง ไปในไฟล์อย่างง่ายๆได้ นอกจากนี้เราสามารถทำการเปลี่ยนทิศทางการแสดงผลลัพธ์ ให้นำไปต่อท้ายได้ โดยใช้เครื่องหมาย ">>" (nondestructive redirection) ตัวอย่างเช่น
ls >> myfile
จะแสดงรายชื่อของไฟล์ในไดเรกทอรีปัจจุบัน และนำไปต่อท้ายยังไฟล์ myfile
เราสามารถจะทำการเปลี่ยนทิศทางของข้อมูลเข้า (input redirection) ก็ได้เช่นเดียวกัน โดยแทนที่จะให้นำข้อมูลเข้าจากคีย์บอร์ด เราอาจสามารถให้ระบบนำข้อมูลจากไฟล์มาเป็น ข้อมูลเข้าแก่คำสั่งก็ได้ ตัวอย่างเช่น
sort < listfile
จะแสดงผลลัพธ์จากไฟล์ listfile ที่เรียงลำดับกัน ออกมาให้
การ pipe
คุณสามารถนำเอาผลลัพธ์ที่ได้จากคำสั่งหนึ่ง นำไปใส่เป็นข้อมูลให้กับอีกคำสั่งหนึ่ง ได้ คุณจะต้องใช้เครื่องหมาย '' เพื่อทำการเปลี่ยนผลลัพธ์ไปเป็น input ให้กับคำสั่งอื่น
ตัวอย่าง ต้องการให้แสดงรายชื่อของไฟล์ในไดเรกทอรีโดยเรียงลำดับกันจากมาก ไปหาน้อย โดยปกติแล้วคุณจะต้องใช้คำสั่งทีละคำสั่งต่อไปนี้
1. สั่งให้แสดงรายชื่อของไฟล์ในไดเรกทอรี และเก็บผลลัพธ์ลงไฟล์
2. ls > listfile
3. นำเอาข้อมูลที่อยู่ในไฟล์ listfile มาเป็น input ให้กับคำสั่ง sort เพื่อเรียงลำดับจากมากไปหาน้อย โดยจะต้องใช้ option -r
4. sort -r < listfile หรือ sort -r listfile
แต่แทนที่คุณจะต้องสั่งทั้งสองคำสั่งนี้ คุณสามารถจะยุบรวมคำสั่งให้เหลือคำสั่งเดียวได้ โดยใช้ความสามารถของ pipe เข้าช่วยดังนี้
ls sort -r
คำสั่งอื่นๆ
มีคำสั่งอื่นๆที่น่าสนใจ ขอให้คุณลองใช้คำสั่งดังต่อไปนี้เพื่อทดลองแสดงผลลัพธ์ต่างๆ คำสั่งเหล่านี้นอกจากเราจะทำการสั่งโดยพิมพ์คำสั่งนั้นอย่างเดียวแล้วเรายังสามารถใส่ option ระบุเพิ่มลงไปด้วย คุณสามารถหาความหมายเพิ่มเติมของ option ได้โดยการระบุ option --help ต่อท้ายคำสั่ง เพื่อให้ระบบพิมพ์ข้อความอธิบายออกมา หรือใช้คำสั่ง man เพื่อขอดูวิธีการใช้งานคำสั่งเหล่านี้
date จะพิมพ์วันที่ของระบบออกมา
who จะพิมพ์รายชื่อผู้ใช้งาน ที่กำลังใช้งานระบบออกมา
finger เหมือนกับ who แต่จะมีรายละเอียดอย่างอื่นออกมาด้วย
grep เลือกเอาข้อมูลที่สอดคล้องกับที่ระบุไว้ (ต่อท้ายคำสั่ง)
help ขอคำอธิบายเกี่ยวกับคำสั่งในลีนุกซ์

วันจันทร์ที่ 17 พฤศจิกายน พ.ศ. 2551

Linux

ประวัติลีนุกซ์
ประวัติของลีนุกซ์ ลีนุกซ์ถือกำเนิดขึ้นในฟินแลนด์ ปี คศ. 1980 โดยลีนุส โทรวัลด์ส (Linus Trovalds) นักศึกษาภาควิชาวิทยาการคอมพิวเตอร์ (Computer Science) ในมหาวิทยาลัยเฮลซิงกิ ลีนุส เห็นว่าระบบมินิกซ์ (Minix) ที่เป็นระบบยูนิกซ์บนพีซีในขณะนั้น ซึ่งทำการพัฒนาโดย ศ.แอนดรูว์ ทาเนนบาวม์ (Andrew S. Tanenbaum) ยังมีความสามารถไม่เพียงพอแก่ความต้องการ จึงได้เริ่มต้นทำการพัฒนาระบบยูนิกซ์ของตนเองขึ้นมา โดยจุดประสงค์อีกประการ คือต้องการทำความเข้าใจในวิชาระบบปฏิบัติการคอมพิวเตอร์ด้วยเมื่อเขาเริ่มพัฒนาลีนุกซ์ไปช่วงหนึ่งแล้ว เขาก็ได้ทำการชักชวนให้นักพัฒนาโปรแกรมอื่นๆมาช่วยทำการพัฒนาลีนุกซ์ ซึ่งความร่วมมือส่วนใหญ่ก็จะเป็นความร่วมมือผ่านทางอินเทอร์เนต ลีนุสจะเป็นคนรวบรวมโปรแกรมที่ผู้พัฒนาต่างๆได้ร่วมกันทำการพัฒนาขึ้นมาและแจกจ่ายให้ทดลองใช้เพื่อทดสอบหาข้อบกพร่อง ที่น่าสนใจก็คืองานต่างๆเหล่านี้ผู้คนทั้งหมดต่างก็ทำงานโดยไม่คิดค่าตอบแทน และทำงานผ่านอินเทอร์เนตทั้งหมด ปัจจุบันเวอร์ชันล่าสุดของระบบลีนุกซ์ที่ได้ประกาศออกมาคือเวอร์ชัน 2.0.13 ข้อสังเกตในเรื่องเลขรหัสเวอร์ชันนี้ก็คือ ถ้ารหัสเวอร์ชันหลังทศนิยมตัวแรกเป็นเลขคู่เช่น 1.0.x,1.2.x เวอร์ชันเหล่านี้จะถือว่าเป็นเวอร์ชันที่เสถียรแล้วและมีความมั่นคงในระดับหนึ่ง แต่ถ้าเป็นเลขคี่เช่น 1.1.x, 1.3.x จะถือว่าเป็นเวอร์ชันทดสอบ ซึ่งในเวอร์ชันเหล่านี้จะมีการเพิ่มเติมความสามารถใหม่ๆลงไป และยังต้องทำการทดสอบหาข้อผิดพลาดต่างๆอยู่ ทำไมถึงต้องเป็นลีนุกซ์ ข้อความบางส่วนจากหนังสือ "Running Linux" ของ Matt Welsh and Lar Kaufman เนื่องจากเป็นระบบปฏิบัติการที่ฟรี คุณสามารถจะขอจากผู้ที่มีลีนุกซ์ หรือจะดาวน์โหลดจากอินเทอร์เนต หรือบีบีเอสได้โดยไม่ผิดกฏหมาย เนื่องจากมีผู้นิยมใช้มาก ทำให้มีผู้นำลีนุกซ์ไปแก้ไขให้สามารถใช้งานได้บนตัวประมวลผลกลางหลากหลายตั้งแต่อินเทล, โมโตโรลา, ดิจิตอลอัลฟา,พาวเวอร์พีซี, ไปจนถึง สปาร์คของซัน
ลีนุกซ์ เป็นระบบปฏิบัติการเช่นเดียวกับ
ดอส ไมโครซอฟต์วินโดวส์ หรือยูนิกซ์ โดยลีนุกซ์นั้นจัดว่าเป็นระบบปฏิบัติการยูนิกซ์ประเภทหนึ่ง การที่ลีนุกซ์เป็นที่กล่าวขานกันมากขณะนี้ เนื่องจากความสามารถของตัวระบบปฏิบัติการและโปรแกรมประยุกต์ที่ทำงานบนระบบลีนุกซ์
โดยเฉพาะอย่างยิ่งโปรแกรมในตระกูลของ GNU (GNU's Not UNIX) และสิ่งที่สำคัญที่สุดก็คือระบบลีนุกซ์เป็นระบบปฏิบัติการประเภทฟรีแวร์ (Free Ware) คือไม่เสียค่าใช้จ่ายในการซื้อโปรแกรม
ระบบลีนุกซ์ตั้งแต่เวอร์ชั่น 4 นั้น สามารถทำงานได้บนซีพียูทั้ง 3 ตระกูล คือบนซีพียูของอิลเทล (PC Intel) ดิจิตอลอัลฟาคอมพิวเตอร์ (Digital Alpha Computer) และซันสปาร์ค (SUN SPARC) เนื่องจากใช้เทคโนโลยีที่เรียกว่า RPM (Red Hat Package Management) ถึงแม้ว่าในขณะนี้ลีนุกซ์ยังไม่สามารถแทนที่ไมโครซอฟต์ วินโดวส์ บนพีซีหรือแมคโอเอส (Mac OS) ได้ทั้งหมดก็ตาม แต่ผู้ใช้จำนวนไม่น้อยที่หันมาใช้และช่วยพัฒนาโปรแกรมประยุกต์บนลีนุกซ์กัน และเรื่องของการดูแลระบบลีนุกซ์นั้น ภายในระบบลีนุกซ์เองมีเครื่องมือช่วยสำหรับดำเนินการให้สะดวกยิ่งขึ้น
การนำลีนุกซ์มาใช้งาน
ปัจจุบันได้มีการนำระบบปฏิบัติการลีนุกซ์ไปประยุกต์เป็นระบบปฏิบัติการสำหรับงานด้านต่างๆเช่นงานด้านการคำนวณทางวิทยาศาสตร์ใช้เป็นสถานีงาน สถานีบริการ อินเทอร์เน็ต อินทราเน็ต หรือใช้ใน การเรียนการสอนและการทำงิจัยทางคอมพิวเตอร์ใช้พัฒนาโปรแกรมเนื่องจาก มีเครื่องมือมากมาย เช่น โปรแกรมภาษาซี (C) ซีพลัสพลัส (C++) ปาสคาล (Pascal) ฟอร์แทรน (Fortran) ลิสป์ (Lisp) โปรล็อก (Prolog) เอดา (ADA) มีภาษาสคริปต์ เช่น เชลล์ (Shell) บาสช์เชลล์ (Bash Shell) ซีเชลล์ (C Shell) คอร์นเชลล์ (Korn Shell) เพิร์ล (Perl) พายตัน (python) TCL/TK
นอกจากนี้ยังมีโปรแกรมประยุกต์ในสาขาต่างๆ อีกมากมาย โดยข้อมูลของโปรแกรมเหล่านี้ได้รวบรวมไว้ที่
Linux Software Map (LSM)
ตัวอย่างคำสั่ง (Command)
ยกตัวอย่างคำสั่งน่ารู้ในระบบปฏิบัติการ Unix หรือ Linux
id แสดง ชื่อผู้ใช้คนปัจจุบัน
man แสดง คำอธิบายคำสั่ง เพื่อช่วยในการนำไปใช้
who แสดง ชื่อผู้ใช้ที่กำลัง online อยู่
pwd แสดง ชื่อ directory ปัจจุบัน
date แสดง วันที่ และเวลาปัจจุบัน
ps แสดง กระบวนการที่กำลังทำงานอยู่
ls แสดง รายชื่อแฟ้มใน directory ปัจจุบัน
mail แสดง ส่งอีเมล
sort แสดง จัดเรียงข้อมูลใน text file
clear แสดง ล้างจอภาพ
more แสดง ข้อมูลจาก text file แบบแยกหน้า
passwd แสดง เปลี่ยนรหัสผ่าน
cal แสดง ปฏิทิน
echo แสดง ตัวอักษร
talk แสดง สนทนากับผู้ใช้ในระบบ
Debian Linux
คือ ระบบปฎิบัติที่ตั้งแต่ขั้นตอนทำตัวติดตั้ง ปรับแต่งซอฟต์แวร์ ทำด้วยบุคคลที่เป็นอาสาสมัครล้วนๆ โดยมีคติว่า Debian จะฟรีตลอดไปและการพัฒนาก็จะเป็นไปอย่างเปิดเผย มีการเปิดให้ดาวน์โหลดโปรแกรมกันฟรี แต่ข้อเสียของ Debian ก็คือ การลง Debian นั้นยากมากมันเป็น Linux สำหรับพวกเซียนๆทั้งหลายที่ไม่อะไรทำ เพราะต้องมานั่งปรับเดสก์ทอปให้เหมาะกับการใช้งานเอง จากข้อเสียตรงนี้ทำให้มีหลายๆบริษัทเอาข้อเสียไปปรับแต่งให้ดีขึ้น ก็เป็นอะไรที่น่าใช้ไปอีกแบบหนึ่ง ข้อเด่นของ Debian ก็คือ โปรแกรมต่างๆสามารถที่จะติดตั้งได้โดย Download ได้จากเน็ทโดยอัตโนมัติ Ubuntu ทำการ Update โปรแกรมเหล่านี้ให้ทันสมัย โดยใช้ Concept เดียวกับ Debian แสดง ค้นหาตัวอักษรจาก text file
Ubuntu
คือ กลุ่มของคนที่พัฒนาระบบปฏิบัติการ เพื่อให้สามารถนำไปใช้กับ เครื่องคอมพิวเตอร์ทั้งที่เป็นเครื่องแบบผู้ใช้งานทั่วไป (Client) หรือแบบเครื่องแม่ข่าย (Server) เหมาะกับผู้ใช้ตามบ้าน และโรงเรียนที่ไม่ต้องการมีค่าใช้จ่ายเรื่องซอฟต์แวร์ลิขสิทธิ์ โดยมีการรวมเอาโปรแกรมประยุกต์ประเภทเวิร์ด หรือเพาเวอร์พอยต์ อินเทอร์เน็ต ไว้ด้วย
KNOPPIX
คือ Linux ที่รันบนแผ่น CD เริ่มโดยการตั้ง Bios ให้บูตด้วยแผ่น CD เมื่อบูตเข้าไปแล้วตัว KNOPPIX ก็จะทำการรัน Linux ขึ้นมาใช้งานได้ในทันที โดยระบบของ KNOPPIX จะสามารถ Dectect การ์ดจอ การ์ดเสียงและอุปกรณ์ต่างๆ ได้ทันที เหมาะสำหรับผู้ที่ไม่ต้องการติดตั้ง Linux ลงบนเครื่อง แต่อยากลองใช้งาน ก็สามารถใช้ผ่าน CD Rom ได้
RedHat Linux
เป็นลีนุกซ์ดิสทริบิวชั่นที่ ได้รับความนิยมสูงทั้งในอเมริกาและเมืองไทย จุดเด่นของ RedHat คือมีโปรแกรม RPM (RedHat Package Management) ช่วยติดตั้ง-ถอดแอพพลิเคชั่นต่างๆ ได้อย่างสะดวกรวดเร็ว เวอร์ชัน 7.x ใช้เคอร์เนล 2.4.18 สามารถใช้งานภาษาไทยได้อย่างดี
Fedora
คือ Linux distribution ตัวหนึ่ง ที่ถูกพัฒนาต่อยอดมาจาก Redhat เวอร์ชั่น 9 Fedora ถูกพัฒนามาให้แตกต่างจาก Redhat โดย Fedora มีจุดมุ่งหมายที่จับกลุ่ม Desktop User ที่เน้นการทำงานที่ง่าย และเข้าใจไม่ยาก Fedora จะใช้ชื่อรุ่นของตัวเองว่าเป็น Core ซึ่งปัจจุบันก็ได้พัฒนามาถึง Core 4 แล้ว
PCLinuxOS
นี้เป็น Linux สายพันธ์ Mandriva ที่เน้นการทำงานแบบ Live CD สำหรับ 2007 นี้ใช้ Kernel 2.6.18.8, KDE 3.5.6, Xorg 7.1.1 และโปรแกรมอื่นๆ ก็เป็นตัวที่ใหม่ๆ ทั้งนั้นครับ (มี Beryl มาให้ด้วย !!!) นอกจากนี้ยังมีระบบ Synaptic ที่ไว้คอยจัดการเรื่องการโปรแกรมต่างๆ (เหมือน Ubuntu) แต่เป็น RPM มาให้พร้อมครับ สำหรับ Driver แบบ Proprietary นั้นตัว Live CD ไม่มีมาให้ครับ แต่ว่าลงเองได้เหมือนกัน
Mandriva One
เป็น LiveCd ที่เป็น OS สามารถบูทส์และทำงานได้จาก CD โดยตรงโดยไม่ต้องมีการติดตั้งก่อนและไม่มีการเปลี่ยนแปลงอย่างถาวรต่อระบบ ที่ทำงานอยู่ แต่ถ้าผู้ใช้ต้องการจะติดตั้งลงในฮาร์ดดิสก็สามารถทำได้เช่นกัน จุดเด่นของ Mandriva คือ"Mandriva Control Center" ประกอบไปด้วย urpmi package managementที่ใช้ในการจัดการเรื่องติดตั้ง ย้ายออกอัพเดทเป็นต้นและระบบการจัดการกับกราฟิค รวมถึง nspluginwrapper ซึ่งยอมให้ x86-32 plugins สามารถใช้ได้กับ x89-64 browser และยังมี transfugdrake ที่ออกแบบมาสำหรับการเคลื่อยย้ายข้อมูลและการติดตั้งMicrosoft Windows ไปยัง Linux
pclinux พัฒนามาจาก mandriva เหมือนกับที่ผ่าน ๆ มา mandrake หรือ mandriva นั้นก็เคยพัฒนามาจาก redhat แล้วพัฒนาสายพันธ์ตัวเอง จนกลายเป็นเส้นทางของตัวเองไปในที่สุด และ pclinux ก็ใช้ mandriva เป็นพื้นฐานซึ่งก็ไม่แน่ว่า ต่อไป pclinux กำลังจะเดินทางไปในหนทางของตัวเอง ซึ่งตรงนี้ก็ต้องดูกันต่อไป สำหรับ mandriva นั้น ก็มีลีนุกซ์หลาย ๆ ตัวอยู่เหมือนกันที่ใช้ mandriva เป็นฐาน สำหรับ mandriva นั้น มีตัว คอนโทรล เป็นของตัวเอง ซึ่งใช้ง่ายและ ครอบคลุมการปรับแต่งมากทีเดียว ทั้ง desktop และ server อีกทั้งการใช้งานในภาษาไทย ก้สามารถที่จะใช้ได้ดีพอสมควร และ mandriva ก็สนับสนุนภาษาต่าง ๆ มานาน และก็พัฒนาอยู่ตลอด ครับ และที่แน่ ๆ
CentOS
เป็น Linux ในระดับ Enterprise ที่มีเป้าหมายหลักในเรื่องของความ stable เพื่อให้ใช้กับงานในระดับองค์กร CentOS แตกต่างจาก Linux ตัวอื่นๆ ที่ค่อนข้างจะมีการเปลี่ยนแปลงบ่อยและมักจะใส่ feature ที่ยังไม่ stable ลงไป ดังนั้นการที่ CentOS โฟกัสในเรื่องของความ stable จึงทำให้ผู้ใช้งานสามารถมุ่งความสนใจลงไปในเรื่องของ application โดยลดความกังวลในส่วนของ Operation System ลงไป CentOS ถูกพัฒนาต่อมาจาก source code ที่ได้รับการเปิดเผยโดยทีมงานผู้เชี่ยวชาญ Enterprise Linux เจ้าหนึ่งในอเมริกาเหนือ กำลังหลักของทีมพัฒนาประกอบขึ้นด้วยผู้เชี่ยวชาญ และความสนับสนุนจาก community ต่างๆ ทั้งด้าน system admin, network admin, enterprise user, manager, core Linux contributors
Slackware
เป็นลินิกซ์ตัวแรกๆ ของโลกที่ผลิตมาเพื่อขาย ประวัติของ Slackware คือ บริษัทขายซีดีทางอินเทอร์เน็ตชื่อว่า วอลนัท ครีก ได้รวบรวมโปรแกรมต่างๆ ที่ใช้งานบนลินิกซ์มาใส่ซีดีขาย เจ้า Slackware นี้มีจุดเด่นตรงความเรียบง่ายของมัน ที่ไม่ค่อยมีอะไรแปลกๆ ใส่มาเหมือนยี่ห้ออื่น แต่ข้อเสียของมันก็คือ เรียบง่ายเกินไป ทำให้ไม่มีเครื่องอำนวยความสะดวกให้กับผู้ใช้หน้าใหม่เท่าไรนัก การลงโปรแกรมจะต้องคอมไพล์เอง ไม่มีระบบแพกเกจแบบ RPM มาให้ เหมาะกับผู้ที่มีความรู้ด้านลินิกซ์อยู่พอสมควรเลย ปัจจุบันออกถึงเวอร์ชัน 9.0
OpenSuSE
SuSE เป็น Desktop Linux ที่มีต้นกำเนิดจากเยอรมัน เดิมนั้นทำออกมาขาย(ราคาไม่แพงเท่า win) แต่ตอนนี้แยกออกมาให้ใช้ฟรีภายใต้ชื่อ OpenSuSE เคยอ่านเจอว่า Linus Torvalds ผู้คิดค้น Linux kernel และไอเดียที่นำ Linux มา OpenSource ก็ใช้งานดิสทริบิวชั่นนี้เป็น SuSE อีก Edition หนึ่ง ที่มี novell เป็นสปอนเซอร์ แต่ไม่ซับพอร์ต โดยผู้ที่ซับพอร์ต กลับเป็นผู้ใช้ SuSE เอง ชื่อกลุ่ม SuSE community เรียกว่าดูแลกันเอาเองว่างั้นเถอะ ซึ่งรับประกันได้ว่ามันจะเป็นของฟรี ไปตลอดกาล เพราะมีค่าใช้จ่ายในการดูแลรักษาน้อย นอกจากนี้ยังมี SLED (SuSE Linux Enterprice Edition
Gentoo Linux
เป็น Source based distribution ใช้ระบบจัดการแพกเกจชื่อ portage (ยัง) ไม่มีตัวติดตั้งแบบ Graphics ต้องติดตั้งโดย Command Line พัฒนาขึ้นครั้งแรกโดย Daniel Robbins ปัจจุบัน Gentoo Foundation ออกใหม่ปีละ 4 รุ่น
การนับรุ่น จะใช้รูปแบบ – 2005.0, 2005.1, 2005.2, 2005.3
จุดเด่น สามารถ Optimize ให้เหมาะกับเครื่องที่รัน เช่น k6, pentium4, athlonxp สามารถปรับแต่งระบบให้เหมาะกับการใช้งาน การอัพเดทแพกเกจค่อนข้างทันสมัย portage เขียนด้วย python ทำางานได้เร็วกว่าports ของ FreeBSD ซึ่งใช้ make มีการพอร์ตไปหลายระบบเช่น ia64, x86_64,ppc, alpha เป็นต้น
จุดด้อย การติดตั้งทำาได้ช้า เนื่องจากต้องดาวน์โหลดซอร์สและคอมไพล์ทั้งระบบ (ทางออก: เลือกการติดตั้งแบบ stage2, stage3 และใช้package สำเร็จ) การติดตั้งต้องใช้ความชำานาญสูง คือต้อง fdisk, mkfs, mount, tar และอื่นๆ ด้วยตัวเอง (ทางออก: กำาลังพัฒนาตัวติดตั้งแบบกราฟิกส์และไดอะล็อก) ต้องใช้เน็ตเวิร์คความเร็วสูงเพื่อดาวน์โหลดซอร์สโค้ด (ทางออก: ใช้ getdelta ช่วยดาวน์โหลดเฉพาะส่วนที่เปลี่ยนไป) ต้องใช้เครื่องกำาลังสูงๆ เพื่อคอมไพล์
Damn small Linux
ไม่ต้องอธิบายมากสำหรับ Linux ตัวนี้ ชื่อก็บอกอยู่แล้วว่าเป็น Linux ขนาดเล็ก เล็กยังไงเหรอ คำตอบก็คือใช้พื้นที่ขนาดเล็ก กิน Resource น้อย ขนาด Boot จาก Flash Drive , หรือใช้ได้แม้ CPU 486 Ram 16 MB ยังได้เลย
Puppy Linux
เป็นระบบปฏิบัติการที่ใช้ลีนุกซ์เป็นแกนการพัฒนา แต่ว่าผู้พัฒนาตั้งใจว่าจะให้มีขนาดไม่ใหญ่มากนักและมีอินเตอร์เฟซที่สวยงาม น่ารัก จึงตั้งชื่อว่า Puppy อันหมายถึงน้องหมาหรือลูกหมา ขนาดของมันก็ต้องเล็กสมชื่อ เอาเป็นว่าในเวอร์ชั่นล่าสุดคือ Puppy Linux Dingo 4.0 มีขนาดไฟล์ .iso ให้ดาวน์โหลดอยู่ประมาณ 89 Mb ครับ ไม่ต้องเอาไปเทียบกับวินโดวส์ครับเพราะผิดกันเยอะ แต่ Puppy Linux ของเรามีโปรแกรมมาให้ใช้งานครบทุกด้าน โดยที่ติดมากับแพคเกจมาตรฐานมีทั้งเวิร์ดโปรเซสเซอร์ สเปรดชีท กราฟิก มัลติมีเดีย และโปรแกรมด้านการใช้งานอินเตอร์เนตด้านต่างๆครบ อีกอย่างคือ Puppy Linux นั้นสื่อสารกับผู้ใช้ด้วยกราฟิกอินเตอร์เฟสเหมือนกันกับวินโดวส์ แถมดีกว่าวินโดวส์ตรงที่ Puppy Linux รู้จักอุปกรณ์ฮาร์ดแวร์มากกว่าเสียด้วย