+ All Categories
Home > Documents > ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1....

´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1....

Date post: 20-Jun-2020
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
61
Transcript
Page 1: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

ยนกซขนตน

เทพพทกษ การญบญญานนท

Page 2: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

2

Page 3: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

สารบญ

1 เรมตนกบยนกซ 5

1.1 วธตางๆ ทจะปอนคำสงยนกซ . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 คำสงเบองตน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.1 เขยนขอความออกจอภาพ . . . . . . . . . . . . . . . . . . . . 6

1.2.2 ดวน-เวลา . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2.3 ดรายชอไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2.4 ดเนอหาไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.2.5 สำเนาไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2.6 เปลยนชอไฟล . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.2.7 ลบไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.2.8 พมพไฟลออกเครองพมพ . . . . . . . . . . . . . . . . . . . . 14

1.3 ไดเรกทอร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3.1 ไดเรกทอรปจจบน . . . . . . . . . . . . . . . . . . . . . . . . 17

1.3.2 การเปลยนไดเรกทอร . . . . . . . . . . . . . . . . . . . . . . 17

1.3.3 “.” และ “..” . . . . . . . . . . . . . . . . . . . . . . . . 18

1.3.4 การสรางไดเรกทอร . . . . . . . . . . . . . . . . . . . . . . . 19

1.3.5 การสำเนาและยายไฟลขามไดเรกทอร . . . . . . . . . . . . . . . 20

1.3.6 การสำเนาไดเรกทอร . . . . . . . . . . . . . . . . . . . . . . 20

1.3.7 การลบไดเรกทอร . . . . . . . . . . . . . . . . . . . . . . . . 21

1.4 การตงชอไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.5 wildcard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3

Page 4: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4

2 ระบบรกษาความปลอดภย 252.1 ผใชและกลม . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2 การตงรหสผาน . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.3 สารบบผใช . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.4 ใครเปนใคร . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.4.1 ฉนคอใคร . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.4.2 เหลอบแลเพอนบาน . . . . . . . . . . . . . . . . . . . . . . . 272.4.3 รจกเพอนบาน . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.5 ผดแลระบบ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.6 แปลงราง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.7 การปกปองไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.7.1 สทธการเขาถงไฟล . . . . . . . . . . . . . . . . . . . . . . . 302.7.2 สทธการเขาถงไฟลแบบพเศษ . . . . . . . . . . . . . . . . . . 312.7.3 การกำหนดสทธเขาถงไฟล . . . . . . . . . . . . . . . . . . . . 322.7.4 การโอนเจาของไฟล . . . . . . . . . . . . . . . . . . . . . . . 34

3 เกยวกบไฟลและไดเรกทอร 353.1 ชนดของไฟลบนยนกซ . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2 ระบบไฟลบนยนกซ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3 i-node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.4 การลงกไฟล . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.5 ตรวจสอบการใชเนอทดสก . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 เครองมอประมวลผลไฟล 434.1 การเปลยนทศทางขอมล . . . . . . . . . . . . . . . . . . . . . . . . . . . 434.2 เชอมคำสงดวย pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.3 ตวกรอง . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.3.1 head . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.3.2 tail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.3.3 grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3.4 wc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.3.5 sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.3.6 uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.3.7 tee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.3.8 cut และ paste . . . . . . . . . . . . . . . . . . . . . . . . . 574.3.9 comm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.4 สงทาย . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Page 5: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

บทท

1

เรมตนกบยนกซ

ยนกซเปนระบบปฏบตการทมประวตยาวนาน ถอไดวาเปนระบบทมอายการใชงานนานทสด และแพรหลายในเครองคอมพวเตอรประเภทตางๆ มากทสดเทาทมนษยเคยมมา ไมวาจะเปนเครองในระดบมนคอมพวเตอรไปจนถงอปกรณพกพา ยนกซถกใชงานในหองวจย ในสถาบนการศกษา ในงานทางทหาร เปนจดกำเนดของอนเทอรเนต และของภาษา C ซงเปนภาษาสำหรบเขยนโปรแกรมระบบทแพรหลายทสดในปจจบนรวมทงเปนตนแบบสำหรบระบบปฏบตการอนๆ เชน MS-DOS, MS-Windows, OS/2 ผานทางมาตรฐานPOSIX อกดวย

ยนกซเองมการแตกแขนงออกไปมากมาย โดยเรมจากท AT&T Bell Lab โดย เคน ทอมปสน (KenThompson) ใน พ.ศ. 2512 ไปแตกหนอและพฒนาอยางมโหฬารทมหาวทยาลยแคลฟอรเนยทเบอรคลยเปน BSD Unix (ซงเปนแบบฉบบของ FreeBSD, NetBSD, OpenBSD และยนกซเชงพาณชยหลายตวในปจจบน) โดยตอมา AT&T กไดผนวกสวนขยายตางๆ กลบเขามาใน AT&T Unix System V เชนกนผผลตตางๆ กไดนำยนกซไปใชกบผลตภณฑของตนมากมาย เชน SunOS และ Solaris บนเครอง SunSPARC, Ultrix บน DEC PDP-11, HP-UX ของ HP, Aix ของ IBM, Xenix ของไมโครซอฟทในยคหนง (ซงตอมากลายเปน SCO Unix สำหรบเครอง PC) ฯลฯ รวมทง GNU/Linux หรอทเราเรยกกนสนๆ วาลนกซทเรากำลงพดถงในเอกสารฉบบน กนบไดวาเปนแขนงหนงของระบบยนกซเชนกน โดยเปนการเขยนขนมาใหมทงหมดภายใตเงอนไขของซอฟตแวรเสร

การทยนกซถกใชงานกวางขวางเชนน กเปนเพราะยนกซถกออกแบบมาดวยปรชญาทเรยบงาย ชดเจนแตกยงยดหยนและมประสทธภาพในการแกปญหาทซบซอน ทำใหมวฒนธรรมการใชงานเปนแบบฉบบของตวเอง ความคงทนอยในวงการมากวา 30 ปจงทำใหยนกซนาศกษาแมสำหรบผทไมไดใชยนกซกตาม

ในปจจบนน แมเดสกทอปลนกซจะอำนวยความสะดวกตอผใชดวยการสงงานผาน GUI ซงมการพฒนาขนมาเปนลำดบตามยคสมย แตโดยเนอแทแลว การสงงานผาน GUI จะทำงานไดเฉพาะในรปของโปรแกรมสำเรจรปทนกพฒนาไดออกแบบไวใหเทานน จงทำงานไดดสำหรบงานทมการออกแบบรองรบไวแลว เชน การสรางเอกสาร งานกราฟก การสำเนา/เคลอนยายไฟล ฯลฯ แตสำหรบงานอกหลายประเภทยงตองการความยดหยนมากกวานน เชน การแกไขหรอแปลงไฟลทละหลายไฟล การประมวลผลไฟลโดยผานขนตอนเปนทอดๆ การทำงานในภาวะทไมม GUI (เชน โปรแกรมททำงานอตโนมตขณะบต

5

Page 6: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

6 บทท 1. เรมตนกบยนกซ

เครอง หรอการดแล server จากระยะไกล) ทงหมดน สามารถทำไดดวยการสงงานผานบรรทดคำสงของยนกซ ซงมความคลองตวสงแมสำหรบงานทไมใชงานสำเรจรป

1.1 วธตางๆ ทจะปอนคำสงยนกซ

การปอนคำสงยนกซจะปอนผานตวแปลคำสงทเรยกวา เชลล (shell) ซงการจะไดมาซงเชลลนน กมอยหลายวธ เชน

1. ลอกอนใน text console2. เปด terminal emulator ใน X Window3. เชอมตอไปยงเครองปลายทางดวย telnet, rlogin หรอ ssh4. เรยกเชลลซอนเชลล5. ใช shell escape จากโปรแกรมบางโปรแกรม เชน viในทนขอใหใชสองวธแรกกอน สวนวธอนๆ ทเหลอนน เราจะไดพบตอไป

1.2 คำสงเบองตน

1.2.1 เขยนขอความออกจอภาพ

เรามาเรมจากคำสงททำใหเครองโตตอบอะไรกบคณไดกอนกแลวกน คณสามารถสงแสดงขอความใดๆออกทางจอภาพไดดวยคำสง echo

ตวอยางเชน

thep@anubis:~$ echo hello

hello

thep@anubis:~$ echo how are you

how are you

thep@anubis:~$ echo "how are you"

how are you

คำสง echo จะแสดงขอความทเปนอารกวเมนต (argument คอคาทสงใหกบคำสงใดๆ) ทงหมดโดยคนระหวางอารกวเมนตแตละตวดวยชองวางหนงชอง สงเกตวา ในคำสงแรก เราสงอารกวเมนตใหกบ echo เพยงคาเดยว คำสงถดมาสงใหสามคา คอ how, are และ you การเวนชองวางระหวางhow และ are จงไมมผลใดๆ ในขณะทคำสงสดทาย เราใชเครองหมายคำพดครอบขอความทงหมด ทำใหอารกวเมนตเหลอเพยงคาเดยว

คำสง echo – แสดงขอความ

รปแบบ echo [STRING] . . .

คำบรรยาย แสดง STRING ออกทางเอาทพตมาตรฐาน คนระหวาง STRING แตละตวดวยชองวางหนงชอง

Page 7: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.2. คำสงเบองตน 7

เมอเขยนจอภาพแลว คณกอาจจะอยากลบทง คำสงสำหรบลบจอภาพในยนกซไดแกคำสง clear

ซงจะพจารณาประเภทของจอทคณใช (เชน เปน xterm, Linux console หรอ VT100 ฯลฯ) และหาวธลบจอใหโดยอตโนมต

คำสง clear – ลบจอภาพ

รปแบบ clear

คำบรรยาย ลบจอภาพตามประเภทของเทอรมนลทใช

1.2.2 ดวน-เวลา

นกคอมพวเตอรหลายคนไมเคยใชนาฬกาขอมอเลย เพราะอาศยดเวลาจากเครองเอา ถงคณมนาฬกา คณกสามารถตรวจสอบนาฬกาของเครองวาเดนตรงหรอไมดวยคำสง date

thep@anubis:~$ date

Sat Jul 5 16:31:45 ICT 2003

อยาแปลกใจถาคณเหนปฏทนบนเครองของคณเปนภาษาไทย ไมเหมอนกบตวอยางขางบน นนแสดงวาคณไดใชระบบทปรบแตงใหเปนไทยแลว

คำสง date – แสดงวนทและเวลาของระบบ

รปแบบ date

คำบรรยาย แสดงวนทและเวลาของระบบ

นอกจากแสดงวน-เวลาปจจบนแลว คณอาจดปฏทนของเดอนปจจบนไดดวยคำสง cal

thep@anubis:~$ cal

July 2003

Su Mo Tu We Th Fr Sa

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30 31

หรอลองดปฏทนของเดอนอน

thep@anubis:~$ cal 2 2000

February 2000

Page 8: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

8 บทท 1. เรมตนกบยนกซ

Su Mo Tu We Th Fr Sa

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29

ลองพมพ cal 2003 ทเครองของคณดสวาจะเกดอะไรขน

คำสง cal – แสดงปฏทน

รปแบบ cal [[month] year]

คำบรรยาย แสดงปฏทนของเดอนและปทกำหนด หากไมกำหนดอะไรเลยจะแสดงปฏทนของเดอนปจจบน และหากระบแตปไมระบเดอน จะแสดงปฏทนของทงป

1.2.3 ดรายชอไฟล

เราจะเรมสำรวจฮารดดสกกนดวยคำสงขอดรายชอไฟล ไดแกคำสง ls

thep@anubis:~$ ls

a.out Download hello.c Mail Projects tmp

ในบางระบบอาจมการตงคาไวใหใชสบงบอกชนดของไฟล เชน สนำเงนแทนไดเรกทอร สเขยวแทนไฟลโปรแกรม สปกตแทนไฟลขอมล เปนตน หากระบบของคณไมไดตงคาเชนนไว คณกยงสามารถดชนดของไฟลตางๆ ไดดวยการเพมตวเลอก -F

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ Projects/ tmp/

จะเหนวา มการเพมเครองหมายพเศษตอทายชอไฟลเพอบอกชนด กลาวคอ

/ หมายถงไดเรกทอร* หมายถงไฟลโปรแกรม@ หมายถง symbolic link= หมายถง socket| หมายถง named pipe (FIFO)

โดยถาไมมเครองหมายพเศษ จะหมายถงไฟลขอมลปกต ชนดตางๆ ของไฟล จะกลาวในรายละเอยดในบทท 3

แตไฟลตางๆ กยงมรายละเอยดมากกวาชนดของไฟล เชน ขนาด เวลาปรบปรงครงสดทาย ฯลฯ ซงคณสามารถขอดรายละเอยดทงหมดไดดวยตวเลอก -l

Page 9: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.2. คำสงเบองตน 9

thep@anubis:~$ ls -l

total 28

-rwxr-xr-x 1 thep users 4815 2002-08-23 14:49 a.out

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Download

-rw-r--r-- 1 thep users 77 2002-08-23 14:49 hello.c

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Mail

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Projects

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 tmp

บรรทดแรก (total 28) จะแสดงจำนวนบลอกทงหมดของไฟลในไดเรกทอรนน โดยบลอกหนงโดยปกตจะมขนาด 1024 ไบต ทงน สำหรบไฟลทเปนไดเรกทอรยอย (เชน Download) จะไมรวมขนาดของไฟลตางๆ ทอยใตไดเรกทอรยอยนน แตจะนบเพยงขนาดของตวไดเรกทอรยอย (ทเกบชอไฟลตางๆ)เทานน

จากนน กเปนรายละเอยดของแตละไฟลในไดเรกทอร โดยแตละรายการจะแบงเปนสวนตางๆ (จากซายไปขวา) ดงน

1. permission2. จำนวนลงก (ดหวขอ 3.3)3. ผใชทเปนเจาของไฟล4. กลมทเปนเจาของไฟล5. ขนาดของไฟล6. วน-เวลาทแกไขครงสดทาย7. ชอไฟลpermission แสดงสทธทอนญาตใหผใชแตละคนเขาถงไฟลได สวนนจะประกอบดวยตวอกษร 10

ตว โดยแบงออกเปน 4 สวน สวนแรกเปนชนดของไฟล แสดงดวยตวอกษรตวแรกตวเดยว สวนอก 3สวนถดไป แสดงดวยตวอกษรสวนละ 3 ตว เปนสทธของผใชทเปนเจาของไฟล สทธของผใชในกลมเดยวกบเจาของไฟล และสทธของผใชอนๆ ตามลำดบ

ชนดของไฟล ไดแก- หมายถงไฟลปกตd หมายถงไดเรกทอรl หมายถง symbolic links หมายถง socketc หมายถง character deviceb หมายถง block devicep หมายถง named pipe (FIFO)

ชนดตางๆ ของไฟล จะกลาวในรายละเอยดในบทท 3สวนสทธของผใชทแสดงดวยอกษรสามตวนน ตวแรกจะหมายถงสทธในการอาน (r) ตวถดมา

หมายถงสทธในการเขยน (w) ตวสดทายหมายถงสทธในการ execute (x) ซงหากในตำแหนงนนๆ เปนเครองหมายลบ (-) จะหมายถงไมอนญาต หากอนญาตกจะแสดงคา r, w หรอ x ตามลำดบ โดยในสวนของสทธการ execute นน ในบางกรณอาจใชอกษรอน ไดแก s, t, S, T ซงจะมความหมายพเศษ ดงจะไดกลาวถงในหวขอ 2.7.2

permission ของไฟลน สามารถเปลยนไดดวยคำสง chmod ดงจะกลาวถงในหวขอ 2.7.3

Page 10: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

10 บทท 1. เรมตนกบยนกซ

เราไดเหนการใชคำสง ls ในการแสดงรายชอไฟลไปแลว แตทผานมา ยงมไฟลอกสวนหนงทถกซอนไวไมไดแสดงออกมา ไฟลทถกซอนเหลานจะมชอขนตนดวย “.” คณสามารถดรายชอไฟลเหลานนไดโดยใชตวเลอก -a

thep@anubis:~$ ls -a

. .alias .bash_profile .cshrc hello.c Projects

.. a.out .bashrc Download Mail tmp

นอกจากน คำสง ls ยงสามารถตงตวเลอกในการแสดงผลไดอกหลายแบบ ดงแสดงในสรปคำสง

คำสง ls – ดรายชอไฟล

รปแบบ ls [ตวเลอก] [path]

คำบรรยาย แสดงรายชอไฟลใน path ทกำหนด โดยถาไมระบ path จะหมายถงไดเรกทอรปจจบน

ตวเลอก -1 แสดงหนงรายการตอบรรทด (สำหรบสงตอใหโปรแกรมอน)-a แสดงทกไฟลรวมทงไฟลทซอนอยดวย-F แสดงปายบอกชนดของไฟลอยางยอตอทายชอ-i แสดงหมายเลข i-node ของแตละไฟล-l แสดงรายละเอยดของไฟลอยางยาว-S เรยงลำดบตามขนาดของไฟล-t เรยงไฟลใหมขนมากอน

1.2.4 ดเนอหาไฟล

คำสงสำหรบดเนอหาไฟลของยนกซออกจะชอแปลกสกหนอย คอคำสง cat เชน เมอคณจะสงแสดงเนอหาของไฟล /etc/hostname (ซงเกบชอเครองของคณ) ออกทางจอภาพ:

thep@anubis:~$ cat /etc/hostname

anubis

ความจรงแลว คำสง cat มาจากคำวา catenate คอการตอไฟลเขาดวยกน แลวแสดงออกทางstandard output ตวอยางเชน เมอมไฟล a และ b คณสามารถตอไฟลทงสองเขาดวยกนออกทางจอภาพได:

thep@anubis:~$ cat a

hello

thep@anubis:~$ cat b

bye

thep@anubis:~$ cat a b

hello

bye

Page 11: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.2. คำสงเบองตน 11

ดงนน คณจะเหนวา การแสดงเนอหาไฟลหนงไฟลออกทางจอภาพ จงเปนเพยงกรณพเศษของการตอไฟลเทานนเอง คำสง cat สามารถจะตอไฟลกไฟลเขาดวยกนกได และถาคณเรยกคำสง cat โดยไมระบไฟลใดๆ เลย cat จะหมายถง standard input (ไดแกแปนพมพ ถาไมมการเปลยนใหเปนอยางอน)

thep@anubis:~$ cat

hello

hello

bye

bye�� ��Ctrl-d

thep@anubis:~$

คณจะเหนแมวตวนพดลอเลยนคณไปตลอดบรรทดตอบรรทด เพราะมนพยายามตอไฟลทมเพยงไฟลเดยว คอแปนพมพ แลวแสดงผลลพธออกทาง standard output ซงไดแกจอภาพ จนกวาคณจะกด�� ��Ctrl-d ซงยนกซกำหนดใหหมายถง end-of-file

การปลอยใหแมวลอเลยนอยางน กใชจะไรสาระเสยทเดยว เพราะถาคณเปลยนทศทาง standardoutput จากจอภาพเปนไฟลแลวละก มนกคอวธสรางไฟลขอความอยางงายนนเอง (เราจะกลาวถงการเปลยนทศทางขอมลอกครงในหวขอ 4.1):

thep@anubis:~$ cat > d

hello

anybody here?

bye�� ��Ctrl-d

thep@anubis:~$ cat d

hello

anybody here?

bye

คณจะไดเรยนรการใชเอดเตอรในการสรางไฟลขอความในโอกาสตอไป ซงจะชวยใหคณแกไขขอความไดสะดวกกวาน (อยางนอยๆ กสามารถกลบไปแกไขบรรทดกอนได)

คำสง cat – ตอไฟลแลวแสดงออกทาง standard output

รปแบบ cat [file . . . ]

คำบรรยาย ตอไฟลทกำหนดตามลำดบ (หากไมระบไฟลใดๆ จะหมายถง standard input) แลวแสดงผลออกทาง standard output

คำสง cat จะแสดงเนอหาไฟลออกทางจอภาพในฐานะทเปนไฟลไฟลหนง โดยไมมปฏสมพนธกบแปนพมพใดๆ ทงสน แตถาคณตองการดไฟลยาวๆ โดยใหมนหยดทละหนา ยนกซกมคำสง more เพอการน

Page 12: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

12 บทท 1. เรมตนกบยนกซ

คำสง more จะแสดงเนอหาไฟลทละหนา โดยจะแสดงคำวา “--More--” ททายหนาเพอบอกวา“มตอ” คณสามารถควบคมการแสดงผลไดดวยปมตางๆ ดงน

�� ��Enter เลอนหนาจอไป 1 บรรทด�� ��Space เลอนหนาจอไป 1 หนา�� ��/ text�� ��Enter คนหา text�� ��n คนหาตอ�� ��q ออกจากโปรแกรม

more จะออกจากโปรแกรมทนททแสดงผลมาถงทายไฟล หรอเมอคณกด�� ��q

การเรยกคำสง more สามารถเรยกโดยใสชอไฟลทตองการด โดยใสไดมากกวา 1 ไฟล ซงถาระบมากกวา 1 ไฟล กจะแสดงชอไฟลทตนขอความใหดวย และถาไมระบชอไฟล จะหมายถง standard input คลายcat ยกเวนวา more จะไมสามารถทำงานกบ standard input ทเปนแปนพมพได (เพราะแปนพมพเอาไวใชรบคำสงเลอนจอไปแลว) จงมกใช more ทไมระบชอไฟลในกรณทรบขอมลตอจากคำสงอนเทานนเชน ในการดผลทพนออกมาจากคำสงอนผาน pipe (เราจะกลาวถงการใช pipe โดยละเอยดในบทท 4)

thep@anubis:~$ ls -l /bin | more

total 2872

-rwxr-xr-x 1 root root 47464 2002-08-04 03:15 afio

-rwxr-xr-x 1 root root 2724 2002-01-27 14:05 arch

-rwxr-xr-x 1 root root 579816 2002-09-12 05:51 bash

-rwxr-xr-x 1 root root 13864 2002-08-04 16:10 cat

-rwxr-xr-x 1 root root 16232 2002-09-01 20:39 chgrp

-rwxr-xr-x 1 root root 16008 2002-09-01 20:39 chmod

-rwxr-xr-x 1 root root 18120 2002-09-01 20:39 chown

-rwxr-xr-x 1 root root 42664 2002-09-01 20:39 cp

-rwxr-xr-x 1 root root 47656 2002-06-23 03:09 cpio

-rwxr-xr-x 1 root root 82248 2002-09-14 19:32 dash

-rwxr-xr-x 1 root root 34408 2002-09-01 20:40 date

-rwxr-xr-x 1 root root 28808 2002-09-01 20:39 dd

-rwxr-xr-x 1 root root 26184 2002-09-01 20:39 df

-rwxr-xr-x 1 root root 59496 2002-09-01 20:39 dir

-rwxr-xr-x 1 root root 4076 2002-01-27 14:05 dmesg

-rwxr-xr-x 1 root root 11080 2002-09-01 20:40 echo

-rwxr-xr-x 1 root root 43292 2000-11-27 09:05 ed

--More--

คำสง more สามารถชวยใหคณดไฟลยาวๆ โดยหยดทละหนาได แตไมสามารถยอนกลบไปดหนากอนได (ในทนหมายถง more มาตรฐานของยนกซ ไมรวมถง more ในบางระบบทมการแกไขใหดหนากอนได) จงไดมการสรางคำสงใหม คอ less ซงสามารถเลอนหนาขน-ลงได การเรยกใชคำสง less กคลายกบ more ผดกนทปมทใชควบคมหนาจอของ less มากกวา ตวอยางเชน

Page 13: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.2. คำสงเบองตน 13

�� ��Enter เลอนหนาจอลง 1 บรรทด�� ��Space เลอนหนาจอลง 1 หนา�� ��j เลอนหนาจอลง 1 บรรทด�� ��k เลอนหนาจอขน 1 บรรทด�� ��f เลอนหนาจอลง 1 หนา�� ��b เลอนหนาจอขน 1 หนา�� ��g ไปทตนไฟล�� ��G ไปททายไฟล�� ��m letter mark ตำแหนงปจจบนดวย letter�� ��’ letter ไปทตำแหนงท mark ไว�� ��/ text�� ��Enter คนหา text�� ��? text�� ��Enter คนหา text ยอนหลง�� ��n คนหาตอในทศทางเดม�� ��N คนหาตอในทศทางตรงขาม�� ��q ออกจากโปรแกรม

1.2.5 สำเนาไฟล

บนยนกซ คณสามารถทำสำเนาไฟลไดดวยคำสง cp (copy)

thep@anubis:~$ ls

a

thep@anubis:~$ cat a

hello

thep@anubis:~$ cp a b

thep@anubis:~$ ls

a b

thep@anubis:~$ cat b

hello

ตวอยางขางตนเปนการสำเนาไฟล a ไปเปนไฟลใหมชอ b โดยปกตแลว ถามไฟล b อยแลว b กจะถกเขยนทบดวยเนอหาใหมทนท ดงนน ควรระวงเรองนใหด ถาจะให cp เตอนกอนเขยนทบ กใชตวเลอก -i

thep@anubis:~$ ls

a b

thep@anubis:~$ cp -i a b

cp: overwrite ‘b’? y

แตถาจะบงคบใหเขยนทบไฟลทมอยแลวเสมอ กใชตวเลอก -f

Page 14: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

14 บทท 1. เรมตนกบยนกซ

นอกจากสำเนาไฟลแลว cp ยงสามารถใชสำเนาไดเรกทอรทงชดไดดวย โดยใชตวเลอก -r ดงจะกลาวตอไปในหวขอท 1.3

1.2.6 เปลยนชอไฟล

อกครงหนงทเราจะพบคำสงยนกซทออกแบบมาในรปทวไป คำสงทใชเปลยนชอไฟลในยนกซ ไดแกคำสงmv (move)

ความจรงแลว คำสง mv มหนาทในการเคลอนยายไฟลจากทหนงไปยงอกทหนง โดยสามารถตงชอใหมได เชน คำสงตอไปนเปนการยายไฟล a ไปไวท /tmp ภายใตชอใหมคอ b

thep@anubis:~$ mv a /tmp/b

ดงนน การยายไฟลมาไวในไดเรกทอรเดมในชอใหม กคอการเปลยนชอไฟลนนเอง

thep@anubis:~$ mv a b

1.2.7 ลบไฟล

คำสงสำหรบลบไฟลบนยนกซไดแกคำสง rm

thep@anubis:~$ rm a b

เปนการลบไฟล a และ b

1.2.8 พมพไฟลออกเครองพมพ

เนองจากระบบยนกซเปนระบบ multi-user จงสนบสนนการพมพผาน print queue ผใชแตละคนสามารถสงงานไปเขาควเพอรอสงออกทางเครองพมพไดดวยคำสง lpr เมอสงไปแลว ถาคววางอย กจะถกสงไปยงเครองพมพทนท แตถาระบบกำลงพมพงานชนอนอย กตองรอในควไปกอน

ตวอยางเชน ถาจะพมพไฟล output.ps ออกทางเครองพมพ กใชคำสง

thep@anubis:~$ lpr output.ps

ในบางกรณ ระบบของคณอาจมเครองพมพมากกวาหนงตว ซงตรวจดไดทไฟล /etc/printcap

thep@anubis:~$ cat /etc/printcap

# Entry edited Tue Jun 10 15:28:13 2003 by foomatic-configure.

# Additional configuration atop /etc/foomatic/lpd/c82-foo.ppd

c82-foo||Epson Stylus C82|:\:filter_options= --lprng $J $Z /etc/foomatic/lpd/c82-foo.ppd:\:lf=/var/log/lp-errs:\

Page 15: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.2. คำสงเบองตน 15

:ppdfile=/etc/foomatic/lpd/c82-foo.ppd:\:sd=/var/spool/lpd/c82-foo:\:lp=/dev/lp0:\:if=/usr/bin/foomatic-rip:\:sh:\:force_localhost:\:mx#0:

c82:\:NUP=1:\:PRINTER_TYPE=LOCAL:\:RTLFTMAR=18:\:TOPBOTMAR=18:\:ASCII_TO_PS=YES:\:TEXT_SEND_EOF=NO:\:lp=/dev/lp0:\:RESOLUTION=1440x720:\:GSDEVICE=uniprint:\:DESIRED_TO=ps:\:PAPERSIZE=a4:\:lf=/var/log/lp-errs:\:sd=/var/spool/lpd/c82:\:PS_SEND_EOF=NO:\:sh:\:force_localhost:\:mx#0:

:

ซงในทนม print queue สองคว คอ c82-foo และ c82 หากตองการเจาะจงใหออกยงควทตองการ กสามารถระบไดดวยตวเลอก -P queue เชน

thep@anubis:~$ lpr -P c82-foo output.ps

การพมพโดยไมระบชอคว จะพมพออกทางเครองพมพทผดแลระบบตงไวใหเปนควปรยายการตรวจสอบ print queue วามงานพมพอะไรรออยบาง ใชคำสง lpq

thep@anubis:~$ lpq -P c82-foo

Printer: c82-foo@localhost ’Epson Stylus C82’

Queue: 1 printable job

Server: pid 2257 active

Unspooler: pid 2258 active

Status: processing ’dfA256localhost’, size 674097, format ’f’,

Page 16: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

16 บทท 1. เรมตนกบยนกซ

IF filter ’master-filter’ at 11:32:58.948

Rank Owner/ID Class Job Files Size Time

active thep@localhost+256 A 256 output.ps 674097 11:32:58

จะเหนวา ม active job อยหนงงาน หมายเลข job คอ 256 ไฟลทพมพคอ output.ps ขนาด 674,097ไบต สงพมพเมอเวลา 11.32 น.

หากทงไวนานแลว เหนวายงไมออกทเครองพมพ อาจมอะไรขดของบางอยาง หรอตองการจะเลกพมพกลางคน คณกสามารถยกเลกไดดวยคำสง lprm โดยระบหมายเลข job ทตองการ

thep@anubis:~$ lprm -P c82-foo 256

Printer: c82-foo@localhost ’Epson Stylus C82’

checking perms ’thep@localhost+256’

dequeued ’thep@localhost+256’

thep@anubis:~$ lpq -P c82-foo

Printer: c82-foo@localhost ’Epson Stylus C82’

Queue: no printable jobs in queue

Status: job ’thep@localhost+256’ saved at 11:45:13.299

คำสง lprm -a จะยกเลกงานทกงานในควทเปนของคณ คณจะไมมสทธยกเลกงานพมพของผใชอน นอกเสยจากคณจะเปนผดแลระบบ

เชนเดยวกบคำสง lpr คำสง lpq และ lprm จะระบควดวยตวเลอก -P หรอไมกได โดยถาไมระบ จะหมายถงควปรยายทผดแลระบบตงไว (ปกตกคอควแรกใน /etc/printcap นนเอง) หรอถาคณตองการตงคาเครองพมพปกตของคณเอง กสามารถทำไดโดยเซตตวแปรระบบชอ PRINTER

thep@anubis:~$ export PRINTER=c82

thep@anubis:~$ lpq

Printer: c82@localhost

Queue: no printable jobs in queue

Status: finished ’thep@localhost+870’, status ’JFAIL’ at 20:09:25.185

สงเกตทบรรทด Printer: วาไดเปลยนเปน c82 โดยไมตองใชตวเลอก -P

1.3 ไดเรกทอร

ระบบไฟลของยนกซมการแบงแหลงเกบไฟลเปนชนๆ ทำใหจดเกบไฟลไดอยางมระเบยบ เปรยบเสมอนตเอกสารทมการแบงหมวดหม ทำใหหาไฟลไดงาย หมวดหมหนงๆ ทใชเกบไฟลน เรยกวา ไดเรกทอร (directory)1 หนาทของไดเรกทอรกคอ เกบรายชอของไฟล และอาจเกบไดเรกทอรยอยลงไปอกกไดเชนกน

ระบบยนกซจะมโครงสรางของไดเรกทอรหลกทตายตว โดยเรมจากชนบนสดทเรยกวา ไดเรกทอรราก (root directory) จะอางถงโดยเครองหมายขดทบ หรอ slash (/)

1ใน MS-DOS จะใชคำวาไดเรกทอรเชนเดยวกบยนกซ ในขณะท MS Windows จะเรมใชคำวา โฟลเดอร (folder) ซงหมายความถงสงเดยวกน

Page 17: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.3. ไดเรกทอร 17

thep@anubis:~$ ls -F /

bin/ etc/ lib/ root/ vmlinuz@

boot/ floppy/ lost+found/ sbin/ vmlinuz.old@

cdrom/ home/ mnt/ tmp/

cdrom0/ initrd/ opt/ usr/

dev/ initrd.img@ proc/ var/

จะเหนวา ไดเรกทอรรากยงม ไดเรกทอรยอย (subdirectory) อยในนนอกจำนวนหนง เมอจะอางถงไดเรกทอรยอยนบจากรากกอางไดดวยชอไดเรกทอรยอยหลง slash และเมออางถงไฟลหรอไดเรกทอรยอยลงไปอก กคนแตละชนดวย slash จนถงชอไฟลหรอไดเรกทอรยอยทตองการ2

thep@anubis:~$ ls -F /usr/local

bin/ games/ include/ lib/ man/ sbin/ share/ src/

thep@anubis:~$ cat /etc/hostname

anubis

1.3.1 ไดเรกทอรปจจบน

เมอคณอยในเชลลของยนกซ คณจะ “อย” ทไดเรกทอรใดไดเรกทอรหนงเสมอ โดยทเมอคณอางชอไฟลลอยๆ โดยไมไดระบตำแหนงแหงท มนจะหมายถงไฟลใน ไดเรกทอรปจจบน (current directory)

คณสามารถขอดคาของไดเรกทอรปจจบนไดดวยคำสง pwd (print working directory)

thep@anubis:~$ pwd

/home/thep

1.3.2 การเปลยนไดเรกทอร

คณสามารถเปลยนไดเรกทอรปจจบนไปทอนไดดวยคำสง cd (change directory)

thep@anubis:~$ cd /usr

thep@anubis:/usr$ pwd

/usr

thep@anubis:/usr$ ls -F

bin/ include/ local/ sbin/ X11R6/

doc/ info@ m68k-palmos/ share/

games/ lib/ openwin/ src/

thep@anubis:/usr$ cd local

2ใน MS-DOS และ MS Windows จะใช backslash แทน slash เพราะไดกำหนดใหใช slash ในการระบตวเลอกในบรรทดคำสงไปแลว เชน dir /w เปนตน

Page 18: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

18 บทท 1. เรมตนกบยนกซ

thep@anubis:/usr/local$ pwd

/usr/local

จะเหนวา คณสามารถอางไดเรกทอรในแบบสมบรณ (absolute) เชน /usr หรอในแบบสมพทธ (rela-tive) กบไดเรกทอรปจจบน เชน local กได

นอกจากน การสง cd โดยไมระบอารกวเมนตจะหมายถงการเปลยนไดเรกทอรกลบไปท ไดเรกทอรบาน (home directory) ของคณ ซงไดเรกทอรบานน ผใชแตละคนจะมเปนของตวเอง กำหนดใหโดยผดแลระบบ

การเปลยนไดเรกทอรดวย cd จะเปลยนไดเรกทอรปจจบนไป ณ ตำแหนงใหม แตเมอคณใชยนกซไปสกพก คณจะเรมพบวามหลายครงทคณแคอยากเปลยนไดเรกทอรไปทำงานทอนเพยงชวคราวแลวกลบมาทำงานตอทเดม ถาใชคำสง cd คณกจำ (หรอจด) ไดเรกทอรปจจบนไวกอนเปลยนไปทใหมจากนนกคอยเปลยนกลบมาทเดมทจำ (หรอจด) ไว หรอไมกใชชดคำสง pushd และ popd

pushd และ popd จะทำงานเปนสแตก (stack–กองซอนทวางทบๆ กน โดยเวลาหยบ ชนบนสดทวางหลงสดจะถกหยบกอน) โดย pushd จะเกบคาไดเรกทอรปจจบนใสสแตกไว กอนจะเปลยนไดเรกทอรไป และคำสง popd จะหยบคาในสแตกลาสดขนมาแลวเปลยนไดเรกทอรไป

thep@anubis:~$ pushd /usr/local

/usr/local ~

thep@anubis:/usr/local$ popd

~

thep@anubis:~$

สงเกตวา popd ไมตองการอารกวเมนต และหลงการสง pushd และ popd แตละครง เชลลจะรายงานคาในสแตกใหทราบ ดงเชนในการสง pushd ในตวอยางขางตนจะทำใหสแตกเกบคาสองคา คอไดเรกทอรใหมทยายไป และไดเรกทอรเกา เมอสง popd กจะเลกคาลาสดในสแตกและใชคาถดมาแทน

คณสามารถขอดคาสแตกของไดเรกทอรนไดทกเวลาดวยคำสง dirs

thep@anubis:~$ pushd /usr/local

/usr/local ~

thep@anubis:~$ dirs

/usr/local ~

thep@anubis:/usr/local$ popd

~

thep@anubis:~$ dirs

~

thep@anubis:~$

1.3.3 “.” และ “..”

ในแตละไดเรกทอร จะมการอางองไปยงไดเรกทอรปจจบนและไดเรกทอรเบองบนภายใตชอ “.” และ“..” ตามลำดบ ซงทำใหคณสามารถอางไดเรกทอรแบบสมพทธไดยดหยนยงขน

Page 19: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.3. ไดเรกทอร 19

เราทราบแลววา การอางชอพาธโดยไมไดขนตนดวย “/” นน จะอางองเทยบกบไดเรกทอรปจจบนเสมอ ซงทำใหเราอางถงไฟลหรอไดเรกทอรทอยในระดบลางลงไปได แตเมอจะอางถงไฟลหรอไดเรกทอรโดยอางองจากไดเรกทอรเบองบนขนไป กสามารถใช “..” ชวยได

thep@anubis:~$ cd /usr/local

thep@anubis:/usr/local$ ls ..

bin games info local openwin share X11R6

doc include lib m68k-palmos sbin src

thep@anubis:/usr/local$ ls ../games

3Dc gnome-stones mahjongg xdemineur

banner gnometris nethack xdigger

cgoban gnomine nethack-gnome xgal

cmail gnuchess pxboard xgalaga

debugboard gnuchessx same-gnome xtet42

gnibbles gnugo sol zic2xpm

gnobots2 grab_cgoban tint

gnome-freecell iagno xboard

thep@anubis:/usr/local$ cd ..

thep@anubis:/usr$ pwd

/usr

สวน “.” นนจะอางองถงไดเรกทอรปจจบน ซงดเผนๆ อาจจะดไมมประโยชนอะไรนก เพราะการอางถง “./file” กมกจะเทยบเทากบการอางถง “file” เฉยๆ อยแลว แตคณจะเหนประโยชนของ“.” เมอใชยนกซไปสกพก ตวอยางเชน การเรยกโปรแกรมหรอสครปตทอยในไดเรกทอรปจจบน หรอการลบไฟลทชอขนตนดวยเครองหมายลบ (-) เปนตน

1.3.4 การสรางไดเรกทอร

คำสงสรางไดเรกทอรสำหรบยนกซคอ mkdir ซงสามารถสงสรางในลกษณะสมบรณหรอสมพทธกได

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ Projects/ tmp/

thep@anubis:~$ mkdir MyDoc

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ MyDoc/ Projects/ tmp/

thep@anubis:~$ mkdir /var/tmp/MyDoc

thep@anubis:~$ ls -F /var/tmp

MyDoc/

ทงน ในการสงสรางไดเรกทอรแบบสมบรณ จะตองมไดเรกทอรเบองบนอยกอน มฉะนนจะไมสามารถสรางได

Page 20: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

20 บทท 1. เรมตนกบยนกซ

thep@anubis:~$ mkdir /var/tmp/where/is/MyDoc

mkdir: cannot create directory ‘/var/tmp/where/is/MyDoc’: No such

file or directory

อยางไรกด mkdir ของ GNU มตวเลอก -p เพอสรางไดเรกทอรเบองบนใหดวย

thep@anubis:~$ mkdir -p /var/tmp/where/is/MyDoc

1.3.5 การสำเนาและยายไฟลขามไดเรกทอร

คำสง cp และ mv นน มอกรปแบบหนงของการเรยกนอกเหนอจากการระบชอไฟลตนทางและปลายทาง คอการระบปลายทางเปนไดเรกทอร ซงในรปแบบน จะระบไฟลตนทางไดมากกวาหนงไฟล โดย cp

(หรอ mv) จะสำเนา (หรอยาย) ไฟลตนทางทงหลายนนไปยงไดเรกทอรปลายทางภายใตชอไฟลเดม

thep@anubis:~$ ls MyDoc

thep@anubis:~$ cp /etc/hostname /etc/hosts MyDoc

thep@anubis:~$ ls MyDoc

hostname hosts

thep@anubis:~$ ls -F .

a.out* Download/ hello.c Mail/ MyDoc/ Projects/ tmp/

thep@anubis:~$ mv a.out hello.c MyDoc

thep@anubis:~$ ls -F .

Download/ Mail/ MyDoc/ Projects/ tmp/

thep@anubis:~$ ls MyDoc

a.out hello.c hostname hosts

1.3.6 การสำเนาไดเรกทอร

คำสงทใชสำเนาไดเรกทอรอยางงาย ไดแก cp -r โดยระบตนทางและปลายทางเปนไดเรกทอรแทนทจะเปนไฟลอยางการสำเนาไฟล ตวเลอก -r (recursive) จะสำเนาทกๆ ไฟลและไดเรกทอรยอยในไดเรกทอรตนทางไปยงไดเรกทอรปลายทาง

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ MyDoc/ Projects/ tmp/

thep@anubis:~$ cp -r /usr/games mygames

thep@anubis:~$ ls -F

a.out* hello.c MyDoc/ Projects/

Download/ Mail/ mygames/ tmp/

thep@anubis:~$ ls mygames

3Dc gnome-stones mahjongg xdemineur

banner gnometris nethack xdigger

Page 21: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.4. การตงชอไฟล 21

cgoban gnomine nethack-gnome xgal

cmail gnuchess pxboard xgalaga

debugboard gnuchessx same-gnome xtet42

gnibbles gnugo sol zic2xpm

gnobots2 grab_cgoban tint

gnome-freecell iagno xboard

1.3.7 การลบไดเรกทอร

ยนกซจะลบไดเรกทอรดวยคำสง rmdir ซงจะใชสำหรบไดเรกทอรเปลาเทานน กลาวคอ คณจะตองลบไฟลทงหลายภายใตไดเรกทอรทจะลบนนใหหมดเสยกอน

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ MyDoc/ Projects/ tmp/

thep@anubis:~$ cp /etc/hostname MyDoc

thep@anubis:~$ ls MyDoc

hostname

thep@anubis:~$ rmdir MyDoc

rmdir: ‘MyDoc’: Directory not empty

thep@anubis:~$ rm MyDoc/*

thep@anubis:~$ rmdir MyDoc

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ Projects/ tmp/

การไมอนญาตใหลบไดเรกทอรทมขอมลนกมขอดตรงทลดโอกาสทขอมลจะหายโดยไมเจตนาลงไดอยางไรกด ยงมวธทจะลบไดเรกทอรพรอมทงไฟลและไดเรกทอรยอยทงหมดทอยในนน โดยใชตวเลอก-r ในคำสง rm ธรรมดา

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ MyDoc/ Projects/ tmp/

thep@anubis:~$ ls MyDoc

hostname

thep@anubis:~$ rm -r MyDoc

thep@anubis:~$ ls -F

a.out* Download/ hello.c Mail/ Projects/ tmp/

1.4 การตงชอไฟล

ยนกซกำหนดใหไฟลมชอยาวไดถง 14 ตวอกษร ถงแมหลายระบบ (เชน GNU/Linux) ไดขยายใหใชไดถง 256 ตวอกษร แตชอไฟลทยาวไมเกน 14 ตวอกษรจะใชไดกบยนกซทกระบบ ตวอกษรทอนญาตใหใชตงชอไฟลไดอยางปลอดภย ไดแก

Page 22: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

22 บทท 1. เรมตนกบยนกซ

• ตวอกษรภาษาองกฤษ a-z และ A-Z โดยตวเลก-ตวใหญจะถอวาตางกน กลาวคอ abc, ABCและ Abc ถอวาเปนไฟลทตางกน

• ตวเลข 0-9• เครองหมาย . ,

สวนเครองหมายอนๆ เชน ; $ ‘ " ’ | ( ) ~ * & # - < > ? / อาจมปญหาเมอนำมาตงเปนชอไฟล เนองจากเปนเครองหมายพเศษทเชลลตความ โดยเฉพาะเครองหมาย / นน ระบบจะตความเปนเครองหมายแบงชอไดเรกทอรเสมอ

เครองหมายจด (.) นน นยมใชตงนามสกลของไฟลเพอบอกชนด เชน foo.c เปนไฟลซอรสโคดภาษาซ foo.jpg เปนไฟลรปภาพแบบ JPEG เปนตน แตถาเครองหมาย . อยหนาสด เชน .bashrc

จะทำใหไฟลนนถกซอนจากคำสง ls ปกต ตองใชตวเลอก -a จงจะเหน

1.5 wildcard

หลายตอหลายครงทเราตองสงงานกบไฟลเปนชดๆ ในยนกซจะมวธอางไฟลเปนชดๆ ทมชอสอดคลองกบรปแบบทกำหนด รปแบบดงกลาวเรยกวา wildcard เปนการอางชอไฟลโดยละบางสวนใหแปรเปลยนเปนคาตางๆ ได เชลลจะเปนผกระจาย wildcard โดยคนหาไฟลทงหมดในระบบไฟลหรอไดเรกทอรทกำหนดทมชอตามรปแบบทกำหนดโดย wildcard

การกำหนด wildcard ใชสญลกษณพเศษตอไปน

* แทนตวอกษรใดๆ ตงแต 0 ตวขนไปกตวกได

? แทนตวอกษรใดๆ 1 ตว

[ ] แทนตวอกษรใดๆ ในชดทกำหนด 1 ตว

เพอเปนตวอยาง เราจะสรางไดเรกทอรทดสอบดงน

thep@anubis:~/starwars$ touch starwars prologue.txt episode1.txt

episode2.txt episode3.txt episode4.txt episode5.txt episode6.txt

episodeX.txt epilogue.txt

thep@anubis:~/starwars$ ls

epilogue.txt episode3.txt episode6.txt starwars

episode1.txt episode4.txt episodeX.txt

episode2.txt episode5.txt prologue.txt

*.txt หมายถงไฟลทลงทายดวย “.txt”

thep@anubis:~/starwars$ ls *.txt

epilogue.txt episode3.txt episode6.txt

episode1.txt episode4.txt episodeX.txt

episode2.txt episode5.txt prologue.txt

episode?.txt หมายถงไฟลทขนตนดวย “episode” ตามดวยอกษรอะไรกได 1 ตว ตามดวย“.txt”

Page 23: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

1.5. WILDCARD 23

thep@anubis:~/starwars$ ls episode?.txt

episode1.txt episode3.txt episode5.txt episodeX.txt

episode2.txt episode4.txt episode6.txt

episode[0-9].txt หมายถงไฟลทขนตนดวย “episode” ตามดวยตวเลข 1 ตว ตามดวย“.txt”

thep@anubis:~/starwars$ ls episode[0-9].txt

episode1.txt episode3.txt episode5.txt

episode2.txt episode4.txt episode6.txt

epi* หมายถงไฟลทขนตนดวย “epi”

thep@anubis:~/starwars$ ls epi*

epilogue.txt episode2.txt episode4.txt episode6.txt

episode1.txt episode3.txt episode5.txt episodeX.txt

*logue* หมายถงไฟลทมคำวา “logue” อยในชอ

thep@anubis:~/starwars$ ls *logue*

epilogue.txt prologue.txt

เพอเปนการแสดงใหผอานมองเหนกลไกของการกระจาย wildcard ใกลชดขนอกนด เราลองใชwildcard กบคำสง echo ดงน

thep@anubis:~/starwars$ echo *.txt

epilogue.txt episode1.txt episode2.txt episode3.txt episode4.txt

episode5.txt episode6.txt episodeX.txt prologue.txt

เราไดทราบในหวขอ 1.2.1 แลววาคำสง echo จะทำหนาทเพยงแคแสดงคาตางๆ ทเปนอารกวเมนตออกทางจอภาพ คนดวยชองวางหนงชอง ผลลพธทไดจงแสดงใหเหนวา echo ไมไดรบอารกวเมนตเปน“*.txt” แตเปนชอไฟลทงหมดทกระจายแลว ซงการกระจายดงกลาวเปนหนาทของเชลล ดงนน คณคงจะพอมองเหนแลววา คำสง ls หรอโปรแกรมใดๆ บนยนกซ ไมจำเปนตองรวธกระจาย wildcard เลย

ขอดของการออกแบบยนกซใหเชลลเปนผกระจาย wildcard แบบนกคอ ลดความซำซอนของโปรแกรมตางๆ ในอนทจะตองกระจาย wildcard รวมทงทำใหรปแบบการใช wildcard เหมอนกนหมดทกโปรแกรมทำใหงายตอการเรยนรของผใชอกดวย

จากตวอยางของ echo ขางตน หากคณไมตองการใหเชลลกระจาย wildcard เพอให echo แสดงขอความ “*.txt” จรงๆ กมวธทำไดหลายวธ ไดแก

1. ใช backslash (\) กำกบหนาเครองหมายพเศษของ wildcard

thep@anubis:~/starwars$ echo \*.txt*.txt

Page 24: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

24 บทท 1. เรมตนกบยนกซ

thep@anubis:~/starwars$ echo episode\[0-9\].txtepisode[0-9].txt

2. ใชอญประกาศค (" ") ครอมนพจนทงหมด

thep@anubis:~/starwars$ echo "*.txt"

*.txt

thep@anubis:~/starwars$ echo "episode[0-9].txt"

episode[0-9].txt

3. ใชอญประกาศเดยว (’ ’) ครอมนพจนทงหมด

thep@anubis:~/starwars$ echo ’*.txt’

*.txt

thep@anubis:~/starwars$ echo ’episode[0-9].txt’

episode[0-9].txt

การใชอญประกาศคและอญประกาศเดยวจะใหผลเหมอนกนในกรณของ wildcard แตจะตางกนเมอมการใชตวแปรเชลล ดงจะกลาวในโอกาสตอไป

Page 25: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

บทท

2

ระบบรกษาความปลอดภย

ยนกซเปนระบบทถอกำเนดมาเพอใชกบเครองขนาดใหญทรองรบผใชหลายคนในเวลาเดยวกน (เรยกวาเปนระบบ multi-user) ลกษณะการใชยนกซของผใชในระบบเหลานนจงคลายกบการเชาคอนโดมเนยมรวมกนมากกวาการเปนเจาของบานทงหลงเหมอนการใชระบบดอสหรอวนโดวสกบเครองคอมพวเตอรสวนตว ดงนน ยนกซจงตองมระบบรกษาความปลอดภยเพอปกปองความเปนสวนตวของผใชแตละคนเปนคณสมบตขนพนฐาน แมปจจบนเมอนำมาใชงานแบบ stand-alone ตามเครองพซตามบานกตามระบบดงกลาวกยงมประโยชนในดานการลดความเสยหายทผใชอาจกระทำตอระบบโดยไมตงใจ รวมถงการจำกดขอบเขตของผลกระทบของโปรแกรมประเภทไวรส จนทำใหแรงจงใจในการสรางไวรสสำหรบยนกซแทบไมมเอาเสยเลย

2.1 ผใชและกลม

สงแรกทจะใชจำแนกแยกแยะผใชในระบบกคอ บญชผใช (user account) ซงโดยหลกการกคลายกบบญชธนาคารมาก ผใชแตละคนจะมชอบญชและหมายเลขประจำตว (user ID หรอ uid) ทรพยากรทกอยางในระบบจะมเจาของทงนน โดยระบเจาของดวยหมายเลขประจำตวนเอง

โดยปกต เมอผใชเปดบญชในระบบแลว กจะม “บาน” ของตวเองในระบบ เรยกวา ไดเรกทอรบาน(home directory) ไวสำหรบใชงานดวย เมอจะเขาใชระบบ ผใชจะตอง ลงบนทกเขาใชระบบ (login)เสยกอน เมอลงบนทกแลว กจะเขามาอยทไดเรกทอรบานเปนอนดบแรก

นอกจากบญชผใชแลว ในระบบยนกซยงสามารถตง กลม (group) ของผใชไดอกดวย โดยผดแลระบบจะเปนผดำเนนการให กลมทตงขนอาจจะตงเพอทำงานชนหนงๆ รวมกน หรอเพอแยกประเภทผใชใหมสทธเขาถงทรพยากรตางกนกได ไฟลตางๆ ในระบบนอกจากจะมผใชเปนเจาของแลว ยงมกลมเปนเจาของอกดวย โดยผใชสามารถกำหนดไดวาจะใหสทธผใชในกลมเดยวกนเขาถงไดหรอไม ดงจะกลาวตอไปในหวขอ 2.7

ผใชคนหนงๆ สามารถอยในกลมมากกวาหนงกลมได โดยจะมกลมโดยปรยายอยกลมหนงเสมอ

25

Page 26: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

26 บทท 2. ระบบรกษาความปลอดภย

2.2 การตงรหสผาน

เพอเปนการแสดงสทธในไฟลตางๆ ของระบบ ผใชแตละคนจงตองม รหสผาน (password) ในการเขาใชระบบ ซงโดยปกต ผดแลระบบจะตงรหสผานมาให แตผใชกสามารถเปลยนรหสผานของตวเองได (ซงควรเปลยนทนททมโอกาส) ดวยคำสง passwd

thep@anubis:~$ passwd

Changing password for thep

(current) UNIX password: (ปอนรหสผานเดม ซงจะไมปรากฏบนจอภาพ)Enter new UNIX password: (ปอนรหสผานใหม ซงจะไมปรากฏเชนกน)Retype new UNIX password: (ปอนรหสผานใหมซำอกครงเพอยนยน)passwd: password updated successfully

รหสผาน ถอเปนสงสำคญทเปนความลบของทงผใชและของระบบเอง การทผบกรกทไมประสงคดสามารถเขาระบบได แมจะไมถงกบขโมยสทธผดแลระบบได แตกเปนการเพมโอกาสในการวางกบดกเพอเจาะทำลายระบบไดเปนอยางด ดงนน ในระบบทมผใชหลากหลาย ผใชจงไมควรบอกรหสผานกบใครรวมทงไมควรตงรหสผานใหเดางายเกนไป (เชน ใชชอตว ชอแฟน ชอสตวเลยง สะกดกลบหนากลบหลง)รหสผานทดควรมความยาวตงแตแปดตวอกษรขนไป และไมควรเปนคำทมในพจนานกรม เพอปองกนการแกะรหสผานดวยโปรแกรมอตโนมต โดยถามตวเลขหรอเครองหมายพเศษปนอยดวย จะทำใหเดาไดยากยงขน

ในบางระบบ ผดแลระบบจะบงคบนโยบายในการตงรหสผานดวยคำสง passwd โดยอาจเตอนหรอไมยอมใหผานถารหสสนเกนไปหรอเดาไดงายดวยโปรแกรมอตโนมต (เชน เปนคำในพจนานกรมเปนตน)

2.3 สารบบผใช

รายชอผใชทงหมดในระบบจะเกบไวทไฟล /etc/passwd หนงคนหนงบรรทด โดยแบงเปนฟลดตางๆคนดวยทวภาค (colon) ดงตวอยาง

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

...

thep:x:500:100:Theppitak Karoonboonyanan,,,:/home/thep:/bin/bash

ขอมลในฟลดตางๆ ไดแก

1. ชอบญช (user) เชน thep

2. รหสผาน (password) โดยจะเกบในรปแบบทเขารหสทางเดยวไว แตสามารถแยกเกบในไฟล/etc/shadow ตางหากซง root อานไดคนเดยวได เพอความปลอดภยจากการเดารหสผานดวยโปรแกรมอตโนมต ดงในตวอยางขางตน โดยฟลดนจะมคาเปน x หมด

Page 27: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

2.4. ใครเปนใคร 27

3. หมายเลขประจำตว (user id)

4. หมายเลขกลม (group id) หมายถงกลมโดยปรยาย แตผใชสามารถเขารวมในกลมอนอกได ซงจะกำหนดไวในไฟล /etc/group ดงจะกลาวตอไป

5. ขอมลผใช (comment) เกบชอ-สกลของผใช โดยอาจเกบขอมลอนๆ อกสามอยาง คนดวยจลภาค(comma) ไดแก หมายเลขหองทำงาน หมายเลขโทรศพทททำงาน หมายเลขโทรศพททบาน

6. ไดเรกทอรบาน (home directory)

7. เชลล (shell) ไดแกโปรแกรมทจะทำงานเพอรบคำสงของผใชเมอลงบนทกเขาระบบ

ผใชรายแรกๆ ถดจาก root ในตวอยางขางตน เชน daemon, bin, sys เปนผใชทสงวนไวใชวงโปรแกรมใหบรการตางๆ ไมใชผใชทเปนบคคล ขอมลในฟลดของเชลลจงอาจเปนคำสงทไมใชเชลล โดยบญชทหามลงบนทกเขาใชเดดขาดมกจะมเชลลเปน /bin/false

2.4 ใครเปนใคร

2.4.1 ฉนคอใคร

เพอทจะตรวจสอบใหแนใจวาคณกำลงทำงานอยดวยบญชของใคร คณสามารถถามไดดวยคำสง whoami

thep@anubis:~$ whoami

thep

2.4.2 เหลอบแลเพอนบาน

คำสง who จะแสดงรายชอผทกำลงเขาใชระบบทงหมด

thep@anubis:~$ who

thep tty2 Jun 26 23:59

root tty3 Jun 27 00:01

somsak tty4 Jun 27 00:02

คอลมนแรกจะเปนชอบญชผใชทเขาใชระบบ คอลมนทสองเปนชอเทอรมนลทใชตดตอกบระบบ และคอลมนถดมาเปนเวลาทเขาใชระบบ

2.4.3 รจกเพอนบาน

ขอมลตางๆ ของผใชแตละคนทเกบไวในสารบบ สามารถเรยกดไดดวยคำสง finger

thep@anubis:~$ finger thep

Login: thep Name: Theppitak Karoonboonyanan

Directory: /home/thep Shell: /bin/bash

On since Thu Jun 26 23:59 (ICT) on tty2 5 minutes 48 seconds idle

(messages off)

Page 28: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

28 บทท 2. ระบบรกษาความปลอดภย

No mail.

No Plan.

คณสามารถแกไขรายละเอยดขอมลของตวคณเองไดบางสวนดวยคำสง chfn

thep@anubis:~$ chfn

Password: (ปอนรหสผาน)Changing the user information for thep

Enter the new value, or press ENTER for the default

Full Name: Theppitak Karoonboonyanan

Room Number []: 201

Work Phone []: 1150

Home Phone []: 1112

thep@anubis:~$ finger thep

Login: thep Name: Theppitak Karoonboonyanan

Directory: /home/thep Shell: /bin/bash

Office: 201, x1150 Home Phone: x1112

On since Thu Jun 26 23:59 (ICT) on tty2 17 minutes 3 seconds idle

(messages off)

No mail.

No Plan.

สงเกตทสองบรรทดสดทายจะตรวจสอบถงเมลวามเมลทยงไมไดอานอยหรอไม ถงเมลน ใชสำหรบเมลทเกบไวทเครองยนกซทใหบรการอยเทานน ถาคสนทนาของคณใชเวบเมลหรออยในระบบอน คณตองใชวธอนในการตรวจสอบ

สวนบรรทดสดทาย “No Plan.” นน เปนขอมลแผนการของคณทอยากเปดเผยใหเพอนบานรซงทำไดโดยเขยนไวในไฟล ~/.plan และอกไฟลหนงท finger จะตรวจสอบคอ ~/.project

เปนการใหขอมลวาคณกำลงทำโครงงานอะไรอย

thep@anubis:~$ cat > ~/.plan

To rule the world.�� ��Ctrl-d

thep@anubis:~$ cat > ~/.project

Neuclear Weapon.�� ��Ctrl-d

thep@anubis:~$ finger thep

Login: thep Name: Theppitak Karoonboonyanan

Directory: /home/thep Shell: /bin/bash

Office: 201, x1150 Home Phone: x1112

On since Thu Jun 26 23:59 (ICT) on tty2 17 minutes 3 seconds idle

(messages off)

No mail.

Page 29: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

2.5. ผดแลระบบ 29

Project:

Neuclear Weapon.

Plan:

To rule the world.

นอกจากน ยงสามารถเปลยนเชลลไดดวยคำสง chsh

thep@anubis:~$ chsh

Password: (ปอนรหสผาน)Changing the login shell for thep

Enter the new value, or press return for the default

Login Shell [/bin/bash]: /bin/tcsh

คำสง finger นอกจากจะใชดขอมลทวไปของผใช ยงมรปแบบการเรยกแบบไมระบชอผใช โดยจะแสดงขอมลอยางยอของผใชทกำลงเขาใชระบบทงหมด

thep@anubis:~$ finger

Login Name Tty Idle Login Time

root root *tty3 15:54 Jun 27 00:01

thep Theppitak Karoon *tty2 15:55 Jun 26 23:59

somsak Somsak Saetae tty4 1:58 Jun 27 00:02

2.5 ผดแลระบบ

ดงทกลาวไปแลววาผใชแตละคนจะถกจำกดขอบเขตของสทธในการเขาถงไฟลตางๆ แตจะมผใชพเศษอยคนหนงทมสทธในการเขาถงไฟลทกไฟลในระบบ เขาคอภารโรงผถอกญแจหองทกหอง เพอจะไดชวยแกปญหาใหกบผใช และเพอปรบแตงระบบ ตดตงโปรแกรมทใชงานรวมกน ฯลฯ เรยกวา ผดแลระบบ (system administrator) หรอบางครงเรยกอยางยกยองวา super user เนองเพราะเอกสทธทไดมาพรอมกบหนาทบรการนนเอง

อยางไรกด ในระบบทวไป ผดแลระบบมกจะมบญชผใชตางหากของตวเอง เพอใชในการทำงานปกตทวไป และจะใชบญชผดแลระบบกตอเมอตองการทำงานดแลระบบเทานน เพอหลกเลยงการทำลายทรพยสนของผอนโดยไมตงใจ ขอแนะนำน ใชไดแมกบระบบทคณเปนเจาของเครองเพยงผเดยวดวย การลดสทธของคณลงมา ยอมเปนการลดโอกาสเสยงทคณจะทำระบบพง ไวรสบนยนกซไมคมทจะเขยนกเนองดวยกฎเหลกน

ดวยเหตผลตามนยประวต บญชของผดแลระบบคอ root เนองจากเปนผทมสทธในไฟลทงหมดตงแตรากของระบบไฟลเปนตนมา ในขณะทผใชปกตจะมสทธในไฟลนบจากกงทเปน “บาน” (homedirectory) ของตวเองเปนตนมาเทานน

2.6 แปลงราง

ในบางครง คณอาจจำเปนตองทำงานบางอยางในนามของผใชอนชวคราว เชน เมอคณไดรบความไววางใจจากผใชอนใหชวยแกปญหาบางอยางให และโดยเฉพาะเมอคณเปน super user ซงโดยปกตคณจะใชบญช

Page 30: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

30 บทท 2. ระบบรกษาความปลอดภย

ตางหากของคณทำงาน แตเมอผใชในระบบมารองขอใหแกปญหาให (เชน ลมรหสผาน) คณไมจำเปนตองหาตโทรศพท เพยงแตใชคำสง su เพอเปลยนเปน super user

thep@anubis:~$ su

Password: (ปอนรหสผานของ super user)anubis:/home/thep#

สงเกตวา เครองหมายรบคำสง (prompt) ของคณไดเปลยนจาก $ เปน # ซงเปนเครองหมายของ superuser เรยบรอยแลว

anubis:/home/thep# whoami

root

คณสามารถกำหนดชอบญชผใชอนทตองการเปลยนไปเปนใหกบคำสง su ได โดยหากไมกำหนดจะหมายถง root จากนน su จะถามรหสผานของผใชทคณตองการเปลยนไปเปนนน

thep@anubis:~$ su somsak

Password: (ปอนรหสผานของ somsak)somsak@anubis:/home/thep$

การแปลงรางดวย su น เปนการสรางเชลลใหมทบเชลลเดม ดงนน เมอคณปฏบตภารกจเสรจ คณสามารถกลบไปสเชลลเดมไดโดยออกจากเชลล su น ดวยคำสง exit หรอกด

�� ��Ctrl-d

anubis:/home/thep# whoami

root

anubis:/home/thep# exit

thep@anubis:~$ whoami

thep

2.7 การปกปองไฟล

2.7.1 สทธการเขาถงไฟล

ดงทกลาวไปแลวในหวขอ 2.1 วาไฟลทกไฟลในระบบจะมผใชและกลมเปนเจาของ โดยสามารถกำหนดสทธการเขาถงของผใชประเภทตางๆ ได คำสง ls -l สามารถแสดงรายละเอยดตางๆ ดงกลาว

thep@anubis:~$ ls -l

total 28

-rwxr-xr-x 1 thep users 4815 2002-08-23 14:49 a.out

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Download

-rw-r--r-- 1 thep users 77 2002-08-23 14:49 hello.c

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Mail

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Projects

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 tmp

Page 31: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

2.7. การปกปองไฟล 31

ดงไดเกรนไปแลวในหวขอ 1.2.3 วาคอลมนแรกของผลลพธของคำสง ls -l จะแสดงชนดของไฟลและสทธการเขาถงไฟล (permission) ซงสทธการเขาถงไฟลน มบทบาทสำคญในระบบรกษาความปลอดภยของยนกซ เนองจาก I/O ทกอยางทเรยกผานระบบจะมการตรวจสอบสทธกอนเสมอ โดยเทยบuser id และ group id ของผเรยกใชกบคาทเปนคณสมบตของไฟล โดยถาตรวจสอบสทธไมผาน ระบบจะถอเปนขอผดพลาดและไมทำงานให โดยขอความแจงขอผดพลาดมกจะเปน “Permission denied.”ดงนน ไฟลขอมลของผใชจงไดรบการปกปองเปนอยางดถามการกำหนดสทธอยางเหมาะสม

อยางไรกด ระบบจะยอมให root ผานการตรวจสอบสทธทกอยางเสมอ ดงนน ระบบจะไมสามารถปองกน root จากการแพรไวรสหรอทำลายแฟมขอมลอยางไมตงใจ อาจจะดวยกบดกทซอนอยในโปรแกรมหรอดวยความเลนเลอกตามแต ดงนน ผดแลระบบจงควรเขาใชระบบดวยบญช root เทาทจำเปนจรงๆเทานน

สทธการเขาถงไฟลจะมสามสวน ไดแก 1. สทธของเจาของไฟลเอง 2. สทธของผใชในกลมเดยวกบกลมเจาของไฟล และ 3. สทธของผใชนอกกลม และสทธแตละสวนนนสามารถกำหนดสทธไดสามประการ คอ 1. สทธในการอานไฟล (r) 2. สทธในการเขยนไฟล (w) 3. สทธในการ execute ไฟล (x)

เมอเขยนเรยงกนจงเปนรหส 9 บต แทนไดดวยเลขฐานแปด 3 หลก โดยหลกบนสดแทนสทธของเจาของไฟล ถดมาแทนสทธของผใชในกลม และผใชนอกกลม ตามลำดบ

2.7.2 สทธการเขาถงไฟลแบบพเศษ

นอกจากการกำหนดสทธเขาถงปกต ยงมการกำหนดสทธในลกษณะพเศษอกลกษณะหนงสำหรบไฟลทยอมให execute ได คอการยอมให execute โปรแกรม ดวยสทธของเจาของไฟล มบางสถานการณทจำเปนตองทำเชนนน เชน โปรแกรมตงรหสผาน passwd ซงอนญาตใหผใชเปลยนรหสผานของตวเองได แตการบนทกรหสผานทเขารหสแลวในไฟลของระบบจำเปนตองอาศยสทธของ root ดงนน ไฟล/usr/bin/passwd นอกจากจะอนญาตให execute แลว ยงอนญาตให execute ดวยสทธของ rootซงเปนเจาของไฟลไดอกดวย

thep@anubis:~$ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 24248 2003-04-27 02:50 /usr/bin/passwd

สงเกตวา สทธของเจาของไฟลมคาเปน s ไมใช x

การกำหนดสทธลกษณะพเศษน สามารถใชกบ group ไดดวย กลาวคอ ผ execute จะสามารถexecute โดยไดสทธเทยบเทากบกลมทเปนเจาของไฟล ไฟลทมการใหสทธพเศษน ls -l จะรายงานpermission ของการ execute ของกลมเปน s เชนกน

ทงการ execute ดวยสทธของเจาของไฟลและดวยสทธของกลมเจาของไฟลน เปนเรองทคอนขางเสยงทโปรแกรมหนงๆ จะยอมใหมได เพราะหากปองกนไมด กเทากบเปนชองโหวใหกบการขโมยสทธโปรแกรมลกษณะนจงมไดมใหเหนบอยๆ และถาจำเปนตองใช กจะตองตรวจสอบดวยความระมดระวงยนกซเปดโอกาสใหโปรแกรมประเภทนรตวไดวากำลงถก execute แบบพเศษ โดยโปรเซสจะทำงานดวยeffective user/group id ของเจาของไฟลเทานน แต real user/group id จะยงคงเปนของผเรยกโปรแกรมโปรแกรมจงมโอกาสแยกแยะวาจะใหสทธใดๆ ตาม effective หรอ real user/group id

มาถงตรงน ผอานอาจกำลงนกถงบตสดทาย คอสทธของการ execute ของผใชนอกกลม วามการกำหนดสทธพเศษเชนนหรอไม เมอคดโดยตรรกะแลว การใหสทธ execute “ดวยสทธเทยบเทาผใชนอกกลม” กเปรยบเสมอนไมใหสทธอะไรพเศษเลย และอกประการหนง ไฟลมเจาของและกลมเจาของทจะใหคาแก effective user/group id เทานน ไมมอะไรเกยวของกบผใชนอกกลมเลย

Page 32: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

32 บทท 2. ระบบรกษาความปลอดภย

คำตอบกคอ ยนกซใชบตพเศษทวานเพอจดประสงคอนทไมใชการใหสทธโดยตรง บตนเรยกวา“sticky bit” และไฟลทถกเซตบตนกเรยกวา “sticky file” โดยไฟลโปรแกรมท sticky น จะคางอยในหนวยความจำของระบบเมอจบการทำงานแลว ทำใหไมจำเปนตองเรมโหลดโปรแกรมใหมในการเรยกใชครงตอไป1

“sticky bit” น คอนขางพเศษสกหนอยเมอนำไปใชกบไดเรกทอร “sticky directory” ทยอมใหทกคนเขยน (เชน /tmp) จะยอมใหผใชทเปนเจาของไฟลเทานนสามารถลบไฟลในไดเรกทอรได (หากไมเซต sticky bit กบไดเรกทอรสาธารณะกหมายความวา ทกคนมสทธลบไฟลใดๆ กไดทงนนในไดเรกทอรนน ซงไมเหมาะสมนก)

ls -l จะแสดงสทธการ execute ของผใชนอกกลมของ sticky file/directory ดวย t แทน x

ตวอยางทดกคอ /tmp

thep@anubis:~$ ls -ld /tmp

drwxrwxrwt 7 root root 4096 2003-06-28 17:19 /tmp

การกำหนดสทธแบบพเศษทงหมดน จะอาศยบตเพมเตมอก 3 บต (เรยกวา setuid bit, setgid bitและ sticky bit ตามลำดบ) รวมกบบตเดม 9 บตเปน 12 บต โดยแทนดวยเลขฐานแปด 4 หลก การกำหนดสทธพเศษนจะอยหลกบนสด โดยถากำหนดแบบ 3 หลกปกตกจะหมายถงคาศนยในบตพเศษทงหมด

2.7.3 การกำหนดสทธเขาถงไฟล

permission ของไฟล สามารถเปลยนไดดวยคำสง chmod โดยเขารหส permission เปนเลขฐานแปด 3หลก (ในกรณปกต) แทนสทธสามสวน (เจาของ, กลม, ผอน) โดยตวเลขฐานแปดแตละหลก เมอแปลงเปนเลขฐานสองสามบต กจะแทนการอนญาตสามประการ (read, write, execute) สำหรบผใชแตละประเภท ตวอยางเชน

750 เทยบเทากบ rwxr-x--- คอเจาของสามารถอาน เขยน execute ได; ผใชในกลมเดยวกนอานและ execute ได แตเขยนไมได; ผใชนอกกลมทำอะไรไมไดเลยแมแตอาน

644 เทยบเทากบ rw-r--r-- คอเปนไฟลท execute ไมได แตอานไดทกคน และมเพยงเจาของเทานนทเขยนได

777 เทยบเทากบ rwxrwxrwx คอเปนไฟลสาธารณะ

ตวอยางการตงคา

thep@anubis:~$ touch a # สรางไฟลเปลาthep@anubis:~$ chmod 750 a

thep@anubis:~$ ls -l a

-rwxr-x--- 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod 644 a

thep@anubis:~$ ls -l a

-rw-r--r-- 1 thep users 0 2003-06-28 14:49 a

1คมอของ GNU/Linux ระบวา ความสามารถนแทบไมจำเปนสำหรบ Linux kernel แลว เพราะระบบ virtual memoryสามารถจดการใหได แตอยางไรกด มนกเปนขอกำหนดหนงของยนกซทตองคงไว

Page 33: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

2.7. การปกปองไฟล 33

thep@anubis:~$ chmod 777 a

thep@anubis:~$ ls -l a

-rwxrwxrwx 1 thep users 0 2003-06-28 14:49 a

อยางไรกด เพอความงายตอการสงงาน chmod ยงรบคาอกลกษณะหนง คอเปนคำสงเซตบตในรปแบบ [ugoa][+-][rwx]

• อกษรตวแรก หมายถง สวนของสทธทจะตงคา (เลอกไดมากกวาหนงสวน)

u = user (เจาของไฟล)g = group (ผใชในกลม)o = other (ผใชนอกกลม)a = all (เซตคาทงสามสวนพรอมกน)

• อกษรตวทสอง หมายถง วธตงคา

+ = set (อนญาต)- = clear (ไมอนญาต)

• อกษรตวทสาม หมายถง บตทจะตงคา (เลอกไดมากกวาหนงบต)

r = read (สทธในการเขยน)w = write (สทธในการอาน)x = execute (สทธในการ execute)

ตวอยางเชน

thep@anubis:~$ ls -l a

-rwxrwxrwx 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod g-w a # หามผใชในกลมเขยนthep@anubis:~$ ls -l a

-rwxr-xrwx 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod o-rwx a # หามผใชนอกกลมทำทกอยางthep@anubis:~$ ls -l a

-rwxr-x--- 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod go+rw a # อนญาตผใชในกลมและนอกกลมอานและเขยนthep@anubis:~$ ls -l a

-rwxrwxrw- 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod a-x a # หามทกคน executethep@anubis:~$ ls -l a

-rw-rw-rw- 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod +x a # อนญาตใหทกคน executethep@anubis:~$ ls -l a

-rwxrwxrwx 1 thep users 0 2003-06-28 14:49 a

จะเหนวา สวนแรกทเลอกสวนของสทธนน ถาละกจะหมายถงทกสวน

Page 34: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

34 บทท 2. ระบบรกษาความปลอดภย

สำหรบการกำหนดสทธแบบพเศษ จะกำหนด setuid, setgid และ sticky bit ไดโดยเพมเลขฐานแปดหลกบนอกหนงหลก โดย 4 = setuid, 2 = setgid และ 1 = sticky เชน

4750 เทยบเทากบ rwsr-x---

2750 เทยบเทากบ rwxr-s---

1755 เทยบเทากบ rwxr-xr-t

เนองจากบตพเศษทงสามใชทแสดงผลรวมกบคา x ปกต คำสง ls -l จงมวธแยกความแตกตางเมอบตพเศษถกเซตโดยท x ไมถกเซต (ซงออกจะเปนกรณทแปลกประหลาด แต ls กพยายามจดการ) โดยแสดงคา s หรอ t ดวยอกษรตวใหญ

thep@anubis:~$ chmod 4644 a # พกลthep@anubis:~$ ls -l a

-rwSr--r-- 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod +x a

thep@anubis:~$ ls -l a

-rwsr-xr-x 1 thep users 0 2003-06-28 14:49 a

คณสามารถใชรปแบบ [guoa][+-][rwxst] เซตบตพเศษดงกลาวไดเชนกน

thep@anubis:~$ chmod g+s a

thep@anubis:~$ ls -l a

-rwsr-sr-x 1 thep users 0 2003-06-28 14:49 a

thep@anubis:~$ chmod g+t a

thep@anubis:~$ ls -l a

-rwsr-sr-t 1 thep users 0 2003-06-28 14:49 a

2.7.4 การโอนเจาของไฟล

ผดแลระบบสามารถเปลยนเจาของไฟลไดดวยคำสง chown และเปลยนกลมเจาของไฟลไดดวย chgrp

anubis:/home/thep# ls -l a

-rwxrwxrwx 1 thep users 0 2003-06-28 14:49 a

anubis:/home/thep# chown somsak a

anubis:/home/thep# ls -l a

-rwxrwxrwx 1 somsak users 0 2003-06-28 14:49 a

anubis:/home/thep# chgrp wheel a

-rwxrwxrwx 1 somsak wheel 0 2003-06-28 14:49 a

คำสง chown และ chgrp เปนคำสงทสงวนไวสำหรบ root เทานน ผใชปกตไมสามารถสงได

Page 35: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

บทท

3

เกยวกบไฟลและไดเรกทอร

เอกลกษณทสำคญอยางหนงในปรชญาการออกแบบของยนกซกคอ มการกำหนด interface ของการตดตอกบอปกรณภายนอกและองคประกอบตางๆ ของระบบในลกษณะของไฟลเหมอนกนหมด แปนพมพคอไฟล เทอรมนลคอไฟล เมาส เครองพมพ ชองสญญาณเสยง การเชอมตอผานระบบเครอขาย ทอสงขอมลระหวางโปรเซส1 ทกอยางคอไฟล รายละเอยดปลกยอยภายในของแตละสวนถกซอนไวภายใตการดแลของเคอรเนลและ device driver ทำใหการเขยนโปรแกรมตดตอกบอปกรณตางๆ บนยนกซงายลงมาก

ลกษณะพเศษของระบบไฟลบนยนกซอกอยางหนงกคอ การมโครงสรางแบบตนไมทสามารถเชอมโยงขามกงได ทงหมดคอสงทเรากำลงจะกลาวถงในบทน

3.1 ชนดของไฟลบนยนกซ

คำสง ls -l สามารถชวยแสดงชนดของไฟลตางๆ ได ดงไดกลาวไปแลวในหวขอ 1.2.3 สญลกษณทใชแทนชนดตางๆ ของไฟล ไดแก

- หมายถงไฟลปกต

d หมายถงไดเรกทอร เปนไฟลทเกบ “ตนขว” ของไฟลตางๆ ทบรรจอยภายใน

l หมายถง symbolic link เปนไฟลทชไปยงไฟลอนอกทอดหนง ดงจะกลาวตอไปในหวขอ 3.4

s หมายถง socket เปนชองตดตอสอสารกบโปรเซสอนผานระบบเครอขาย

c หมายถง character device มกเปนอปกรณภายนอกทรบสงขอมลเปนลำดบตอๆ กน เชน โมเดมเมาส เครองพมพ เทอรมนล เทป ชองสญญาณเสยง ฯลฯ

1โปรเซส (process) คอโปรแกรมทกำลงทำงานอยในขณะหนงๆ

35

Page 36: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

36 บทท 3. เกยวกบไฟลและไดเรกทอร

b หมายถง block device ไดแกอปกรณทร บสงขอมลเปนบลอกๆ เชน ฮารดดสก ฟลอปปดสกซดรอม แรมดสก

p หมายถง named pipe (FIFO) เปนทอสงขอมลระหวางโปรเซสทโปรเซสหนงเปดไวเพอใหโปรเซสอนในระบบสามารถรบหรอสงขอมลได

3.2 ระบบไฟลบนยนกซ

ระบบไฟลทงหมดในยนกซจะเรมตนจากไดเรกทอรรากเพยงรากเดยว ซงจะบรรจไฟลและไดเรกทอรยอยลงไปเปนลำดบชนเหมอนตนไมทแตกกงกานสาขา สวนทเปนใบซงไมแตกแขนงออกไปอกแลวกไดแกไฟลขอมลหรอไฟลพเศษอนดงกลาวขางตนทไมใชไดเรกทอรนนเอง

หากคณคนเคยกบระบบดอสหรอวนโดวสทมหลายราก แตละรากเรมจากไดรฟ A: B: C: . . . ซงแตละไดรฟจะหมายถงอปกรณเปนตวๆ หรอเปนพารทชนในฮารดดสก หรอเปน network drive ทmount ผาน netware ละก คณจะพบแนวคดทตางออกไปในยนกซ

ยนกซนน จะมองระบบไฟลทงระบบเปนระบบเดยว โดยมการกำหนดหนาทของกงตางๆ ในระบบไฟลอยางชดเจน เปนหนาทของผดแลระบบทจะจดสรรอปกรณมาเตมในสวนตางๆ ของระบบไฟล เชนอาจจะใชฮารดดสกหลายลกประกอบกน หรออาจจะแบงใชพารทชนกบสวนตางๆ ของระบบไฟลตามความจำเปนในการสำรองขอมล ฯลฯ แตผใชจะมองไมเหนรายละเอยดทอยขางลางนนเลย โปรแกรมตางๆ สามารถกำหนดตำแหนงของไฟลตางๆ อยางตายตวไดตามทตองการไดโดยไมจำเปนตองรวาอยในฮารดดสกลกไหน

ไดเรกทอรทสำคญๆ ใน GNU/Linux ทควรทราบ ไดแก

/boot เปนไดเรกทอรเกบไฟลทใชบตระบบ เคอรเนลลนกซจะถกเกบไวทน

/bin (binary) เปนไดเรกทอรเกบโปรแกรมคำสงขนพนฐานของระบบ เปนโปรแกรมทจำเปนเพยงพอสำหรบการใชงานระบบในกรณทระบบไฟลสวนอนมปญหา

/sbin (system admin binary) เกบโปรแกรมคำสงขนพนฐานทใชสำหรบผดแลระบบเทานน เปนโปรแกรมทจำเปนเพยงพอสำหรบการดแลแกไขระบบในกรณทระบบไฟลสวนอนมปญหา

/lib (library) เกบไลบรารพนฐานทโปรแกรมใน /bin และ /sbin ตองใช

/etc (et cetera) เดมมชอเชนนเพราะเกบไฟลจปาถะของระบบ แตการใชงานในปจจบนจะเกบการตงคาของระบบและของโปรแกรมตางๆ

/usr (user) ชอบอกวาเปนไดเรกทอรสำหรบบรการผใช ไดเรกทอรนใชเกบสวนตางๆ ของระบบทจำเปนตองใชในโหมด multi-user ในระบบเกาๆ จะบรรจไดเรกทอรบานของผใชดวย แตปจจบนแยกออกไปท /home ตางหาก

/usr/bin เกบโปรแกรมคำสงทใชในระบบเพมเตมจาก /bin

/usr/sbin เกบโปรแกรมคำสงทใชสำหรบผดแลระบบเพมเตมจาก /sbin

/usr/lib เกบไลบรารตางๆ เพมเตมจาก /lib

/usr/include เกบ header file ทใชสำหรบคอมไพลโปรแกรม

Page 37: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

3.3. I-NODE 37

/usr/share เกบไฟลขอมลทใชโดยโปรแกรมตางๆ

/usr/local เปนไดเรกทอรทมโครงสรางคลาย /usr แตใชสำหรบการตดตงโปรแกรมทแยกตางหากจากระบบตดตงปกต (เชน คอมไพลเองจากซอรสโคดทดาวนโหลดมาตางหาก) การแยกมาตดตงในทตางหากทำใหสะดวกตอการจดการโดยไมกระทบตอระบบตดตงปกต

/usr/X11R6 ใชสำหรบระบบ X Window ทงหมด ไมวาจะเปนโปรแกรม ไลบราร ไฟลขอมล หรอเอกสารประกอบ

/tmp ไดเรกทอรเกบไฟลชวคราวสำหรบทกคนในระบบ โดยปกตจะถกลางทงทกครงทบตระบบ

/var ไดเรกทอรเกบขอมลของระบบทจะตองมการเปลยนแปลงอยตลอดเวลา เชน log file ตางๆ ถงเมล หรอควของเครองพมพ เปนตน

/dev เกบไฟลทแทนอปกรณทกอยาง เปนทอยของไฟลชนด character device และ block deviceโดยเฉพาะ

/proc เปนทอยของไฟลเสมอนทใชตดตอกบเคอรเนลลนกซ ไฟลตางๆ ในไฟลนไมใชไฟลจรง แมจะปรากฏใน ls -l วาเปนไฟลปกตกตาม

/home เกบไดเรกทอรบานของผใชทกคน

/root ไดเรกทอรบานของ root เดมในระบบเกานน บานของ root กคอ “/” แตปญหาคอทำใหไฟลสวนตวของ root ตองไปกระจกกองอยทไดเรกทอรราก ตอมาจงเรมแยกบานของ root ออกมาเปนสดสวน

3.3 i-node

หวขอนจะกลาวถงลกษณะพเศษอกประการหนงของระบบไฟลของยนกซ คอความสามารถในการ ตงฉายา (alias) ใหกบไฟลได กลาวคอ ไฟลหนงๆ สามารถตงชอไดมากกวาหนงชอ การทจะเขาใจแนวคดนเราตองทำความเขาใจกบคำวา i-node เสยกอน

ระบบไฟลโดยทวไปจะแยกเนอหาของไฟลกบชอไฟลเปนคนละสวนกน แตยนกซมความพเศษเพมขนตรงทการเชอมโยงระหวางชอไปยงเนอหาเปนแบบ many-to-one (แทนทจะเปน one-to-one) กลาวคอในขณะทการอางถงชอหนงๆ จะหมายถงเนอหาไฟลเพยงหนงเทานน แตเนอหาไฟลหนงๆ สามารถอางมาจากชอไดหลายชอ

ตวเนอหาของไฟลทกชนจะมหมายเลข i-node ประจำ ระเบยนชอไฟลในไดเรกทอรจะเชอมโยงไปยงคา i-node ทเปนเนอหา เปนการเชอมโยงในทศทางเดยว ซงทำให i-node หนงๆ สามารถถกเชอมโยงจากชอไฟลไดหลายชอ (ในขณะทระเบยนชอไฟลชอหนงจะเกบคา i-node เพยงคาเดยว) ทตว i-nodeเองกจะเกบ reference count ไววามการเชอมโยงมายงตวมนเองเปนจำนวนเทาไร การลบไฟลในยนกซจะหมายถงการ unlink โดยตดการเชอมโยงน และลดคา reference count ใน i-node ลงหนง เมอใดทreference count ถกลดลงเหลอศนย i-node จงจะถกลบออกจากดสกจรง

คำสง ls -l จะแสดงจำนวนลงกของไฟลดงกลาวในคอลมนทสอง

thep@anubis:~$ ls -l

total 28

-rwxr-xr-x 1 thep users 4815 2002-08-23 14:49 a.out

Page 38: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

38 บทท 3. เกยวกบไฟลและไดเรกทอร

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Download

-rw-r--r-- 1 thep users 77 2002-08-23 14:49 hello.c

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Mail

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Projects

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 tmp

จากตวอยางขางตน จะเหนวาไฟลปกต คอ a.out และ hello.c โดยปกตจะมจำนวนลงกเปน 1และเมอสงลบดวยคำสง rm กจะเปนการลดจำนวนลงกนลงหนง กลายเปนศนย และ i-node ของไฟลกจะถกลบจากฮารดดสกทนท การเชอมโยงไฟลปกตเขากบชอมากกวาหนง ทำไดดวยการสราง hard linkดวยคำสง ln ซงจะกลาวในหวขอ 3.4

หากคณสงเกตพบวา ในตวอยางขางตน ไฟลทเปนไดเรกทอรปลายทางมจำนวนลงกเปน 2 กมคำอธบายวา นอกเหนอจากการเชอมโยงจากระเบยนชอในไดเรกทอรทอยเหนอขนไปแลว ยงมลงกจากชอ “.” ในไดเรกทอรตวเองดวย สวนไดเรกทอรทมไดเรกทอรยอยภายในตวมนเอง กจะถกเชอมโยงจากชอ “..” จากไดเรกทอรยอยเพมขนมาอกดวย เชน จากตวอยางขางตน ถาขอดขอมลของไดเรกทอรปจจบน จะพบจำนวนลงกเพมจากเดมอก 4 ลงก ตามจำนวนไดเรกทอรยอยทม

thep@anubis:~$ ls -ld

drwxr-xr-x 6 thep users 4096 2002-08-23 14:28 .

อนง หากตองการดหมายเลข i-node ของแตละไฟล คณกเพยงระบตวเลอก -i ใหกบคำสง ls

thep@anubis:~$ ls -i

204580 a.out 204583 hello.c 142158 Projects

142156 Download 142157 Mail 142159 tmp

3.4 การลงกไฟล

ดงทไดกลาวไปแลว วาไฟลบนยนกซสามารถมชอไดมากกวาหนงชอ โดยอาศยการเชอมโยง อยางไรกตามการเชอมโยงไฟลไมจำเปนตองใช i-node รวมเสมอไป วธเชอมโยงมอย 2 ลกษณะ คอ

1. hard link ไดแกการเชอมโยงโดยฝงในโครงสรางของระบบไฟลโดยตรง เปนการเพมชอใหมใหกบไฟล โดยททงไฟลเกาและไฟลใหมจะมฐานะของความเปนไฟลเทาๆ กน ในทางเทคนคกคอ ไฟลทงสองจะใช i-node รวมกน หรอถาจะกลาวใหละเอยดกวานนกคอ ไฟลทงสองจะเปน entry ทตางกนในไดเรกทอร แตชไปยง i-node เดยวกน การสราง hard link จะเพม reference count ใน i-node ทถกเชอมโยงนน และทกครงทลบไฟล reference count จะถกลดลง และ i-node นนจะถกลบออกไปจากดสกจรงๆ เมอ reference count ลดลงเหลอศนย

2. symbolic link หรอทเรยกสนๆ วา symlink จะเปนการเชอมโยงผานไฟลชนดพเศษทเกบชอของไฟลทเชอมโยงไปหาอกตอหนง เมอมการอางถงไฟลทเปน symlink เพอการอานหรอเขยน ยนกซจะอานชอไฟลทเชอมโยงแลวอางไปถงชอนนๆ แทน ดงนน symlink จงไมไดมฐานะเปนไฟลทเกบขอมลดวยตวของมนเอง แตเปนเพยงตวชไปหาไฟลอนเทานน

โดยปกตจะไมสามารถทำ hard link กบไดเรกทอร และไมสามารถทำ hard link ขามอปกรณได(เชน ไมสามารถทำ hard link ขามไดเรกทอรทอยในฮารดดสกคนละพารทชนได และไมสามารถทำ hardlink จากไฟลในซดรอมลงมาทฮารดดสกได เปนตน) แตสามารถทำ symlink ได

Page 39: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

3.4. การลงกไฟล 39

คำสงสำหรบเชอมโยงไฟลทงแบบ hard link และ symlink ใชคำสงเดยวกน คอ ln (link) โดยหากไมระบตวเลอกใดเลยจะหมายถง hard link และถาระบตวเลอก -s จะหมายถง symlink สวนรปแบบการสงคา กจะเหมอนคำสง cp คอชอไฟลตนฉบบมากอนชอไฟลปลายทางทจะสรางใหม

ตวอยางเชน มไฟล a ซงมลกษณะดงน

thep@anubis:~ $ ls -li

total 8

125565 -rw-r--r-- 1 thep users 6 2002-09-22 20:46 a

thep@anubis:~$ cat a

hello

เมอทำ hard link b ใหชมายงเนอหาเดยวกบ a

thep@anubis:~$ ln a b

thep@anubis:~$ ls -li

total 8

125565 -rw-r--r-- 2 thep users 6 2002-09-22 20:46 a

125565 -rw-r--r-- 2 thep users 6 2002-09-22 20:46 b

สงเกตวา ทง a และ b มหมายเลข i-node เดยวกน คอ 125565 และจำนวนลงก ของ a ถกเพมจาก 1 เปน 2 และจำนวนลงกของ b กเทากบ 2 เชนกน (เพราะมาจาก i-node เดยวกน)

เมอเปลยนแปลงเนอหาของไฟล b กจะเหนวา a กเปลยนตามดวย (เพราะใช i-node เดยวกน)

thep@anubis:~$ echo bye > b

thep@anubis:~$ cat a

bye

รวมทงการเปลยน permission (เพราะ permission เปนคณสมบตประจำ i-node)

thep@anubis:~$ chmod a+w b

thep@anubis:~$ ls -li

total 8

125565 -rw-rw-rw- 2 thep users 4 2002-09-22 20:50 a

125565 -rw-rw-rw- 2 thep users 4 2002-09-22 20:50 b

และเมอลบ a จำนวนลงกของ b กจะลดลงหนง

thep@anubis:~ $ rm a

thep@anubis:~ $ ls -li

total 4

125565 -rw-rw-rw- 1 thep users 4 2002-09-22 20:50 b

ในขณะทถาทำ symlink c ใหชมายง b

Page 40: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

40 บทท 3. เกยวกบไฟลและไดเรกทอร

thep@anubis:~$ ln -s b c

thep@anubis:~$ ls -li

total 4

125565 -rw-rw-rw- 1 thep users 4 2002-09-22 20:50 b

127799 lrwxrwxrwx 1 thep users 1 2002-09-22 21:10 c -> b

จะเหนวา c เปนไฟลใหมทใชคนละ i-node กบ b โดยเปนไฟลชนด symlink ทเกบชอ “b” (สงเกตวา ขนาดของ c เทากบ 1 คอเทากบความยาวของชอ “b” ทมนเกบ) และสงเกตวา จำนวนลงกของ b

ไมไดเพมเหมอนตอนทสราง hard link

และการเปลยนแปลงใดๆ ใน c กจะมผลกบ b ดวยเชนกน

thep@anubis:~$ echo hi > c

thep@anubis:~$ cat b

hi

รวมทงการเปลยน permission

thep@anubis:~ $ chmod go-w c

thep@anubis:~ $ ls -li

total 4

125565 -rw-r--r-- 1 thep users 4 2002-09-22 20:50 b

127799 lrwxrwxrwx 1 thep users 1 2002-09-22 21:10 c -> b

แตสงเกตวา permission ของ c เองไมมความหมาย และจะแสดงเปน lrwxrwxrwx เสมอทงนเพราะมนไมไดเปนเจาของ i-node ของไฟลทอางถงเองนนเอง

โดยปกตแลว ในชวตประจำวนเรามกจะใช symlink มากกวา hard link ดวยเหตผลหลายประการเชน

• ไมสามารถทำ hard link กบไดเรกทอรได• ไมสามารถทำ hard link ขาม device ได• symlink สามารถมองเหนไดงายผานคำสง ls ธรรมดา ทำใหจดการไดงาย

อยางไรกด ปญหาทคณอาจจะพบเมอใช symlink กคอ ปญหา broken link เมอไฟลตนฉบบถกลบ

thep@anubis:~$ rm b

thep@anubis:~$ ls -l

total 0

127799 lrwxrwxrwx 1 thep user 1 2002-09-22 21:10 c -> b

thep@anubis:~$ cat c

cat: c: No such file or directory

Page 41: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

3.5. ตรวจสอบการใชเนอทดสก 41

3.5 ตรวจสอบการใชเนอทดสก

วากนวา ฮารดดสกเปนทรพยากรทมเทาไรกไมเคยพอ ไมวาจะเปนสมย 40 MB หรอ 40 GB ฮารดดสกของคณจะถกใชจนเตมเสมอ แนนอน คณตองการเคลยรเนอทสกหนอย คณสามารถตรวจสอบเนอทวางของดสกตางๆ ทถกใชในระบบไดดวยคำสง df (disk free)

thep@anubis:~$ df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda2 3937252 3548548 188696 95% /

/dev/hda5 19251804 18236840 37008 100% /home

คอลมนตางๆ มความหมายตามหวตาราง ในทนมอปกรณทใชเกบขอมลสองตว คอ1. /dev/hda2 คอฮารดดสก IDE primary master, primary partition ท 2 mount ไวท / หรอ

รากของระบบไฟล มขนาดทงหมด 3,937,252 KB (หรอ 3.8 GB) ใชไปแลว 3,548,548 KB(หรอ 3.4 GB) เหลอ 188,696 KB (หรอ 185 MB) ใชเนอทไปคดเปน 95% โดยประมาณ

2. /dev/hda5 คอฮารดดสก IDE primary master, logical partition ท 1 mount ไวท /homeมขนาดทงหมด 19,251,804 KB (หรอ 19 GB) ใชไปแลว 18,236,840 KB (หรอ 18 GB) เหลอ37,008 KB หรอ 37 MB ใชเนอทไปคดเปน 100% โดยประมาณ

คณอาจใชตวเลอก -h เพอแสดงขนาดตางๆ ในรปแบบทอานงาย แทนการแสดงเปนจำนวนบลอก(ตวเลอก -h ในคำสงเกยวกบเนอทดสกเปนความสามารถพเศษของ GNU ทเพมเตมจากยนกซทวไป)

thep@anubis:~$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda2 3.8G 3.4G 185M 95% /

/dev/hda4 19G 18G 37M 100% /home

เมอพบวาฮารดดสกปรมๆ จะเตมเชนน คณจะเรมลงมอเคลยรฮารดดสก แตกอนอน คณคงอยากทราบวาไดเรกทอรไหนทกนท คำสง ls -l นน ชวยไดแคนดหนอยเทานน โดยในบรรทดแรกจะแสดงจำนวนบลอกทงหมดทไฟลตางๆ ในไดเรกทอรนนใช แตจะไมตรวจสอบลงไปถงไดเรกทอรยอยทอยขางใน

thep@anubis:~$ ls -l

total 28

-rwxr-xr-x 1 thep users 4815 2002-08-23 14:49 a.out

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Download

-rw-r--r-- 1 thep users 77 2002-08-23 14:49 hello.c

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Mail

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 Projects

drwxr-xr-x 2 thep users 4096 2002-08-23 14:48 tmp

บรรทด “total 28” นน แสดงจำนวนบลอก (ในทนบลอกมขนาด 1 KB) ทไดเรกทอรปจจบนใชทงหมด แตไมไดรวมเนอทตางๆ ในไดเรกทอรยอย

เครองมอตรวจสอบการใชเนอททมประสทธภาพกวาคอคำสง du (disk usage) ซงจะนบเนอททงหมดในไดเรกทอรยอยดวย

Page 42: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

42 บทท 3. เกยวกบไฟลและไดเรกทอร

thep@anubis:~$ du

6064 ./Download/nautilus

956 ./Download/metatheme

1700 ./Download/gtk2

8760 ./Download/gdm

928 ./Download/icon

316 ./Download/metacity

18728 ./Download

4 ./Mail

4 ./Projects

4 ./tmp

18756 .

หรอคณสามารถใชตวเลอก -h เพอขอดผลลพธแบบเขาใจงาย

thep@anubis:~$ du -h

6.0M ./Download/nautilus

956K ./Download/metatheme

1.7M ./Download/gtk2

8.6M ./Download/gdm

928K ./Download/icon

316K ./Download/metacity

19M ./Download

4.0K ./Mail

4.0K ./Projects

4.0K ./tmp

19M .

ตวเลอก -s ของ du จะแสดงคาสรปของไดเรกทอรปจจบนเทานน

thep@anubis:~$ du -sh

19M .

Page 43: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

บทท

4

เครองมอประมวลผลไฟล

นอกจากจะโตตอบกบผใชทางแปนพมพและจอภาพแลว ยนกซยงมความยดหยนในการควบคมเสนทางของขอมลระหวางโปรแกรมตางๆ เหมอนสายพานในโรงงาน ทำใหคณสามารถใชเครองมอยอยๆ ประกอบกนเพอทำงานทซบซอนไดตามความตองการ โปรแกรมคำสงตางๆ ในยนกซจงมกไมไดออกแบบมาเปน “โปรแกรมอเนกประสงค” ททำไดทกอยางในโปรแกรมเดยว แตจะเปนเหมอนตวตอเลโกชนเลกๆททำงานเฉพาะดานในดานหนง และพยายามทำใหดทสด ยดหยนทสด เพอทคณจะสามารถนำมาประกอบกบชนสวนอนเพอแกปญหาได

ในบทน เราจะมาทำความรจกกลไกการยกยายขอมลระหวางโปรแกรมตางๆ ททำงานประกอบกนและทำความรจกเครองมอบางสวนของยนกซทคณสามารถหยบฉวยมาใชได

4.1 การเปลยนทศทางขอมล

โปรแกรมบนยนกซทกโปรแกรมจะมชองทางตดตอกบอปกรณมาตรฐานสามอยาง คอ standard in-put สำหรบรบขอมลเขา, standard output สำหรบแสดงผลลพธ และ standard error สำหรบแสดงขอผดพลาด

โดยปกต ชองทางทงสามจะเชอมตอกบเทอรมนลของผใช โดย standard input จะรบขอมลจากแปนพมพ standard output และ standard error กจะแสดงออกทางจอภาพ แตกสามารถสงใหเชอมตอกบไฟลอนทไมใชเทอรมนลไดเชนกน (คงจำไดวา ในมมมองของยนกซ เทอรมนลกคอไฟลชนดหนง)ซงถาเชอมทาง standard input โปรแกรมกจะอานขอมลจากไฟลแทนแปนพมพ ถาเชอมทาง standardoutput หรอ standard error โปรแกรมกจะแสดงผลลพธหรอขอผดพลาดออกทางไฟลแทนจอภาพตามลำดบ

การเปลยนทศทางขอมล (redirection) สำหรบ standard input และ standard output ในเชลลตางๆบนยนกซ จะใชเครองหมาย < > >> ดงนcommand < file เปลยน standard input ใหมารบขอมลจาก file

command > file เปลยน standard output ใหแสดงผลลพธออกทาง file โดยเขยนทบเนอหา

43

Page 44: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

44 บทท 4. เครองมอประมวลผลไฟล

เดมถามอย ถายงไมมกจะสรางไฟลใหมcommand >> file เปลยน standard output ใหแสดงผลลพธออกทาง file โดยเขยนตอทาย

เนอหาเดมถามอย ถายงไมมกจะสรางไฟลใหมสำหรบการเปลยนทศทาง standard error นน ออกจะตางกนไปในเชลลแตละชนด ถาคณใชเชลลใน

ตระกลเดยวกบ Bourne Shell (sh) เชน Korn Shell (ksh) Zsh (zsh) หรอ Bourne Again Shell(bash คอเชลลทใชเปนเชลลหลกใน GNU/Linux นนเอง) จะใชรปแบบ command 2> file และ

command 2>> file คลายกบการเปลยนทศทาง standard output1 ระวงวา “2>” และ “2>>”

นน เขยนตดกนหมด ไมมชองวางคนระหวาง 2 และ >สวนเชลลในตระกลเดยวกบ C Shell (csh) เชน TENEX C Shell (tcsh) จะมเพยงวธเปลยน

ทศทาง standard error ใหออกยงไฟลเดยวกบ standard output เทานน ไมสามารถเปลยนทศทางแยกกนโดยตรงได2 รปแบบทใชคอ command >& file และ command >>& file

เหนความสามารถในการเปลยนทศทาง standard error ออกทางไฟลเดยวกบ standard outputของ C Shell แลว คณอาจเกดคำถามขนบางวาจะทำเชนนนใน bash ทคณกำลงใชใน GNU/Linuxอยางไร เพราะคงมบอยครงทคณอยากจะโยนทกสงทกอยางทปรากฏบนจอภาพลงไฟล ทงผลลพธและขอผดพลาด ทแนๆ คอ คณทำเชนนไมได

thep@anubis:~$ ls -R /root

log Mail minicom.log XF86Config.new

ls: /root/Mail: Permission denied

thep@anubis:~$ ls -R /root > res 2> res

thep@anubis:~$ cat res

ls: /root/Mail: Permission denied

nfig.new

เพราะผลลพธจะปนกนเนองจากการเขยนทบกนไปมาผานไฟลทเปดแยกกน จงไมเปนลำดบเหมอนทเคยปรากฏบนจอ เราจำเปนตองทำให standard output และ standard error กลายเปนไฟลเดยวกนในมมมองของโปรแกรม ซงรปแบบการสงการเชนนนใน bash และเชลลในตระกลเดยวกน คอ 2>&1

thep@anubis:~$ ls -R /root > res 2>&1

thep@anubis:~$ cat res

/root:

log

Mail

minicom.log

XF86Config.new

ls: /root/Mail: Permission denied

ความหมายของ “2>&1” กคอ ให file descriptor 2 เปลยนทศทางออกทางไฟลเดยวกบ filedescriptor 1 ซงกคอ ให standard error ออกทางไฟลเดยวกบ standard output นนเอง (รปแบบ

1เลข 2 ใน 2> และ 2>> มาจากคา file descriptor ทโปรแกรมทกโปรแกรมในยนกซใชตดตอกบ standard error โดยคา0 หมายถง standard input และคา 1 หมายถง standard output แตจะไมมรปแบบ 0< 1> หรอ 1>> มเพยง standard errorเทานนทใช

2อยางไรกด มวธแกขดอยทางหนงคอ (command > file1) >& file2

Page 45: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.1. การเปลยนทศทางขอมล 45

นสามารถใชกบ file descriptor คาอนทมากกวา 2 ไดอกดวย แตเรองนอยนอกเหนอขอบเขตของยนกซพนฐานเลมน)

รปแบบสดทายของการเปลยนทศทางขอมลกคอ การปอน input ในบรรทดคำสงเลย (เรยกวา here-document) โดยใชรปแบบ

command << delimitor

... here-document ...

delimitor

โดยท delimitor คอขอความทใชจบเอกสาร ขอความทกบรรทดกอนบรรทดนจะถกปอนเขาทางstandard input ของ command โดยตรง

thep@anubis:~$ cat << EOF

> At $HOME, I saw this poetry:

>

> A keeper who worked at the zoo,

> Was given a gnu to see to;

> He cries: ‘That’s the gnu

> That I knew at Bellevue --

> I knew that I knew that new gnu.’

> EOF

At /home/thep, I saw this poetry:

A keeper who worked at the zoo,

Was given a gnu to see to;

He cries: ‘That’s the gnu

That I knew at Bellevue --

I knew that I knew that new gnu.’

thep@anubis:~$

สงเกตวา $HOME ซงเปนตวแปรระบบจะถกแทนคาเหมอนบรรทดคำสงปกต ถาไมตองการใหเชลลแทนคา คณตองใสเครองหมายคำพด (คหรอเดยวกได) ครอม delimitor ทตำแหนงเรม

thep@anubis:~$ cat << "EOF"

> At $HOME, I saw this poetry:

> ...

> EOF

At $HOME, I saw this poetry:

...

thep@anubis:~$

Page 46: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

46 บทท 4. เครองมอประมวลผลไฟล

4.2 เชอมคำสงดวย pipe

นอกจากการยกยายขอมลจากเทอรมนลใหเชอมกบไฟลแทนแลว สงอำนวยความสะดวกอกอยางหนงของยนกซกคอ การตอ ทอ (pipe) เพอสงขอมลจากโปรเซสหนงไปยงอกโปรเซสหนง ทำใหคณสามารถประกอบหลายคำสงใหทำงานรบชวงกนเปนทอดๆ ได

การเชอมทอในคำสงเชลลมรปแบบดงน

command1 | command2 | ...

ผลกคอ standard output ของ command1 จะถกเชอมตรงเขากบ standard input ของ command2และหากมคำสงเชอมทอตอจาก command2 อก กจะมการเชอมในลกษณะเดยวกนกบคำสงถดๆ ไป

ดวยกลไกการทำงานเชนน คำสงแตละคำสงในยนกซจะทำงานงายๆ คอ อานขอมลเขาทาง standardinput ประมวลผล เขยนผลลพธออกทาง standard output และแสดงขอผดพลาดออกทาง standarderror เทานน ไมตองม interface ซบซอน จากนน ผใชจะเปนผประกอบคำสงตางๆ เขาดวยกนเองตามความตองการ

เราไดเหนตวอยางของการใช pipe ไปบางแลวเมอพดถงการใช more

thep@anubis:~$ ls -l /bin | more

total 2872

-rwxr-xr-x 1 root root 47464 2002-08-04 03:15 afio

-rwxr-xr-x 1 root root 2724 2002-01-27 14:05 arch

-rwxr-xr-x 1 root root 579816 2002-09-12 05:51 bash

-rwxr-xr-x 1 root root 13864 2002-08-04 16:10 cat

-rwxr-xr-x 1 root root 16232 2002-09-01 20:39 chgrp

-rwxr-xr-x 1 root root 16008 2002-09-01 20:39 chmod

-rwxr-xr-x 1 root root 18120 2002-09-01 20:39 chown

-rwxr-xr-x 1 root root 42664 2002-09-01 20:39 cp

-rwxr-xr-x 1 root root 47656 2002-06-23 03:09 cpio

-rwxr-xr-x 1 root root 82248 2002-09-14 19:32 dash

-rwxr-xr-x 1 root root 34408 2002-09-01 20:40 date

-rwxr-xr-x 1 root root 28808 2002-09-01 20:39 dd

-rwxr-xr-x 1 root root 26184 2002-09-01 20:39 df

-rwxr-xr-x 1 root root 59496 2002-09-01 20:39 dir

-rwxr-xr-x 1 root root 4076 2002-01-27 14:05 dmesg

-rwxr-xr-x 1 root root 11080 2002-09-01 20:40 echo

-rwxr-xr-x 1 root root 43292 2000-11-27 09:05 ed

--More--

และเราจะไดเหนประโยชนของ pipe มากขนอก เมอไดกลาวถงคำสงตวกรองตางๆ

Page 47: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 47

4.3 ตวกรอง

ความสามารถเรองการเปลยนทศทางขอมลหรอ pipe จะไมมประโยชนอะไรมากนก ถาขาดโปรแกรมคำสงสำหรบงานตางๆ มารองรบ เปรยบเสมอนโรงงานทมแตสายพาน แตขาดเครองจกรนนเอง ในหวขอนเราจะมาทำความรจกกบโปรแกรมตวกรอง (filter) ตางๆ บางสวนของทมในยนกซทคณสามารถหยบมาใชได

4.3.1 head

มหลายกรณทคณไมไดสนใจเนอหาของไฟลทงไฟล ยนกซมคำสงสำหรบตดเอาเฉพาะสวนตนหรอสวนทายของไฟลมาใช ไดแกคำสง head และ tail ตามลำดบ

คำสง head – แสดงสวนตนของไฟล

รปแบบ head [ตวเลอก] [file]

คำบรรยาย แสดงสวนตนของไฟล file ถาไมระบ file จะแสดงขอมลจาก standard input

ตวเลอก -n แสดงผล n บรรทดแรก (หากไมระบ จะแสดง 10 บรรทดแรก)-c n แสดงผล n ไบตแรก

ตวอยางเชน เมอคณจะหาไฟลทใหญทสด 10 ไฟลแรกในไดเรกทอรของคณ:

thep@anubis:~$ ls -S /bin | head

bash

tcsh

tar

netstat

dash

mount

dir

ls

vdir

ps

4.3.2 tail

นอกจากจะดเฉพาะตนไฟล คณสามารถขอดเฉพาะทายไฟลกไดเชนกน ดวยคำสง tail

คำสง tail – แสดงสวนทายของไฟล

รปแบบ tail [ตวเลอก] [file]

คำบรรยาย แสดงสวนทายของไฟล file ถาไมระบ file จะแสดงขอมลจาก standard input

Page 48: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

48 บทท 4. เครองมอประมวลผลไฟล

ตวเลอก -n แสดงผล n บรรทดสดทาย (หากไมระบ จะแสดง 10 บรรทดสดทาย)-c n แสดงผล n ไบตสดทาย-f รอแสดงผลแบบทนทเมอไฟลถกเขยนตอทาย

ตวอยางเชน ถาจะด error log รายการลาสดจาก log file:

thep@anubis:~$ tail -6 /var/log/httpd/error log

[Fri Sep 20 19:57:15 2002] [error] [client 203.185.2.14] File

does not exist: /var/www/html/d/winnt/system32/cmd.exe

[Fri Sep 20 19:57:19 2002] [error] [client 203.185.2.14] File

does not exist: /var/www/html/scripts/..%5c../winnt/system32/c

md.exe

[Fri Sep 20 19:57:19 2002] [error] [client 203.185.2.14] File

does not exist: /var/www/html/_vti_bin/..%5c../..%5c../..%5c

../winnt/system32/cmd.exe

[Fri Sep 20 19:57:29 2002] [error] [client 203.185.2.14] File

does not exist: /var/www/html/_mem_bin/..%5c../..%5c../..%5c..

/winnt/system32/cmd.exe

[Fri Sep 20 19:57:30 2002] [error] [client 203.185.2.14] File

does not exist: /var/www/html/msadc/..%5c../..%5c../..%5c/..x.

./..x../..x../winnt/system32/cmd.exe

[Fri Sep 20 19:57:34 2002] [error] [client 203.185.2.14] File

does not exist: /var/www/html/scripts/..../winnt/system32/cmd

.exe

ตวเลอก -f มประโยชนมากในการด log file ทมการเพมขอมลตอทายอยตลอดเวลา โดยจะตดตามขนาดของไฟลและแสดงขอความทเพมททายไฟลทนททไฟลเปลยนขนาด ชวยในการตดตาม error logของเซรฟเวอรแบบทนเหตการณไดเปนอยางด

4.3.3 grep

คำสงหนงทใชบอยมากในยนกซคอคำสงคนหาขอความในไฟล ไดแกคำสง grep คณไมจำเปนตองเปดพจนานกรมหาความหมายของมนหรอก เพราะมนคอตวยอของ Global Regular Expression Printกลาวคอ เปนคำสงทใชพมพบรรทดทมขอความทเขากบรปแบบ regular expression ทกำหนด3

3ทมาของชอ grep กคอ คำสงคนคำใน line editor ของยนกซเชน ed, ex รวมทง full screen editor ทสามารถใชคำสงของ ex ไดอยาง vi ซงมรปแบบเปน

g/re/p

โดยท g คอคำสง global สำหรบกระทำทงเอกสาร re หมายถง regular expression และ p (print) เปนคำสงทใหกระทำกบบรรทดท match ดวยการพมพออกทางจอภาพ

Page 49: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 49

คำสง grep – แสดงบรรทดทมขอความเขากบรปแบบทกำหนด

รปแบบ grep [ตวเลอก] {pattern|-e pattern} [file . . . ]

คำบรรยาย แสดงบรรทดทมขอความทเขากบ regular expression pattern

ตวเลอก -e pattern ใชเมอ pattern ขนตนดวย ‘-’-c นบบรรทดแตไมแสดงบรรทด-h ไมแสดงชอไฟล-H บงคบแสดงชอไฟลเสมอ-i อกษรตวใหญตวเลกถอวาไมตางกน-l แสดงแตชอไฟลท match-L แสดงแตชอไฟลทไม match-n แสดงหมายเลขบรรทดดวย-o แสดงเฉพาะขอความท match แทนการแสดงทงบรรทด-v หาบรรทดทไมตรงกบ pattern แทน

คำวา “regular expression” หากพดเปนภาษาคณตศาสตรกหมายถงรปแบบทแทนเซตของขอความเซตหนง ซงขอความใดๆ ทอยในเซตนถอวา “เขากนได” (match) กบ regular expression นน รปแบบการเขยน regular expression จะแบงเปนสวนกำหนดเซตของอกขระทจะ match กบโอเปอเรเตอร

สวนของการกำหนดเซตของอกขระทจะ match ไดแก1. ตวอกษร เปนเซตทงายทสด อกษรทกตวและตวเลขเปน regular expression ท match กบตว

มนเอง โดยถาอกขระนนๆ เปนเครองหมายพเศษทมความหมายใน regular expression จะตอง escapeดวยการเขยน backslash (\) นำหนา

2. จด ‘.’ จะ match กบอกขระใดๆ กไดหนงตว3. วงเลบเหลยม กลมของตวอกษรทครอบดวยวงเลบเหลยม จะ match กบอกษรใดกไดในชดนน

หนงตว เชน [abc] จะ match กบ a หรอ b หรอ c กไดการลสตอกขระสามารถเขยนเปนชวงไดโดยใช ‘-’ กได เชน เชน [a-z] จะ match กบอกขระ

ใดกไดตงแต a ถง z หนงตว [a-zA-Z0-9] จะ match กบอกษรภาษาองกฤษทงหมดและตวเลขอารบกทกตว

หากอกขระแรกของเซตเปน circumflex (^) จะเปนเซตนเสธ คอจะ match กบอกขระใดๆ ทไมอยในเซตทกำหนด เชน [^0-9] จะ match กบอกขระใดๆ ทไมใชตวเลขอารบก ถาคณตองการเขยนเซตทม ^ กสามารถเขยนไดโดยไมลสตมนเปนตวแรก และถาตองการเขยนเซตทม ] กเขยนโดยลสตมนเปนตวแรกของเซต

สวนของโอเปอเรเตอร ไดแก1. ดอกจน ‘*’ เมอเขยนตอทายเซตจะหมายถงการซำของเซตนนตงแต 0 ครงขนไป เชน• a* จะ match กบขอความวางเปลา หรอ a หรอ aa . . .• a[0-9]* จะ match กบ a หรอ a ทตามดวยเลขอารบกกตวกได2. circumflex ‘^’ เมอเขยนทตน regular expression จะหมายถงการ match กบขอความทตน

บรรทด เชน ^Richard จะ match กบบรรทดทขนตนดวย Richard

3. dollar ‘$’ เมอเขยนททาย regular expression จะหมายถงการ match กบขอความททายบรรทดเชน Bazaar$ จะ match กบบรรทดทลงทายดวย Bazaar

Page 50: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

50 บทท 4. เครองมอประมวลผลไฟล

สมมตวา คณตองการหาชอไดเรกทอรยอยทงหมดในไดเรกทอรปจจบน กสามารถทำไดโดยสง“ls -l” แลวเลอกเอาเฉพาะบรรทดทขนตนดวย ‘d’

thep@anubis:~$ ls -l | grep ^d

drwxr-xr-x 8 thep users 4096 2003-06-30 21:38 Download

drwxr-xr-x 2 thep users 4096 2003-06-30 14:58 Mail

drwxr-xr-x 2 thep users 4096 2003-07-01 22:19 Projects

drwxr-xr-x 2 thep users 4096 2003-07-01 22:19 tmp

หรอจะหาบรรทดทลงทายดวย slash (/) ในผลลพธของ “ls -F” กได

thep@anubis:~$ ls -F | grep ’/$’

Download/

Mail/

Projects/

tmp/

กลบกน ถาคณตองการชอไฟลปกต ไมใชไดเรกทอร คณกใชตวเลอก -v กลบผลลพธเสย

thep@anubis:~$ ls -F | grep -v ’/$’

a.out*

bye.c

hello.c

4.3.4 wc

ไมใชหองนำ แตคอ word count เปนคำสงนบจำนวนอกขระ จำนวนคำ และจำนวนบรรทดในไฟล

คำสง wc – นบจำนวนอกขระ จำนวนคำ และจำนวนบรรทด

รปแบบ wc [ตวเลอก] [file . . . ]

คำบรรยาย แสดงจำนวนอกขระ จำนวนคำ และจำนวนบรรทดใน file หรอถาไมกำหนด file

กจะนบขอมลใน standard input

ตวเลอก -l แสดงจำนวนบรรทด-w แสดงจำนวนคำ-c แสดงจำนวนอกขระ

เชน เมอใชกบไฟลปกต

thep@anubis:~$ cat hello.c

#include <stdio.h>

Page 51: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 51

int main()

{printf("Hello, world.\n");return 0;

}

thep@anubis:~$ wc hello.c

8 10 77 hello.c

thep@anubis:~$ wc -l hello.c

8 hello.c

thep@anubis:~$ wc *.c

8 11 85 bye.c

8 10 77 hello.c

16 21 162 total

คณสามารถสงนบจำนวนไฟลในไดเรกทอรได

thep@anubis:~$ ls | wc -l

10

4.3.5 sort

คณสามารถเรยงลำดบขอมลไดดวยคำสง sort

คำสง sort – เรยงลำดบบรรทดตางๆ ในไฟลขอความ

รปแบบ sort [ตวเลอก] [file . . . ]

คำบรรยาย ตอไฟลทงหมดทกำหนดและเรยงลำดบบรรทดออกทาง standard output ถาไมกำหนดไฟลจะอานขอมลจาก standard input

ตวเลอก -k POS1[,POS2 ]กำหนดคยทใชเรยงลำดบโดยเรมจากฟลดท POS1 จนถงฟลดท POS2 (เรมนบจาก1) เชน ‘-k2,3’ หมายถงใชฟลดทสองและสามเปนคย หากไมกำหนด POS2 จะหมายถงใชตงแตฟลดท POS1 จนจบบรรทดเปนคย

-t delim กำหนดอกขระทใชแบงฟลดในไฟล (คาปกตหากไมระบจะเปน space หรอ tab)-n ใหตความคยเปนตวเลขกอนเรยง-r เรยงลำดบยอนกลบ-u เลอกเอาบรรทดทซำกนเพยงบรรทดเดยว

ตวอยางเชน มไฟลขอมลตอไปน

thep@anubis:~$ cat tel

6402 thep 0-1234-5678

Page 52: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

52 บทท 4. เครองมอประมวลผลไฟล

9876 ott 0-9876-5432

4444 pruet 0-5555-5555

2847 chanop 0-6789-0123

เมอสง sort โดยไมใสตวเลอก กหมายถงการเปรยบเทยบทงบรรทด

thep@anubis:~$ sort tel

2847 chanop 0-6789-0123

4444 pruet 0-5555-5555

6402 thep 0-1234-5678

9876 ott 0-9876-5432

หากตองการเรยงชอตามลำดบอกษรโดยอาศยฟลดทสอง

thep@anubis:~$ sort -k2,2 tel

2847 chanop 0-6789-0123

9876 ott 0-9876-5432

4444 pruet 0-5555-5555

6402 thep 0-1234-5678

หรอเรยงยอนลำดบอกษร

thep@anubis:~$ sort -k2,2r tel

6402 thep 0-1234-5678

4444 pruet 0-5555-5555

9876 ott 0-9876-5432

2847 chanop 0-6789-0123

ลองอกสกตวอยาง สมมตวา คณตองการหาไดเรกทอรทกนเนอทมากทสดเรยงตามลำดบ คำสง duใหผลลพธวา

thep@anubis:~$ du

6064 ./Download/nautilus

956 ./Download/metatheme

1700 ./Download/gtk2

8760 ./Download/gdm

928 ./Download/icon

316 ./Download/metacity

18728 ./Download

4 ./Mail

4 ./Projects

4 ./tmp

18780 .

Page 53: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 53

คณตองการเรยงลำดบตามฟลดแรกเปนหลกจากมากไปนอย จากนนใชฟลดทสองเปรยบเทยบตามลำดบอกษรถาฟลดแรกเทากน

thep@anubis:~$ du | sort -k1,1nr -k2,2

18780 .

18728 ./Download

8760 ./Download/gdm

6064 ./Download/nautilus

1700 ./Download/gtk2

956 ./Download/metatheme

928 ./Download/icon

316 ./Download/metacity

4 ./Mail

4 ./Projects

4 ./tmp

คำสง sort น จะมผลตามโลแคล LC COLLATE และ LC CTYPE ดงนน ถาคณเซตตวแปรระบบทงสอง หรอเซต LC ALL เปน th TH และระบบของคณสนบสนนโลแคลไทย (เชน ดวย GNU Clibrary 2.1.1 ขนไป) คณกจะสามารถเรยงลำดบคำไทยตามพจนานกรมฉบบราชบณฑตยสถานได และหากคณตองการการเรยงลำดบแบบ ASCII ธรรมดา คณกเซตโลแคลใหเปน C เสย

4.3.6 uniq

คำสง uniq ใชกำจดบรรทดซำในไฟลขอความทเรยงลำดบแลว

คำสง uniq – กำจดบรรทดซำในไฟลขอความทเรยงแลว

รปแบบ uniq [ตวเลอก] [input [output]]

คำบรรยาย กำจดบรรทดซำทอยตดกนใน input (หรอ standard input ถาไมระบ) และแสดงผลลพธออกทาง output (หรอ standard output ถาไมระบ)

ตวเลอก -c แสดงจำนวนบรรทดทซำไวขางหนาแตละบรรทดดวย-d แสดงเฉพาะบรรทดทซำเทานน-u แสดงเฉพาะบรรทดทไมซำเทานน

เนองจาก uniq จะกำจดบรรทดซำทอยตดกนเทานน การใช uniq กบไฟลทยงไมเรยงลำดบจงยงมโอกาสมบรรทดซำกนหลงเหลอในผลลพธ ดงนน ถาคณตองการไมใหเหลอบรรทดซำเลย คณควรจะsort เสยกอนสงให uniq

สมมตวาคณมไฟลขอมลบทความนาอานซงคนฟลดดวย bar (|) ดงน

thep@anubis:~$ cat readings

Eric Raymond|How To Become A Hacker

Eric Raymond|The Cathedral and the Bazaar

Page 54: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

54 บทท 4. เครองมอประมวลผลไฟล

Havoc Pennington|Working on Free Software

Havoc Pennington|Free software maintenance: Adding Features

Advogato|Advogato’s Number: Advice for young free software developers

Richard Stallman|The GNU Project

Richard Stallman|The Free Software Definition

Richard Stallman|Why GNU/Linux?

Richard Stallman|We Can Put an End to Word Attachments

Open Source Initiative|The Open Source Definition

Robert Chassel|Making a Living with Free Software

Andy Tai|Free Software: Hackers Comeback

Richard Stallman|The GNU Manifesto

Richard Stallman|Why Software should not have owners

Richard Stallman|Copyleft: Pragmatic Idealism

Eric Raymond|Homesteading the Noosphere

คณตดเอาเฉพาะชอผแตงดวยคำสง cut (เราจะพดถงคำสง cut โดยละเอยดในหวขอ 4.3.8 ในทนขอใหเชอวาคำสงนสามารถตดเอาเฉพาะฟลดแรกออกมาไดไปกอน)

thep@anubis:~$ cut -d "|" -f1 readings

Eric Raymond

Eric Raymond

Havoc Pennington

Havoc Pennington

Advogato

Richard Stallman

Richard Stallman

Richard Stallman

Richard Stallman

Open Source Initiative

Robert Chassel

Andy Tai

Richard Stallman

Richard Stallman

Richard Stallman

Eric Raymond

หากใชคำสง uniq เพอตดชอซำโดยตรง คณจะยงไดชอซำหลงเหลออย

thep@anubis:~$ cut -d "|" -f1 readings | uniq

Eric Raymond

Havoc Pennington

Advogato

Page 55: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 55

Richard Stallman

Open Source Initiative

Robert Chassel

Andy Tai

Richard Stallman (ซำ)Eric Raymond (ซำ)

คณจงควร sort กอน uniq เพอทบรรทดซำจะไดมาอยตดกน

thep@anubis:~$ cut -d "|" -f1 readings | sort | uniq

Advogato

Andy Tai

Eric Raymond

Havoc Pennington

Open Source Initiative

Richard Stallman

Robert Chassel

หรออกวธหนงคอ ใชตวเลอก -u (uniq) กบคำสง sort โดยตรง

thep@anubis:~$ cut -d "|" -f1 readings | sort -u

Advogato

Andy Tai

Eric Raymond

Havoc Pennington

Open Source Initiative

Richard Stallman

Robert Chassel

ในตวอยางขางตน คณอาจเหนวาผลของคำสง “sort | uniq” กบ “sort -u” นนเหมอนกนแตอยางไรกด ผลจะตางกนถามการเลอกใชคยในคำสง sort โดยถาเทยบคยของสองบรรทดแลวไดเทากน sort จะถอวาสองบรรทดนนซำกน แมวาสวนอนของบรรทดจะไมไดเหมอนกนกตาม พจารณาผลของการสงตอไปน

thep@anubis:~$ sort -t "|" -k1,1 readings | uniq

Advogato|Advogato’s Number: Advice for young free software developers

Andy Tai|Free Software: Hackers Comeback

Eric Raymond|Homesteading the Noosphere

Eric Raymond|How To Become A Hacker

Eric Raymond|The Cathedral and the Bazaar

Havoc Pennington|Free software maintenance: Adding Features

Havoc Pennington|Working on Free Software

Open Source Initiative|The Open Source Definition

Page 56: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

56 บทท 4. เครองมอประมวลผลไฟล

Richard Stallman|Copyleft: Pragmatic Idealism

Richard Stallman|The Free Software Definition

Richard Stallman|The GNU Manifesto

Richard Stallman|The GNU Project

Richard Stallman|We Can Put an End to Word Attachments

Richard Stallman|Why GNU/Linux?

Richard Stallman|Why Software should not have owners

Robert Chassel|Making a Living with Free Software

เทยบกบผลของคำสง sort เหมอนเดมแตเพมตวเลอก -u แทนการใช uniq

thep@anubis:~$ sort -u -t "|" -k1,1 readings

Advogato|Advogato’s Number: Advice for young free software developers

Andy Tai|Free Software: Hackers Comeback

Eric Raymond|How To Become A Hacker

Havoc Pennington|Working on Free Software

Open Source Initiative|The Open Source Definition

Richard Stallman|The GNU Project

Robert Chassel|Making a Living with Free Software

ซงจะเหนวา เปนการพยายาม unique ฟลดผแตง โดยเลอกบรรทดอยางสม (ขนอยกบการทำงานของอลกอรทมทใชเรยงลำดบวาจะเจอบรรทดไหนกอน) มาหนงบรรทดแทนผแตงแตละคน (กรณอยางนเรยกวาคยไมสมบรณทไมสามารถแยก record ตางๆ ออกจากกนได)

4.3.7 tee

เรามาสลบฉากดวยคำสงเบาๆ ทมประโยชนพอควรคำสงหนง ทชวยใหคณสามารถดกขอมลในทอทสงระหวางโปรเซสได โดยตอทอรปตวท (T) แทรกกลางเขาไป คำสงททำหนาทเชนนคอ tee

คำสง tee – อาน standard input และสงผานออกทาง standard output และไฟล

รปแบบ tee [ตวเลอก] [file . . . ]

คำบรรยาย กอปป standard input ไปยง standard output และไฟลทกำหนด

ตวเลอก -a เขยนขอมลตอทายไฟลแทนการเขยนทบ

สมมตวาจากไฟล readings ในหวขอทแลว คณใชคำสง cut ตดฟลดผแตงออกมาแลวสงตอดวย “sort -u | wc -l” เพอนบจำนวนผแตงทงหมด แตคณตองการเกบรายชอผแตงทไดไวดวยคณสามารถแทรกคำสง tee ระหวางทางได

thep@anubis:~$ cut -d "|" -f1 readings | sort -u | tee authors \| wc -l

Page 57: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 57

7

thep@anubis:~$ cat authors

Advogato

Andy Tai

Eric Raymond

Havoc Pennington

Open Source Initiative

Richard Stallman

Robert Chassel

4.3.8 cut และ paste

คำสง cut และ paste จะทำงานกบไฟลในแนวดง คำสง cut ใชตดเฉพาะฟลดทตองการออกมาจากทกบรรทดในไฟล สวนคำสง paste ใชตอไฟลทแยกฟลดนนเขามาเปนไฟลเดยว

คำสง cut – เลอกคอลมนทตองการออกมาจากไฟล

รปแบบ cut [ตวเลอก] [file . . . ]

คำบรรยาย เลอกคอลมนทตองการจากไฟล (กำหนดไดมากกวาหนงไฟล หรอเลอกจาก standardinput ถาไมระบ) แลวเขยนออกทาง standard output โดยเลอกไดสามแบบ คอเลอกเปนไบต(ดวย -b) เลอกเปนอกขระ (ดวย -c) หรอเลอกเปนฟลด (ดวย -f)

ตวเลอก -b list เลอกไบตทตองการ-c list เลอกอกขระทตองการ (อาจจะตางจาก -b ในภาษาทอกขระยาวกวาหนงไบต)-f list เลอกฟลดทตองการ

การระบสวนทตองการดวย list ในตวเลอก -b, -c และ -f จะระบดวยตวเลขลำดบทตองการ (เรมนบจาก 1) หรอเปนชวงในรปแบบ m-n กได และสามารถละ m หรอ n

สวนใดสวนหนงได โดย -n หมายถง 1-n และ m- หมายถงตงแต m ถงทายบรรทด-d delim กำหนดตวคนฟลดเปน delim (ใชสำหรบตวเลอก -f)-s ตดบรรทดทไมมตวคนฟลดปรากฏทง (ใชสำหรบตวเลอก -f)

เราไดเหนตวอยางการใช cut ตดฟลดไปแลวในหวขอ 4.3.5 และ 4.3.6 ซงนาจะเปนกรณทพบบอยทสด

อยางไรกด หากคณตองการหาอกษรนำของชอตนของผแตงทกคน คณสามารถใช cut ตดไดเชนกน

thep@anubis:~$ cut -b1 readings

E

E

H

H

A

Page 58: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

58 บทท 4. เครองมอประมวลผลไฟล

R

R

R

R

O

R

A

R

R

R

E

คำสง paste – รวมบรรทดของชดของไฟล

รปแบบ paste [ตวเลอก] [file . . . ]

คำบรรยาย รวมบรรทดตางๆ ของชดของไฟลทกำหนด (หากไมกำหนด หรอใช - แทนชอไฟล จะหมายถง standard input) ตามลำดบขนานกนไปในแตละบรรทด โดยคนสวนของแตละไฟลดวยชด delimiter ทกำหนด (หรอ

�� ��TAB หากไมกำหนดเปนอยางอน)

ตวเลอก -d delimiters ใชชดอกขระใน delimiters ตามลำดบเปนตวคนระหวางฟลดกลาวคอ ตวแรกคนระหวางฟลดแรกกบฟลดทสอง ตวทสองคนระหวางฟลดทสองกบฟลดทสาม ฯลฯ และยอนกลบมาใชตวแรกใหมถา delimiters สนกวาจำนวนdelimiter ทตองการ

-s รวมไฟลแบบหนงไฟลตอหนงบรรทดแทนการรวมบรรทดแบบขนาน-f หยดเมอสดไฟลใดไฟลหนง

สมมตวามไฟลขอมลสองไฟลดงน

thep@anubis:~$ cat id

1

2

thep@anubis:~$ cat name

bruce

richard

eric

เมอ paste ตามปกต

thep@anubis:~$ paste id name

1�� ��TAB bruce

2�� ��TAB richard�� ��TAB eric

Page 59: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.3. ตวกรอง 59

เมอ paste โดยกำหนด delimiters

thep@anubis:~$ paste -d ’!@’ id name id

1!bruce@1

2!richard@2

!eric@

เมอ paste แบบ serial

thep@anubis:~$ paste -s id name

1�� ��TAB 2

bruce�� ��TAB richard

�� ��TAB eric

เมอ paste แบบหยดทไฟลแรกทสนสด

thep@anubis:~$ paste -f id name

1�� ��TAB bruce

2�� ��TAB richard

4.3.9 comm

คำสง comm จะชวยคณเปรยบเทยบไฟลสองไฟลทเรยงลำดบแลวได โดยคดแยกบรรทดทมเหมอนกนออกจากบรรทดทไมเหมอนกน โดยแยกเปนสามกอง

คำสง comm – เทยบไฟลสองไฟลทเรยงแลวบรรทดตอบรรทด

รปแบบ comm [ตวเลอก] file1 file2

คำบรรยาย เปรยบเทยบไฟลท เรยงแลวสองไฟลบรรทดตอบรรทด คดแยกออกเปนสามคอลมนบรรทดทมเฉพาะในไฟลแรกอยคอลมนแรก บรรทดทมเฉพาะในไฟลทสองอยคอลมนทสองและบรรทดทมในทงสองไฟลอยคอลมนทสาม คอลมนจะถกแยกกนดวย

�� ��TAB หนงตวผลลพธแตละบรรทดจะมขอมลเพยงคอลมนเดยวเทานน คอลมนทเหลอจะวางเปลา

ตวเลอก -1 ไมแสดงคอลมนท 1-2 ไมแสดงคอลมนท 2-3 ไมแสดงคอลมนท 3

สมมตวา เรามไฟลสองไฟลทเรยงลำดบแลวดงน

thep@anubis:~$ cat gnome

hp

miguel

otaylor

timj

Page 60: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

60 บทท 4. เครองมอประมวลผลไฟล

tml

thep@anubis:~$ cat rh

drepper

hp

otaylor

เมอสงเปรยบเทยบไฟลทงสองดวย comm

thep@anubis:~$ comm gnome rh

drepper

hp

miguel

otaylor

timj

tml

จะเหนวา คำทปรากฏในทงสองไฟล คอ hp และ otaylor จะถกแยกไวคอลมนทสาม สวนทเหลอถกแยกไวในคอลมนแรกสำหรบไฟลแรก และคอลมนทสองสำหรบไฟลทสอง หากตองการแคบางคอลมนเรากสงระงบคอลมนทไมตองการได

thep@anubis:~$ comm -3 gnome rh

drepper

miguel

timj

tml

thep@anubis:~$ comm -12 gnome rh

hp

otaylor

ทน มาทำอะไรทเปนเรองเปนราวดกวา สมมตวาคณมไฟลเกบ e-mail address ทแยกออกมาไดจากไฟลอน

thep@anubis:~$ cat devlist

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

คณตองการตรวจวา ใครมชอในไฟล gnome บาง กอนอนคณตอง cut เอาแตชอออกมากอน แลวsort กอน comm เอาเฉพาะบรรทดทซำกน

Page 61: ´Ù„Ô¡«ì¢Ñ„„µØ„ - linux.thai.netthep/docs/linux/linuxbasic.pdf8 ”••Õ‰ 1. àˆÔ‰`µØ„¡Ñ”´Ù„Ô¡«ì Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10

4.4. สงทาย 61

thep@anubis:~$ cut -d ’@’ -f1 devlist | sort | comm -12 - gnome

hp

miguel

otaylor

timj

และใครไมอยบาง กทำเชนเดม เพยงแตเลอกเอาเฉพาะบรรทดทไมมในไฟล gnome

thep@anubis:~$ cut -d ’@’ -f1 devlist | sort | comm -23 - gnome

iliad

rms

สงเกตการใช ‘-’ แทน standard input ในคำสง comm

4.4 สงทาย

ในบทนเราไดทราบถงเครองมอตางๆ ของยนกซในการประมวลผลขอมลเปนสายงานผาน pipe แตความสามารถในการประกอบเครองมอใหมของยนกซยงไมจบลงแคน เชลลของยนกซอนญาตใหคณใชคำสงเหลานเขยนเปนโปรแกรมใหมขนมาเลยทเดยว ซงหากคณคนเคยกบ batch file ของดอสหรอวนโดวสมาแลวละก คณจะไดพบความยดหยนอยางทไมเคยพบมากอนในเชลลของยนกซ เพราะมนไมใชฉบบยอทจำกดจำเขยเหมอนทคณคนเคยอกตอไป


Recommended