เริ่มต้นการใช้งาน UNIX

bobnn99

New member
เริ่มต้นการใช้งาน UNIX

ในที่นี้จะกำหนดให้เชลล์พร้อมเป็น $
NOTE : Unix จะถือว่าตัวเล็ก ตัวใหญ่ มีความหมายต่างกัน เช่น ls , LS

ระบบปฏิบัติการยูนิกช์ ประกอบ 3ส่วน
1. เคอร์แนล
2. เชลล์
3. โปรแกรม

1. เคอร์แนล
เป็นศูนย์กลางของระบบปฏิบัติการ unix มันมีหน้าที่จัดสรรทรัพยากรระบบ จัดเก็บข้อมูล บริหารหน่วยความจำ การติดต่อสื่อสาร และเนื่องมาจากเคอเนลล์กับเชลล์ ทำงานร่วมกัน
เช่น
$ rm myfile
(เป็นคำสั่งลบไฟล์ที่ชื่อ myfile ออก)
เชลล์จะไปค้นหาไฟล์ แล้วจึงส่งไปยังเคอร์แนลเพื่อระบบจะไป rm บนไฟล์นั้น เมิ่อจบกระบวนการแล้วมันยังคงทำงานอยู่ เชลล์จะกลับไปที่พร้อม $ เพื่อรอรับคำลั่งต่อไป
2. เชลล์
เป็นเสมือนตัวกลางระหว่างผู้ใช้กับเคอร์แนล เมื่อผู้ใช้ login เข้ามาระบบจะต้องตรวจสอบ user และ password แล้วจะเรียกเชลล์เพื่อแปลเป็นภาษาเครื่อง หริอเรียกว่า command line interpreter (CGI)
คุณสมบัติ
1. ผู้ใชัที่ชำนาญ สามารถสร้างเชลล์ส่วนตัวได้
2. ผู้ใช้สามารถใช้เชลล์ที่ต่างกันบนเคริ่องเดียวกันได้

FILES AND PROCESS
Files เป็นข้อมูลที่ถูกสร้างจากผู้ใช้ จาก text editor, running compilers เป็นต้น เช่น
1. เป็นเอกสารรายงาน
2. เป็นต้นฉบับของโปรแกรมที่ถูกเขียนจากภาษาระดับสูง
3. ไดเรกทอรี จะเก็บไฟล์ต่างๆไว้รวมกันได้ หรืออยู่ใน subdirectory และไฟล์ธรรมดาได้

บทที่ 1 คำสั่งควรรู้และใช้กันบ่อยๆ

1.1 การดูไฟล์ และ ไดเรกทอรี
เมื่อคุณเข้ามาครั้งแรก ตำแหน่งปัจจุบันที่อยู่จะเป็นไดเรกทอรี ชื่อ home ภายในจะมีไฟล์ส่วนตัว และ subdirectory ถูกเก็บไว้

ls (list)

$ ls
เป็นคำสั่งใช้ค้นดูว่ามีอะไรอยู่ใน directory ปัจจุบันที่อยู่

$ ls –a

เป็นการดูสิ่งที่อยู่ใน directory เช่นกัน แต่แบบนี้จะเข้าไปหาไฟล์ซ่อนด้วย (มีลักษณะที่ขึ้นต้นด้วย. และ ..) ซึ่ง –a เป็น option หนึ่ง ถ้าต้องการรู้รายละเอียด หรือ option อื่นๆอีก ให้ดูจากคำสั่ง man

Note : การดูคู่มือการใช้ ให้พิมพ์ man ตามด้วยคำสั่งที่เราสนใจ เช่น
$ man ls

1.2 การสร้าง directory

mkdir
เป็นคำสั่งที่ใช้สร้าง directory
เราสามารถสร้าง directory ภายใน directory ปัจจุบันที่เราอยู่ได้ ซึ่งจะเป็นที่เก็บไฟล์ย่อยๆ หรือ directory ได้เข้าไปอีก เช่น

$ mkdir newdirectory
$ ls

เป็นการสร้าง directory ที่ชื่อ newdirectory และ ตรวจสอบดู จะพบว่ามีไดเรกทอรีนี้เกิดขึ้นจริง (จากคำสั่ง ls)
cd
เป็นคำสั่งที่ใช้เปลี่ยน directory ที่ทำงานอยู่

$ cd newdirectory
$ ls


จากตัวอย่าง เราจะเปลี่ยนตำแหน่งการทำงานเข้าไปที่ directory ชื่อ newdirectory
และเราจะตรวจสอบภายในนี้จะไม่พบอะไร เพราะเราเพิ่งสร้างและยังไม่ได้มีการจัดเก็บอะไรลงไปเลย จึงเป็น directory เปล่า

1.4 directory . และ ..
ขณะนี้เราอยู่ใน directory ชื่อ newdirectory ถ้าพิมพ์
$ ls –a
จะพบว่าภายในนี้จะมี 2 directory พิเศษภายใน คือ directory . และ ..
$ cd .
หมายถึง ยังคงอยู่ที่ไดเรกทกรี ไม่เปลี่ยนไปไหน
$ cd ..
หมายถึง ย้ายไปยังพ่อแม่ของไดเรกทอรีปัจจุบัน หรือเลื่อนถอยขึ้นไป 1 ลำดับ (มองเป็น tree)

Note : - พิมพ์ cd เว้นวรรค แล้วตามด้วย จุด
- การพิมพ์ cd โดยไม่มีอะไรตามเลย จะเป็นการบอกว่ามันจะกลับไปยัง directory home

1.5 Pathname

pwd เป็นคำสั่งที่ใช้แสดงตำแหน่งไดเรกทอรีปัจจุบัน หรือที่ทำงานอยู่ มีประโยชน์ในการย้าย คัดลอก ลบ ในกรณีที่จะต้องอ้างที่มาหรือที่อยู่ของไฟล์ตัวนี้ อย่างถูกต้อง


$ pwd myfile.tx
สรุป บทที่ 1

ls ดูไฟล์ และ ไดเรกทอรี
ls -a ดูไฟล์ทั้งหมด และไดเรกทอรี
mkdir สร้างไดเรกทอรี
cd directory ย้ายไดเรกทอรี
cd ไปที่ไดเรกทอรี home
cd .. ไปที่ไดเรกทอรี ก่อนหน้านี้
pwd แสดงที่มาของไดเรกทอรีปัจจุบัน
man แสดงคู่มือการใช้คำสั่งต่างๆ




บทที่ 2
2.1 คัดลอกไฟล์

cp(copy)
คำสั่งที่ใช้ในการคัดลอกไฟล์ เช่น

$ cp file1 file2

จะคัดลอก file1 เป็นอีกไฟล์นึงที่ชื่อ file2 ซึ่งจะอยู่ที่ไดเรกทอรีเดียวกันกับ file 1 ทีเป็นต้นฉบับ


$ cp /vol/examples/tutorial/science.txt .
Note : อย่าลืมจุดที่ท้ายคำสั่ง
จะคัดลอกไฟล์ที่ชื่อ science.txt มาไว้ที่ไดเรกทอรีปัจจุบันที่อยู่ ซึ่งมีชื่อเหมือนเดิม

2.2 การย้ายไฟล์

mv (move)
เป็นคำสั่งย้าย หรือเปลี่ยนชื่อไฟล์ หรือไดเรกทอรี

$ mv file1 file2
เป็นการเปลี่ยนชื่อไฟล์เดิมจาก file1 เป็น file2

$ mv science.bak backups/.
เป็นการย้ายไฟล์ science.bak ไปที่ directory ชื่อ backups





2.3 ลบไฟล์หรือไดเรกทอรี

rm (remove)
rmdir (remove directory)

ตัวอย่าง
$ cp science.txt math.txt
$ ls (ตรวจสอบว่ามีการสร้างไฟล์ text.txt มาแล้ว)
$ rm math.txt (ลบไฟล์ชื่อ math.txt)
$ ls (ตรวจดู พบว่ามันได้ถูกลบไปแล้ว)

Note : เราสามารถลบไดเรกทอรีได้ แต่ภายในไดเรกทอรีนั้นจะต้องแน่ใจว่าว่างอยู่
$ ls (ตรวจสอบภายในไดเรกทอรีว่าว่างหรือไม่)
$ cd .. (ถอยขึ้นมาจากไดเรกทอรีปัจจุบัน ที่จะลบ)
$ rmdir newdirectory (ลบไดเรกทอรีนั้น พบว่าไม่เห็นไดเรกทอรีนี้แล้ว)

2.4 แสดงเนื้อหาไฟล์ที่จอภาพ

clear (clear screen)

ก่อนที่คุณจะทำงานในคำสั่งต่อไป หน้าจอของคูณในเทอร์มินอลอาจดูรกตาไปหน่อย ดังนั้นคำสั่งนี้จะเป็นการเคลียร์หน้าจอ ผลลัพธ์ที่ได้จะเป็นหน้าจอที่สะอาดตา โดยมุมบนซ้ายมือ จะมีพร้อม % มารอรับคำสั่งต่อไป
$ clear

cat (concatenate)
ใช้แสดงเนื้อหาไฟล์บนจอได้ โดยไม่ต้องเสียเวลาในการเปิด editor (เครื่องมือในการเขียนไฟล์)
$ cat science.txt




less
ใช้ช่วยในการอ่านไฟล์แบบถอย หน้าหลังได้
$ less science.txt

กดปุ่ม เป็นการเลื่อนไปอีกทีละ 1 หน้าจอ
กดปุ่ม เป็นการจบ หรือออกจากคำสั่ง less

Note : สำหรับไฟล์ที่เนื้อหายาว นิยมใช้คำสั่ง less มากกว่า cat


head
แสดงเนื่อหาไฟล์ตอนต้น 10 บรรทัดแรกบนจอ
$ head science.txt

$ head –5 science.txt
จะแสดง 5 บรรทัดแรกของไฟล์นี้

tail
แสดงเนื้อหาไฟล์ 10 บรรทัดสุดท้าย
$ tail science.txt


2.5 ค้นหาเนื้อหาไฟล์

less
จะใช้ค้นหาไฟล์โดยตรงจาก keyword
$ less science.txt
มันจะแสดงเนื้อหาในไฟล์นี้ จากนั้นเราก็จะพิมพ์
/science
เป็นการให้หาคำว่า science ในไฟล์นี้ จากนั้น กด เพื่อเลื่อนหาคำนั้นตัวต่อๆไป ภายในไฟล์


grep
เป็นคำสั่งที่ใช้ค้นหาคำ ภายในไฟล์ใหญ่ ๆ
$ grep science science.txt
จะช่วยหาบรรทัดที่มีคำค้นหา ตามกำหนด ที่นี้หา science ซึ่งตัวเล็ก-ตัวใหญ่ ถือว่าต่างกัน


$ grep –i science science.txt
จะมองว่าตัวเล็ก-ตัวใหญ่ เป็นตัวเดียวกัน

$ grep –i ‘spinning top’ science.txt
กรณีที่ค้นหา วลี หรือ ตัวอย่าง จะต้องใส่เครื่องหมาย ‘ ’

Option อื่นๆ
-v แสดงเฉพาะบรรทัดที่ไม่มีคำค้น ตามกำหนด
-n แสดงหมายเลขที่มีคำค้นหาด้วย
-c แสดงเฉพาะผลรวมจำนวนบรรทัดที่มีคำค้นนั้นๆ

$ grep –ivc science science.txt
จะได้ผลลัพธ์เป็น ผลรวมจำนวนบรรทัดที่ไม่มีคำว่า science หรือ Science ในไฟล์ science.txt

wc (word count )
คำสั่งนี้จะใช้บอกรายละเอียดของไฟล์ว่าไฟล์ที่กำหนดมีจำนวนไบต์ จำนวนคำ และจำนวนบรรทัด เท่ากับเท่าไร

$ wc –w science.txt
แสดงจำนวนคำทั้งหมดที่อยู่ในไฟล์นี้

$ wc –l science.txt
แสดงจำนวนบรรทัดทั้งหมด ในไฟล์นี้

บทที่ 3

3.1 Redirection (การรับข้อมูลเข้าและการส่งข้อมูลออก)
process (โปรแกรมหนึ่งๆ ที่กำลังทำงานอยู่)ส่วนใหญ่เริ่มต้นจาก การใช้คำสั่งบน unix เขียนข้อมูลออกทาง standard output ซึ่งแสดงผลออกทางหน้าจอ การรับข้อมูลเข้าจาก standard input (ได้รับข้อมูลเข้าจากทางแป้นพิมพ์) และการแสดงข้อมูลออกทาง standard error ในกรณีที่เป็นการแจ้งข้อความที่ผิดพลาดโดยแสดงออกทางหน้าจอ
เราได้กล่าวถึงการใช้คำสั่ง cat แล้วในการเขียนเนื้อความของแฟ้มงานออกทางหน้าจอ
ฝึกปฏิบัติ
ทดลองพิมพ์คำสั่ง cat แต่ไม่ต้องพิมพ์แฟ้มงานที่เราจะอ่านตามหลัง หลังจากนั้นให้กดปุ่ม enter และตามด้วย Control D (^D) เพื่อเป็นการจบการส่งข้อมูลเข้า
สังเกตสิ่งที่เกิดขึ้น
ผลที่เกิดขึ้น
เมื่อเราพิมพ์คำสั่ง cat แต่ไม่ตามด้วยชื่อของแฟ้มงาน process จะรออ่านข้อมูลเข้าทางแป้นพิมพ์ และเมื่อได้รับสัญญานการจบของแฟ้มงาน (^D) จะมีการคัดลอกข้อมูลเข้าที่เราได้พิมพ์ไว้และแสดงผลทาง standard outputออกทางหน้าจอ
ในระบบปฏิบัติการ unix เราสามารถใช้คำสั่งเพียงคำสั่งเดียวในการรับข้อมูลเข้าและแสดงข้อมูลออก ซึ่งจะทำการศึกษาต่อไป

3.2 Redirection the Output (การส่งข้อมูลออก)
การใช้สัญลักษณ์ > ในการส่งผ่านของข้อมูลออกของคำสั่ง
ฝึกปฏิบัติ
สร้างแฟ้มงานขึ้น 1 แฟ้มโดยใช้ชื่อว่า list1 เนื้อความในแฟ้มงานประกอบดด้วยชื่อของผลไม้
1.พิมพ์คำสั่ง cat > list1
2.พิมพ์ชื่อผลไม้และกด enter ทุกครั้งที่ขึ้นชื่อใหม่
pear
banana
apple
^D (กด Control D เพื่อหยุด)
สังเกตสิ่งที่เกิดขึ้น
ผลที่เกิดขึ้น
เมื่อพิมพ์คำสั่ง cat จะมีการอ่านข้อมูลเข้าโดยรอรับจากแป้นพิมพ์ และสัญลักษณ์ > จะเป็นการส่งข้อมูลออกไปที่แฟ้มงานแทนการแสดงออกทางหน้าจอทางปกติ พิมพ์คำสั่ง cat list1 เพื่อดูเนื้อหาของแฟ้มงาน list1
แบบฝึกหัด
ใช้วิธีข้างต้นสร้างแฟ้มงานขึ้น 1 แฟ้มให้ชื่อว่า list2 เนื้อความของแฟ้มงานนั้นประกอบด้วยชื่อของผลไม้ดังนี้ orange, plum, mango, grapefruit เมื่อสร้างแล้วให้เข้าไปอ่านแฟ้มงานนั้น
สัญลักษณ์ >> คือการนำ standard output(ข้อมูลออก) ไปต่อท้ายแฟ้มงานเดิม
ฝึกปฏิบัติ
พิมพ์คำสั่ง cat >> list1 และตามด้วยชื่อผลไม้ต่อไปนี้
peach
grape
orange
^D(Control D)
อ่านแฟ้มงาน list1 โดยใช้คำสั่ง cat list1

ในกรณีที่มีแฟ้มงาน 2 แฟ้ม แฟ้มที่ 1 ประกอบด้วยชื่อผลไม้ 6 ชื่อ แฟ้มที่ 2 ประกอบด้วยชื่อผลไม้ 4 ชื่อ เราสามารถใช้คำสั่ง cat เพื่อรวมแฟ้มงานทั้ง 2 แฟ้มนี้เข้าด้วยกันได้ ดังนี้
cat list1 list2 > biglist
หมายความว่าจะมีการอ่านและรวมเนื้อหาในแฟ้ม list1 และแฟ้ม list2 เข้าไว้ด้วยกันโดยส่ง standard output (ข้อมูลออก) ไปไว้ที่แฟ้ม biglist
อ่านเนื้อหาในแฟ้ม biglist โดยใช้คำสั่ง cat list1

1. Redirection the Input(การส่งข้อมูลเข้า)
< เป็นสัญลักษณ์ในการส่งข้อมูลเข้า (input)
คำสั่ง sort เป็นคำสั่งในการจัดเรียงข้อมูลตามลำดับตัวอักษรหรือตามลำดับตัวเลข
ฝึกปฏิบัติ
พิมพ์คำสั่ง sort หลังจากนั้นกด enter และพิมพ์คำสั่งดังต่อไปนี้
carrot
beetroot
artichoke
^D(Control D)
สังเกตสิ่งที่เกิดขึ้น
ผลที่เกิดขึ้น
จากการใช้คำสั่ง sort ทำให้คำที่เราพิมพ์นั้นถูกจัดเรียงใหม่ดังนี้
artichoke
beetroot
carrot
การใช้สัญลักษณ์ < เพื่อเป็นการส่งข้อมูลเข้าจากแฟ้มงานแทนการส่งจากแป้นพิมพ์ตามปกติ
ฝึกปฏิบัติ
1. พิมพ์คำสั่ง sort < biglist และสังเกตสิ่งที่เกิดขึ้นบนจอภาพ
2. พิมพ์คำสั่ง sort < biglist > slist และสังเกตสิ่งที่เกิดขึ้นในแฟ้ม slist โดยใช้คำสั่ง cat slist

1. Pipes (ท่อ)
who
who คือคำสั่งที่ใช้ดูว่าในระบบที่เราใช้อยู่นั้นมีใครกำลังใช้อยู่บ้าง ทดลองพิมพ์คำสั่ง who จะเกิดผลขึ้นบนจอภาพดังนี้
root tty1 Jun 2 22:22
sc450634 pts/0 Jun 3 00:09 (cyber.compsci.buu.ac.th)
sc450634 pts/1 Jun 3 00:09 (cyber.compsci.buu.ac.th)
sc450317 pts/3 Jun 3 00:16 (lab417-36.compsci.buu.ac.th)
sc450317 pts/4 Jun 3 00:16 (lab417-36.compsci.buu.ac.th)
sc450317 pts/5 Jun 3 00:16 (lab417-36.compsci.buu.ac.th)
sc450090 pts/6 Jun 3 00:18 (t418.compsci.buu.ac.th)
sc450090 pts/7 Jun 3 00:19 (t418.compsci.buu.ac.th)
nok pts/8 Jun 3 00:39 (ddmsr81s.compsci.buu.ac.th)
root pts/2 Jun 2 22:23
หากเราต้องการให้ผลจากการใช้คำสั่ง who ไปขึ้นที่แฟ้ม names.txt แทน จะใช้คำสั่งดังนี้ who > namex.txt
ถ้าต้องการจัดเรียงข้อมูลในแฟ้ม names.txt และแสดงผลออกทางหน้าจอ
ให้ใช่คำสั่ง sort < namex.txt
แต่วิธีดังกล่าวช้าและต้องจำชื่อของแฟ้มที่เป็นตัวกลาง (names.txt) และต้องลบออกเมื่อใช้งานเสร็จแล้ว ซึ่งเรามีวิธีที่ดีกว่าคือการใช้ pipe มีสัญลักษณ์คือ |
จาก 2คำสั่งข้างต้นสามารถรวมเป็นคำสั่งเดียวได้ดังนี้ who | sort คือการนำ output (ข้อมูลออก) ของคำสั่ง who ไปเป็น input ของคำสั่ง sort โดยมี pipe เป็นตัวส่งผ่าน และแสดงผลออกทางหน้าจอ
วิธีนี้ดีกว่าวิธีข้างต้นเพราะเร็วกว่าและไม่ยุ่งยาก
คำสั่ง who | wc -l ใช้เพื่อดูว่าขณะนี้มีผู้ใช้งานในระบบกี่คน
แบบฝึกหัด
a2ps -Phockney textfile คือคำสั่งที่ใช้พิมพ์งานที่เป็น textfile (แฟ้มงานที่สามารถแก้ไขได้) ไปที่เครื่องพิมพ์ที่ชื่อว่า hockney
ใช้คำสั่ง pipes พิมพ์ทุกบรรทัดที่มีตัวอักษร p อยู่ ในแฟ้มงาน list1 และ list2 ใช้คำสั่ง sort เพื่อเรียงข้อมูลทั้งหมด และพิมพ์ออกทางเครื่องพิมพ์ที่ชื่อว่า hockney
คำตอบ
cat list1 list2 | grep p | sort | a2ps -Phockney

สรุป
command > file คือการส่งข้อมูลออกไปที่แฟ้มงาน
command >> file คือการนำข้อมูลออกไปต่อท้ายแฟ้มงาน
command < file คือการส่งข้อมูลเข้าโดยแฟ้มงาน
command1 | command2 การส่งข้อมูลออกของคำสั่งที่1 ไปเป็นข้อมูลเข้าของคำสั่งที่ 2
cat file1 file2 > file0 คือการนำแฟ้ม file1 และ file2 ไปรวมกัน และนำข้อมูลออกไปใส่ที่แฟ้ม file0
sort คือการเรียงลำดับข้อมูล
who คือการดูว่าในขณะนี้มีใครกำลังเข้าสู่ระบบบ้าง
a2ps -Pprinter textfile คือการพิมพ์งานที่เป็นแฟ้มประเภท textfile (แฟ้มงานที่สามารถแก้ไขได้)
lpr -Pprinter psfile คือการพิมพ์งานที่เป็นแฟ้มประเภท postscript (แฟ้มงานที่ไม่สามารถแก้ไขได้)












บทที่ 4

4.1 Wildcards
ตัวอักขระ * และ ?
เรียกว่า Wildcard ใช้แทนตัวอักขระใดๆ ตั้งแต่ 0 ตัวขึ้นไป
เช่น ls list* หมายความว่า แสดงชื่อแฟ้มทุกแฟ้มที่ขึ้นต้นด้วยคำว่า list
ls *list หมายความว่า แสดงชื่อแฟ้มทุกแฟ้มที่ลงท้ายด้วยคำว่า list
? มีความหมายว่า การใช้แทนตัวอักขระใดๆ เพียง 1 ตัวเท่านั้น
เช่น ?ouse จะหมายถึงคำใดๆที่เริ่มต้นด้วยอักขระใดๆ เพียง 1 ตัวและลงท้าย ouse เช่น mouse, house ไม่ใช่ grouse

4.2 Filename conventions (ข้อตกลงในการตั้งชื่อแฟ้มงาน)
อักขระที่ควรหลีกเลี่ยงในการตั้งชื่อแฟ้มงานคือ อักขระพิเศษเหล่านี้ / * & % และช่องว่าง
อักขระที่เหมาะสมในการตั้งชื่อแฟ้มคือ ตัวอักษร ตัวเลข ขีดล่าง(_) และจุด(.)
ข้อตกลงในการตั้งชื่อแฟ้ม ควรเริ่มต้นด้วยตัวพิมพ์เล็ก ตามด้วยจุด(.) และจบด้วยกลุ่มตัวอักษรที่ระบุถึงชนิดของแฟ้มนั้น เช่น ถ้าเราเขียนแฟ้มด้วยภาษา c ก็จะเป็น .c เช่น prog.c
ถ้าต้องการแสดงชื่อแฟ้มงานทั้งหมดที่เขียนด้วยภาษา c สามารถใช้คำสั่ง ls *.c ได้
ข้อควรระวัง
ในบางโปรแกรมจะให้ชื่อแฟ้มหลังจากการ compile (การแปลจากภาษาที่คนเข้าใจให้เป็นภาษาคอมพิวเตอร์) แล้วได้ชื่อเดิมทุกครั้ง เช่น โปรแกรมที่ให้ชื่อแฟ้มเป็น a.out ดังนั้นเราจึงควรตั้งชื่อใหม่เองทุกครั้ง ถ้าหากไม่ตั้งชื่อใหม่ จะมีคำแนะนำให้เปลี่ยนชื่อ ถ้าไม่เปลี่ยนแฟ้มเก่าจะถูกเขียนทับทันที

4.3 Getting Help
On-line Manuals (คู่มือบนระบบเครือข่าย)
คู่มือในการใช้คำสั่ง สามารถดูได้ที่ manulas page (คู่มือการใช้) โดยพิมพ์คำสั่ง man และตามด้วยคำสั่งที่เราต้องการรู้ความหมาย วิธีการใช้คำสั่ง และทางเลือก(options)ต่างๆของคำสั่งนั้น
เช่น man wc ( เป็นคำสั่งในการนับจำนวนคำ) นอกจากนี้ยังมีอีก 1 คำสั่งที่ให้ผลเหมือนกันคือ whatis wc แต่ต่างกันตรงที่ whatis จะให้เพียงความหมายอย่างย่อเท่านั้น


Apropos
คำสั่ง apropos มีไว้เพื่อการค้นหาคำสั่งโดยมี keyword (คำสำคัญ) เป็นแนวทางในการค้นหา มีรูปแบบการใช้คือ apropos keyword
เช่น ต้องการค้นหาคำสั่งที่เกี่ยวข้องกับการ copy ให้พิมพ์คำสั่ง apropos copy หลังจากนั้นจะมีการค้นหาคำสั่งทั้งหมดใน man page ที่มีคำว่า copy และแสดงผลออกทางหน้าจอ

สรุป
• * แทนอักขระใดๆ ตั้งแต่ 0 ตัวขึ้นไป
• ? แทนอักขระใดๆ เพียง 1 ตัวเท่านั้น
• man command คำสั่งในการเรียกดู manual page (คู่มือในการใช้คำสั่งทั้งหมดบนระบบปฏิบัติการ UNIX)
• whatis command คำสั่งในการค้นหาความหมายของคำสั่งอย่างย่อ
• apropos keyword คำสั่งในการค้นหาคำสั่งที่เกี่ยวข้องกับ keyword ทั้งหมดใน man page


















บทที่ 5

5.1 File system security (access rights)
ความปลอดภัยของระบบแฟ้มงาน (การเข้าถึงโดยสิทธิ)
เมื่อพิมพ์คำสั่ง ls -l (แสดงชื่อและรายละเอียดของแฟ้มงานทั้งหมด) ข้อมูลออกจะปรากฏดังด้านล่าง
-rwxrw-r-- 1 ee51ab beng95 700 Oct 1st 1995 file1
แต่ละตัวในประโยคข้างต้นมีความหมายดังต่อไปนี้
• -rwxrw-r-- คือ สัญลักษณ์อย่างหนึ่งมีทั้งหมด 10 ตัว แสดงถึงความสามารถในการเข้าถึงแฟ้มงาน ในตัวอย่างมีความหมายดังต่อไปนี้ ถ้าตัวซ้ายมือสุดเป็นตัวอักษร d แสดงว่าเป็น directory แต่ที่นี้เป็น- จึงเป็นแค่แฟ้มงาน สิทธิในการเข้าใช้แฟ้มงานนี้คือ เจ้าของสามารถอ่าน เขียน และexecute ได้ ผู้ใช้ที่อยู่ในกลุ่มเดียวกันสามารถอ่านเเละเขียนได้ และผู้ใช้อื่นสามารถอ่านแฟ้มงานนี้ได้อย่างเดียวเท่านั้น
• ee51ab คือชื่อของเจ้าของแฟ้มงาน
• beng95 คือชื่อกลุ่มของเจ้าของแฟ้มงานนั้น
• 700 คือขนาดของแฟ้มงาน
• Oct 1st 1995 คือวันที่ที่สร้างแฟ้มงาน
• file1 คือชื่อของแฟ้มงาน

ls -lg เป็นคำสั่งที่ใช้แสดงชื่อและรายละเอียดของแฟ้มงานทั้งหมดในdirectory หนึ่งๆ แต่ต่างจาก ls -l ที่จะไม่มีชื่อกลุ่มของเจ้าของ เช่น
-rwxrw-r-- 1 ee51ab 700 Oct 1st 1995 file1

ดังตัวอย่างข้างต้นจะพบว่าสิทธิในการเข้าถึงแฟ้มงานนั้นแบ่งออกเป็นตัวอักษรทั้งหมด 10 ตัว ประกอบด้วย ตัวอักขระ d, r, w, x, - และ S, s
(จะพบ S, s ในบางกรณีเท่านั้น)
ตัวอย่าง
-rwxrw-r-- จะแบ่งอักขระทั้ง 10 ตัวออกเป็น 4 ช่วง ดังนี้
• ช่วงที่ 1 อักขระตัวแรกทางซ้ายสุดจะมี 2 แบบคือ d หมายถึง directory และ หมายถึงการเริ่มต้นของกลุ่มอักขระทั้ง 10 ตัว
• ช่วงที่ 2 อักขระ 3 ตัวถัดมาหมายถึง สิทธิในการเข้าถึงของเจ้าของแฟ้มหรือ directory นั้น
• ช่วงที่ 3 อักขระ 3 ตัวถัดมาหมายถึง สิทธิในการเข้าถึงของกลุ่มของเจ้าของแฟ้มหรือ directory นั้นๆ
• ช่วงที่ 4 อักขระ 3 ตัวสุดท้ายหมายถึง สิทธิในการเข้าถึงของผู้ใช้อื่นนอกจาก 2 กลุ่มข้างต้น
ความหมายของ r, w, x, (-)
• r หมายถึง สิทธิในการอ่าน คัดลอกแฟ้มงาน และการดูแฟ้มทั้งหมดใน directory
• w หมายถึง สิทธิในการเปลี่ยนแปลง ย้าย และลบแฟ้มงาน
• x หมายถึง สิทธิในการ execute แฟ้มงาน
ตัวอย่าง
1. -rwxrwxrwx หมายถึงทุกคนสามารถอ่าน เขียน ลบ และexecute แฟ้มงานนี้ได้
2. -rw

หมายถึงเจ้าของคนเดียวเท่านั้นที่สามารถอ่านและเขียนแฟ้มงานนี้ได้ แต่ไม่สามารถ execute แฟ้มงานนี้

5.2 Changing access rights (การเปลี่ยนแปลงสิทธิในการเข้าถึงแฟ้มงาน)
chmod คือคำสั่งในการเปลี่ยนแปลงสิทธิในการเข้าถึงแฟ้มงาน ตัวเลือกของคำสั่ง chmod มีดังนี้
• u หมายถึง user (ผู้ใช้)
• g หมายถึง group (กลุ่มของผู้ใช้)
• o หมายถึง other (บุคคลอื่นๆนอกเหนือจากผู้ใช้และกลุ่มของผู้ใช้)
• a หมายถึง all (ผู้ใช้ กลุ่มของผู้ใช้และบุคคลอื่น)
• r หมายถึง read (สิทธิในการอ่าน)
• w หมายถึง write (สิทธิในการเขียนและลบ)
• x หมายถึง execute (สิทธิในการ execute)
• + หมายถึง การเพิ่มสิทธิในการใช้งาน
• - หมายถึง การลดสิทธิในการใช้งาน
ตัวอย่าง
1. chmod go-rwx biglist หมายความว่า ไม่อนุญาตให้กลุ่มของผู้ใช้และบุคคลอื่นอ่าน เขียน ลบและ execute แฟ้มงาน biglist
2. chmod a+rw biglist หมายความว่า อนุญาตให้ทุกคนมีสิทธิในการเขียนและอ่านแฟ้มงาน biglist ได้

5.3 Processes and Jobs (โปรแกรมและงานที่กำลังทำอยู่)
ps คือคำสั่งที่ใช้ในการดูรายละเอียดเกี่ยวกัน process ที่กำลังทำงานอยู่ เมื่อใช้คำสั่งนี้จะได้ข้อมูลเกี่ยวกับหมายเลขของ process (PID – process id) ซึ่งแต่ละ process จะมีเลขที่ไม่ซ้ำกัน และบอกเกี่ยวกับสถานะของ process นั้น
ตัวอย่าง
bash-2.05b# ps
จะปรากฏผลดังนี้
PID TTY TIME CMD
1101 pts/1 00:00:00 bash
1102 pts/1 00:00:00 ps
ในบาง process ที่ใช้เวลาในการทำงานนาน และในขณะที่ process แรกกำลังทำงานอยู่นั้นจะไม่สามารถทำงานอื่นๆได้ เราสามารถแก้ไขได้โดยการ run คำสั่งนั้นเป็น background (พื้นหลัง) ซึ่งจะเรียนในหัวข้อถัดไป

Running background processes
Process สามารทำงานได้ ใน background (พื้นหลัง) foreground (พื้นหน้า) หรือ suspended ( การหยุดทำงานชั่วคราว)ได้
สำหรับการทำงานเป็นพื้นหลังนั้นทำโดยการพิมพ์ & ต่อท้ายคำสั่ง
ตัวอย่าง sleep 10 เมื่อพิมพ์คำสั่งนี้ ระบบจะทำการคอย 10 วินาที ระหว่างนี้จะไม่สามารถทำงานอื่นๆได้ และเมื่อสิ้นสุดคำสั่งก็จะเข้าสู่หน้าการใช้งานปกติ แต่เมื่อใช้คำสั่ง sleep 10 & การทำงานของคำสั่ง sleep จะถูกนำไป run เป็น background ซึ่งสามารถใช้คำสั่งอื่นในระหว่างนี้ได้
ตัวอย่าง bash-2.05b# sleep 11 &
[1] 1149
จากข้างต้น
1. sleep 11 & คือคำสั่งให้ระบบคอยเป็นเวลา 11 วินาที โดย run คำสั่งนี้เป็นพื้นหลัง
2. [1] 1149 ==> [1] คือ หมายเลขลำดับของงานและ 1149 คือหมายเลขของ process

Backgrounding a current foreground process (การทำ process ที่เป็น foreground ให้เป็น background)
สามารถทำได้ดังนี้
1. พิมพ์ sleep 100
2. ENTER
3. กด Control Z (^z)
4. พิมพ์ bg
5. ENTER
ข้อควรระวัง ไม่ควรใช้การทำงานบน background กับโปรแกรมที่ต้องการการติดต่อกับผู้ใช้ เช่น pine



5.4 Listing suspended and background processes (ลำดับของ process ที่ทำงานบน background และงานที่หยุดทำชั่วขณะ)
เมื่อย้าย process จาก background หรือ จากการหยุด ระบบจะส่งตัวเลขที่เป็นลำดับในการทำงานให้ สามารถดูลำดับของ process ได้โดยใช้คำสั่ง jobs
จะได้ข้อมูลออกที่มีลักษณะดังนี้
[1] Suspened sleep 100
[2] Running netscape
[3] Running nedit
ถ้าจะเปลี่ยนจากการทำงานบน background มาเป็นการทำงานบน foreground สามารถทำได้โดยการพิมพ์คำสั่ง fg % jobsnumber เช่น fg % 1 ถ้าไม่ใส่ jobsnumber จะหมายถึง process ล่าสุด

3.5Killing a process (การฆ่า process)
การฆ่า process จะกระทำเมื่อ program ที่เรา execute นั้นเป็น program ที่มีการวนลูปไม่สิ้นสุด
1. Control C (^C) เป็นการฆ่า process แบบหนึ่งที่กำลังบน foreground
เฃ่น พิมพ์ sleep 100 Enter กด Control C มีผลให้คำสั่ง sleep 100 หยุดการทำงานและเข้าสู่หน้าจอที่พร้อมรับคำสั่งถัดไป
2.kill % jobsnumber เป็นการฆ่า process แบบหนึ่งที่กำลังบน background
เช่น พิมพ์คำสั่ง sleep 100 Enter
พิมพ์คำสั่ง jobs Enter (เพื่อดูลำดับของหมายเลขงาน)
พิมพ์คำสั่ง kill % 4 (ฆ่า process หมายเลข 4)

ps ( process status )
ps คือสถานะของ process นอกจากการฆ่า process แบบข้างต้นแล้ว ยังมีอีก 1 วิธีคือการใช้คำสั่ง kill PID_number (PID_number คือ หมายเลขของ process)
ตัวอย่าง พิมพ์คำสั่ง sleep 100 Enter
พิมพ์คำสั่ง ps จะปรากฏผลดังนี้
PID TT S TIME CMD
20077 pts/5 S 0.05 sleep 100
21563 pts/5 T 0.00 netscape
21873 pts/5 S 0.25 nedit
ถ้าต้องการฆ่า process ของ sleep 100 ใช้คำสั่ง kill 20077
ตรวจสอบโดยพิมพ์คำสั่ง ps อีกครั้งเพื่อดูว่า process ของ sleep 100 หายไปหรือไม่ และถ้า process ใดมีความซับซ้อนมาก ให้ใช้คำสั่ง kill -9 20077

สรุป
• ls -lag คือคำสั่งที่ใช้แสดงชื่อและรายละเอียดของแฟ้มงานทั้งหมดใน 1 directory
• chmod [option] file คือคำสั่งที่ใช้ในการเปลี่ยนสิทธิในการเข้าถึงแฟ้มงาน
• command & คือคำสั่งที่ใช้ในการ run คำสั่งบน background
• ^C คือคำสั่งที่ใช้ฆ่า process ที่กำลังทำงานอยู่บน foreground
• ^Z คือคำสั่งที่ใช้ในการหยุดการ run process บน foreground
• bg คือคำสั่งที่ใช้ในการนำงานไปใส่บน background
• jobs คือคำสั่งที่ใช้ในการดูลำดับงานของ process
• fg % 1 คือคำสั่งที่ใช้เพื่อการนำงานที่ 1 มา run บน foreground
• kill % 1 คือคำสั่งที่ใช้ฆ่า process
• ps คือคำสั่งที่ใช้ในการดูหมายเลข process
• kill 26152 คือคำสั่งที่ใช้ฆ่า process






































 
Top