Introduction to Unix I
<h2 style="margin: 12pt 0cm 3pt">วัตถุประสงค์</h2>
1. แนะนำให้เห็นความสำคัญของระบบ Unix
2. เข้าใจลักษณะพื้นฐานของระบบ Unix
3. สามารถใช้คำสั่งพื้นฐานในระบบ Unix ได้
หัวข้อ
ตอนที่ 1: แนะนำระบบ Unixตอนที่ 2: การเริ่มต้น/การออกจากระบบ Unix <p style="margin: 0cm 0cm 3pt" class="MsoNormal">ตอนที่ 3: การพิมพ์คำสั่งในระบบ Unix (Typing Unix Commands)</p>
ตอนที่ 4: คำสั่งเพื่อใช้งานในขั้นแรก (Commands to Use Right Away)
ตอนที่ 5: ระบบความช่วยเหลือของ Unix (Unix Help)
ตอนที่ 6: ระบบแฟ้มข้อมูลของ Unix (The Unix File System) <p style="margin: 0cm 0cm 3pt" class="MsoNormal">ตอนที่ 7: การทำงานกับไดเร็คทอรี่ (Working with Directories)</p>
ตอนที่ 8: การทำงานกับแฟ้มข้อมูล (Working with Files)
ตอนที่ 9: การเปลี่ยนทิศทางของ Input และ Output (I/O redirection) <h2 style="margin: 12pt 0cm 3pt">ตอนที่ 1: แนะนำระบบ Unix</h2> Unix เป็นระบบปฏิบัติการแบบหลากผู้ใช้หลายงาน (Multiuser/Multitasking) คือระบบสามารถทำงานได้หลายอย่างพร้อมกันในเวลาเดียวกัน ระบบอนุญาตให้ผู้ใช้หลายคนเข้ามาใช้งานระบบ โดยที่ระบบมีวิธีการในการจำแนกผู้ใช้แต่ละคน ซึ่งใช้งานอยู่บนระบบเดียวกันได้ ผู้ใช้หลายคนสามารถใช้งานเครื่องเดียวกันพร้อมกันได้ โดยใช้ลักษณะของการแบ่งเวลา (Time sharing) และแบ่งทรัพยากร (Resource sharing) <p style="margin: 3pt 0cm" class="MsoNormal"> ระบบปฏิบัติการ Unix เป็นระบบที่ได้มีการพัฒนาการมาประมาณ 30 ปีแล้วเริ่มจากห้องปฏิบัติการทางคอมพิวเตอร์ Bell Labs โดย Ken Thomson และ Dennis Ritchie จนปัจจุบันกลายเป็นระบบปฏิบัติการที่มีผู้นิยมใช้กันอย่างกว้างขวาง ตั้งแต่เครื่องขนาดเล็ก (Micro-computer) ซึ่งมี resource จำกัด จนถึงเครื่องขนาดใหญ่ (Main frame) และ Supercomputer การเติบโตของ Unix มีอัตราสูงและรวดเร็ว ทั้งนี้เพราะความสามารถ ความคล่องตัวง่ายในการใช้ และเครื่องมือต่างๆมากมายที่ระบบ Unix มีให้</p>
ระบบ Unix ได้สร้างขึ้นมาในช่วงปลายทศวรรษ 1960 เพื่อให้ทำงานกับคอมพิวเตอร์ขนาดใหญ่ เป้าหมายของการออกแบบที่วางไว้กว้าง และคำสั่งที่ออกแบบมาก็จะไม่ใช่เพื่อแก้ปัญหาทุกกรณี คำสั่งต่าง ๆ จะออกแบบให้ทำงานใดงานหนึ่งซึ่งเป็นงานเล็ก ๆ เพียงงานเดียว ซึ่งทำให้ทำงานได้ดีและเร็ว ตัวอย่างเช่น คำสั่งเพื่อแสดงข้อมูลในแฟ้ม จะไม่ทำเกี่ยวกับการจัดหน้า หรือการพิมพ์ออกทางเครื่องพิมพ์จะมีคำสั่งที่ทำหน้าที่ย่อย ๆ เหล่านี้อีกต่างหาก
การยึดมั่นในหลักการนี้ก่อให้เกิดลักษณะเด่น คือ ประการแรก งานใหม่ ๆ สามารถทำได้ด้วยคำสั่งอื่นๆ ที่มีอยู่แล้วได้ โดยอาศัยแนวคิดเรื่อง standard input and output และ command pipelines ประการที่สอง การพัฒนาคำสั่งใหม่ ๆ และงานอื่น ๆ ทำได้ง่าย ประการที่สาม ทำให้ระบบ Unix มีคำสั่งที่เป็น utility มากมายกว่าระบบปฏิบัติการอื่นๆ
ลักษณะเด่นหลายประการใน Unix เช่น การจัดโครงสร้างแฟ้มข้อมูลแบบ hierarchy (tree) แนวคิดเกี่ยวกับ I/O redirectional และการทำ pipe process ได้เป็นที่ยอมรับและใช้ในระบบปฏิบัติการอื่น ๆ ด้วย การเรียนรู้เกี่ยวกับ Unix จึงเป็นพื้นฐานของการเรียนรู้ระบบปฏิบัติการสมัยใหม่ นอกจากนี้การที่ Unix เป็นระบบปฏิบัติการที่มีใช้อย่างกว้างขวางในเครื่องทุกระดับ การเรียนรู้เกี่ยวกับ Unix จึงมีประโยชน์มาก
Unix ตระกูลหลัก ๆ ได้แก่ System V ซึ่งเป็นระบบ Unix ที่พัฒนาขึ้นใน Bell Labs และ Berkeley Unix ซึ่งมีชื่ออย่างเป็นทางการว่า BSD (มาจากคำเต็มว่า Berkeley Software Distribution) ในวงการวิจัยและการศึกษาส่วนใหญ่จะใช้ระบบ Unix ซึ่งใช้ระบบหนึ่งในสองระบบนี้หรือทั้งสองระบบเป็นพื้นฐาน
ตารางต่อไปนี้ แสดงถึงชื่อของระบบ Unix ที่พบเห็นได้ทั่วไป
| ชื่อของระบบ Unix | บริษัท |
| AIX | IBM |
| Dynix | Sequent |
| HP/UX | Hewlett-Packard (HP) |
| Linux | หาได้ฟรีบน Internet |
| Nextstep | Next |
| SCO Unix | Santa Cruz Operation |
| Solaris | Sun Microsystems |
| SunOS | Sun Microsystems |
| System V UNIX | PC บางชนิด |
| Ultrix | Digital Equipment Corp. (DEC) |
คำถาม
1. จงยกตัวอย่าง applications ที่ใช้ในระบบ Unix มาให้มากที่สุด
2. จงยกตัวอย่าง applications ที่มีในระบบ Unix แต่ไม่มีในระบบ Windows มาอย่างน้อย 3 ชื่อ Application เหล่านี้มักจะใช้ในงานด้านไหนบ้าง
ตอนที่ 2: การเริ่มต้น/การออกจากระบบ Unix
ผู้ใช้แต่ละคนจะมีพื้นที่เฉพาะตัวอยู่ในระบบ ซึ่งเรียกว่า account เมื่อต้องการเข้าสู่ระบบ ผู้ใช้จะต้องพิมพ์ login ID และรหัสผ่านของตนเข้าไป หากระบบตรวจสอบแล้ว login ID และรหัสผ่านถูกต้อง ก็จะให้เข้าสู่ระบบได้ <p style="margin: 3pt 0cm 6pt" class="MsoNormal"> ระบบ Unix ถือว่าอักษรตัวเล็กและตัวใหญ่แตกต่างกัน ดังนั้นจะต้องใส่ให้ถูกต้อง</p>
Login: s4XXXXXX |
พิมพ์ ID และกด Enter |
Password: |
พิมพ์ password แล้วกด Enter (จะไม่มีอะไรแสดงออกมา) |
| $ | Prompt ของ Unix (อาจแสดงเป็นอย่างอื่นที่คล้ายกัน) |
การ logout ออกจากระบบ ให้พิมพ์คำสั่ง logout หรือกด ^D (Ctrl+D) หรือพิมพ์คำสั่ง exit <p style="margin: 6pt 0cm 0pt" class="SmallTopic">วิธีการทดลอง</p>
เปิดเครื่อง terminal รอจนกระทั่งมีคำว่า “Login:” ปรากฎขึ้น
· ใส่ Login ID แล้วกด Enter
· ใส่ Password แล้วกด Enter
จะปรากฎเครื่องหมาย prompt ของ Unix <h2 style="margin: 12pt 0cm 3pt">ตอนที่ 3: การพิมพ์คำสั่งในระบบ Unix (Typing Unix Commands)</h2>
User Interface ของ Unix เรียกว่า Shell ซึ่งจะทำหน้าที่ 4 อย่างซ้ำไปเรื่อย ๆ ดังรูปข้างล่าง
<p style="margin: 3pt 0cm; text-align: left" class="MsoNormal" align="left"> Unix มีอักษรควบคุมหรือ Control Characters เพื่อทำงานเฉพาะอย่างอยู่หลายตัว ที่สำคัญได้แก่</p>
การลบตัวอักษร |
Control Characters ที่มีประโยชน์อื่น ๆ |
||
| DELETE | ลบตัวอักษรตัวสุดท้าย |
^C | จบการทำงานของคำสั่ง |
| ^H | ลบตัวอักษรตัวสุดท้าย (^H หมายถึง ให้กด Ctrl และปุ่ม H พร้อมกัน) | ^S | หยุด Output (เช่น การแสดงผล) ชั่วคราว |
| ^W | ลบคำสุดท้าย |
^Q | แสดง Output ต่อ |
| ^U | ลบบรรทัดสุดท้าย |
||
วิธีการทดลอง
· date· cal 3 1997· who· ls –a <p style="margin: 0cm 0cm 3pt 36pt; text-indent: -18pt; tab-stops: 21.6pt list 36.0pt left 50.4pt 64.8pt 79.2pt" class="MsoNormal">· man cal (ให้กดแป้น spacebar เพื่อแสดงผลต่อไป และ ^C เพื่อออก)</p> · clear <p style="margin: 3pt 0cm 3pt 18pt; text-indent: -18pt; text-align: left; tab-stops: list 18.0pt left 21.6pt 36.0pt 50.4pt 64.8pt 79.2pt" class="MsoNormal" align="left">2. พิมพ์คำสั่ง cd /home เพื่อไปยังไดเร็คทอรี่ home (ซึ่งเป็นไดเร็คทอรี่แม่ของไดเร็คทอรี่ของผู้ใช้ในระบบ), พิมพ์คำสั่ง ls –al แล้วกด ^S ก่อนที่จะแสดงผลเสร็จ รอสักครู่หนึ่งแล้ว กด ^Q </p>
ตอนที่ 4: คำสั่งเพื่อใช้งานในขั้นแรก (Commands to Use Right Away)
การตั้งรหัสผ่าน
ใช้คำสั่ง passwd แล้วระบบจะถามรหัสผ่านปัจจุบัน แล้วให้ใส่รหัสผ่านใหม่ 2 ครั้ง
ข้อแนะนำเกี่ยวกับรหัสผ่าน
· ห้ามบอกรหัสผ่านของคุณแก่ใคร ในระบบเครือข่ายคอมพิวเตอร์ สิ่งเดียวที่ชี้ได้ว่าคุณเป็นใครคือ account หากคนอื่นใช้ account ของคุณไปทำจารกรรมใด ๆ คุณจะต้องรับโทษโดยอ้างไม่ได้ว่าไม่ได้เป็นผู้ทำ · อย่าเขียนรหัสผ่านเอาไว้ หรือหากเขียนเอาไว้ ให้เก็บไว้ในที่ลับและไม่ควรเขียน password ตรง ๆ ให้เขียนคำที่เตือนให้นึกถึง password ก็พอ· รหัสผ่านที่ดี จะต้องยาวกว่า 8 ตัวอักษร โดยประกอบด้วยอักษรตัวเล็กและตัวใหญ่, ตัวเลข, และสัญลักษณ์ต่าง ๆ (เช่น #, $) ปนกัน วิธีหนึ่งที่อาจใช้สร้าง password สำหรับคนไทย คือ ใช้แป้นพิมพ์พิมพ์เป็นคำภาษาไทยแทน (แต่ห้ามใช้คำ ๆ เดียว เพราะเขาอาจใส่ทุกคำในพจนานุกรมเข้าไปเพื่อแกะรหัสผ่านได้) <p style="margin: 6pt 0cm 0pt" class="SmallTopic">คำสั่งเกี่ยวกับวันที่</p> · date เพื่อบอกวันที่และเวลา· cal เพื่อแสดงปฏิทิน ตัวอย่างการใช้ เช่น cal 1997, cal 3, cal 7 1962, cal 9 1752 <p style="margin: 6pt 0cm 0pt" class="SmallTopic">คำสั่งเกี่ยวกับตัวเราและระบบ</p>
· uptime เวลาที่ระบบทำงาน (Machine’s ‘up’ time)
· hostname ชื่อของเครื่องแม่ข่าย
· whoami ชื่อของเรา
· quota โควตาของเรา อีกคำสั่งหนึ่ง คือ quota –v ??? (ใช้ทำอะไร)
เครื่องคิดเลข
· xcalc ต้องใช้ X-Windows
· expr ใช้คำนวณขั้นพื้นฐานได้ เช่น expr 3 + 5 + 7
· bc
3 + 5 + 7 พิมพ์เข้าไป
15 Output
^D เพื่อออกจากโปรแกรม
· bc –l เพื่อใช้ Maths library
scale=3 ตั้งจำนวนทศนิยมให้เป็น 3
150/60
l(30) เรียกฟังก์ชันเพื่อหาค่า natural log ของ 30
^D
· bc
obase=2 ตั้งค่าเลขฐานของ output
ibase=16 ตั้งค่าเลขฐานของ input
FFC1
^D
เกมส์
เกมส์ส่วนใหญ่อยู่ในไดเร็คทอรี่ /usr/game การเรียกเกมส์เหล่านี้ขึ้นมา จะต้องเปลี่ยนไดเร็คทอรี่ไปที่นั่น (ซึ่งจะกล่าวถึงต่อไป) หรือใส่ /usr/game นำหน้าคำสั่งที่ต้องการเรียก เช่น
/usr/game/fortune
เกมส์หลายเกมส์ในระบบ Unix เป็นเกมส์ที่มีกราฟิกสวยงาม เล่นได้หลายคน เช่น doom, acm แต่จะต้องใช้ X-Windows ในการรัน
สำหรับเกมส์ที่อยู่ได้ fivedots ได้แก่
| fortune | คำคม |
| gnuchess | หมากรุก |
| hangman | แฮงแมน |
| acm | จำลองการบิน |
| Maelstrom | เกม Asteriod |
| Gnugo | เกมโกะ |
วิธีการทดลอง
2. ใช้คำสั่งของ Unix เพื่อค้นดูว่าคุณเกิดวันอะไร (จันทร์, อังคาร, หรืออื่น ๆ)
3. คุณมี disk quota อยู่เท่าไร
4. ให้หาค่า p ออกมาโดยมีทศนิยม 12 หลัก (คำใบ้: p/4 = arctan(1) ซึ่งก็คือ function a() ในโปรแกรม bc)
5. ให้รันโปรแกรม fortune ดูหลาย ๆ ครั้ง
ตอนที่ 5: ระบบความช่วยเหลือของ Unix (Unix Help)
On-line help· man มาจากคำว่า manual หรือคู่มือ เป็นการเรียกคู่มือแบบ on-line ของโปรแกรมขึ้นมาอ่าน การใช้ให้กด spacebar เพื่อดูหน้าถัดไป, P เพื่อดูหน้าก่อนหน้า และ q เพื่อออก ตัวอย่างการใช้ เช่น <p style="margin: 0cm 0cm 3pt 36pt" class="Code">man gnuchess
man man</p>
· apropos [ชื่อหัวเรื่อง] ใช้เพื่อแสดงคำสั่งที่เกี่ยวข้องกับหัวเรื่องนั้น ๆ การออกจากคำสั่งให้กด q ตัวอย่างการใช้ เช่น <p style="margin: 0cm 0cm 3pt 36pt" class="Code">apropos game
apropos help</p>
· man –k [ชื่อหัวเรื่อง] เหมือนกับ apropos
· which [คำสั่ง] บอกที่อยู่ของคำสั่งนั้น ตัวอย่างเช่น
which gnuchess
which ls
· locate [ข้อความ]ใช้หาไฟล์ที่มีข้อความหนึ่ง ๆ อยู่ในชื่อไฟล์หรือ path ของไฟล์ ตัวอย่างเช่น
locate .cgi
locate ad
· การแสดงผลลัพธ์ที่ออกมาอาจจะยาวมาก เราทำให้โปรแกรมแสดงผลออกมาทีละหน้าจอโดยใช้ |more ตามหลังคำสั่ง แล้วให้กด spacebar เพื่อแสดงผลต่อ และ ^C เพื่อหยุด ตัวอย่างเช่น
locate .cgi|more
apropos print|more
หนังสือ Unix ที่แนะนำ
· A Student’s Guide to UNIX, Harley Hahn, McGraw-Hill, 1993.· A Practical Guide to the UNIX System, Mark G. Sobell, Benjamin-Cummings,
3rd Edition, 1995.· An Introduction to Berkeley UNIX, Paul Wang, Wadsworth, 1992. <p style="margin: 6pt 0cm 0pt" class="SmallTopic">วิธีการทดลอง</p>
1. ให้ดู manual pages ของโปรแกรม bc และ fortune2. คำสั่งใดบ้างที่เกี่ยวข้องกับคำว่า game3. เกมส์ใน fivedots อยู่ที่ใด <h2 style="margin: 12pt 0cm 3pt">ตอนที่ 6: ระบบไฟล์ของ Unix (The Unix File System)</h2>
รูปแสดงระบบไฟล์/ไดเร็คทอรี่ของ Unix (ซึ่งทำให้ง่ายลงแล้ว)
ไดเร็คทอรี่ระบบที่สำคัญ เช่น
· / root directory
· /bin เก็บคำสั่งของ Unix
· /etc ไฟล์ข้อมูลของระบบ เช่น /etc/passwd
· /dev ไฟล์ที่ใช้แทน I/O Devices
รูปแสดง home directory ของผู้ใช้
PathnamePathname คือ เส้นทางของ directory ที่ใช้แสดงถึงตำแหน่งของ directory มีอยู่ 2 ชนิด คือ absolute pathname กับ relative pathname <p style="margin: 3pt 0cm" class="MsoNormal">Absolute Pathname (เส้นทางแบบสัมบูร</p></span>