You are on page 1of 9

ว่าด้วยหนังสือเล่มนี้

หัดใช้ Command-line Interface เถอะ

Buy on Leanpub

1 $ cd ~/learncli
2 $ ls
3 cat.txt copydir fox.txt movedir right toolong.txt
4
5 $ cat fox.txt cat.txt toolong.txt
6 $ cat fox.txt cat.txt toolong.txt | more
7 $ cat fox.txt cat.txt toolong.txt | less
8
9 $ more fox.txt cat.txt toolong.txt | less
10
11 $ ls -lR | more
12 $ ls -lR | less

บทนี้เรียนรู้อะไร?

เราใช้ | ในการส่งผ่าน Output ของ คำสั่งด้านซ้ายไปเป็น Input ให้กับคำสั่ง


ด้านขวา

เพิ่มเติม

สำหรับผู้ใช้ Mac OS X ลอง $ cat fox.txt | say ดูครับ


ลองทำความเข้าใจกับคำสั่งนี้ดูนะครับ
$ cat fox.txt | tr " " "\n" | sort | wc -w
อย่าลืมว่าตอนนี้คุณรู้จักคำสั่ง man แล้วนะครับ
สำหรับคนที่ไม่รู้ว่า \n หมายความว่าอะไรลองค้นหาในอินเตอร์เน็ตดูนะครับ

บทที่ 15
I/O Redirection (< , > , >>)

ตั้งแต่บทที่ 02 เป็นต้นมาจะเห็นว่าเราป้อนคำสั่งผ่านทางคีบอร์ดและแสดงผลออก
มาทางหน้าจอ ซึ่งเจ้าคีบอร์ดและหน้าจอของเราก็คือ Input/Output Standard
นั้นเอง

แต่เราสามารถที่จะเปลี่ยนทิศทาง (Redirection) จากรับ input ผ่านคีบอร์ดเป็น


รับจาก file แทน หรือ เราจะเปลี่ยนทิศทางการแสดงผลจากหน้าจอเป็นการบันทึกลง
text file แทนก็ได้..(เก่งจัง)

แบบฝึกหัด

1 $ cd ~/learncli
2 $ ls -F
3 cat.txt copydir/ fox.txt movedir/ right/ toolong.txt
4
5 $ cat fox.txt cat.txt
6 $ cat fox.txt cat.txt > foxcat.txt
7 $ cat cat.txt fox.txt > catfox.txt
8 $ ls
9 $ cat foxcat.txt
10 $ cat catfox.txt
11
12 $ cat > colors.txt
13 Red
14 Green
15 Blue
16 ^D <-- บรรทัดนี้หมายความว่าให้กดปุ่ม Ctrl+d นะครับ
17
18 $ cat colors.txt
19
20 $ cat > colors.txt
21 Black
22 White
23 Yellow
24 ^D
25
26 $ cat colors.txt
27
28 $ cat >> colors.txt
29 Red
30 Green
31 Blue
32 ^D
33
34 $ cat colors.txt
35
36 $ cat >> colors.txt
37 Pink
38 Purple
39 ^D
40
41 $ cat colors.txt
42
43 $ cat < colors.txt
44 $ more < colors.txt
45 $ less < colors.txt
46
47 $ sort < colors.txt
48 $ sort < colors.txt > sortcolors.txt
49 $ cat sortcolors.txt

บทนี้เรียนรู้อะไร?

’>’ เป็นการกำหนดให้ส่ง Output ไปยัง file ที่ระบุ ถ้า file ที่ระบุมีอยู่แล้วจะ


เป็นการเขียนข้อมูลทับ file เดิม
’<’ เป็นการกำหนดให้รับ Input จาก file ที่ระบุ
’>>’ เป็นการกำหนดให้ส่ง Output ไปยัง file ที่ระบุ ถ้า file ที่ระบุมีอยู่แล้ว
จะเป็นการเขียนข้อมูลต่อจากข้อมูลเดิม

เพิ่มเติม

ลองเล่นผสมกันระหว่างการ Redirection และ Pipes ดูนะครับ

บทที่ 16
Wildcards (* , ?)

มาต่อกันอีกหนึ่งความสามารถอันโดดเด่นของ CLI กันครับ (จริงๆ ต้องบอกว่า


ความสามารถของ Shell) Wildcards เป็นการแทนที่ตัวอักษรด้วยสัญลักษณ์ ทำให้
เราสามารถที่จะพลิกแพลงประยุกต์ใช้งาน Command-line ได้อย่างมีประสิทธิภาพ
มากยิ่งขึ้น ซึ่งถ้าให้อธิบายอาจจะพางงกันได้ ผมว่าไปลองดูกันที่แบบฝึกหัดกันดีกว่า
ครับ ขอให้คุณตั้งใจสังเกตผลลัพธ์หน่อยนะครับ

แบบฝึกหัด 16-1

1 $ cd ~/learncli
2 $ ls
3 catfox.txt colors.txt foxcat.txt movedir sortcolors.txt
4 cat.txt copydir fox.txt right toolong.txt
5
6 $ ls c*
7 $ ls *.txt
8 $ cat *.txt > mixtext.txt
9 $ less mixtext.txt
10
11 $ ls *cat*.txt
12 $ ls *fox*.txt
13 $ mkdir cattxt/ foxtxt/
14
15 $ cp *cat*.txt cattxt/
16 $ cp *fox*.txt foxtxt/
17 $ ls cattxt/
18 $ ls foxtxt/

แบบฝึกหัด 16-2

1 $ cat > red.color


2 red
3 ^D
4
5 $ cat > green.color
6 green
7 ^D
8
9 $ cat > blue.color
10 blue
11 ^D
12
13 $ ls *.color
14 $ cat *.color
15 $ cat *.color | sort -r > rgb.color
16 $ cat rgb.color
แบบฝึกหัด 16-3

1 $ ls
2 $ ls *.*
3 $ ls *.txt
4 $ ls *.color
5 $ ls *.???
6 $ ls *.????
7 $ ls *.?????
8 $ ls ???.*
9 $ ls ????.*
10
11 $ mkdir art/
12 $ mv *color* art/
13 $ ls
14 $ ls art/
15
16 $ rm *.txt
17 $ ls
18 $ rm -rv *dir
19 $ ls

บทนี้เรียนรู้อะไร?

คุณสามารถกรองผลลัพธ์หรือคัดเลือก file หรือ directory ได้โดยใช้ * หรือ


?
คุณสามารถใช้สัญลักษณ์ * แทนตัวอักษรอะไรก็ได้และกี่ตัวก็ได้
คุณสามารถใช้สัญลักษณ์ ? แทนตัวอักษรอะไรก็ได้แต่แทนได้แค่หนึ่งตัว

เพิ่มเติม

สัญลักษณ์ที่ใช้สำหรับ wildcards ยังมีอีกลองค้นหาดูในอินเตอร์เน็ตครับ

บทที่ 17
ค้นหา Files (find)

แบบฝึกหัด

1 $ cd ~/learncli
2
3 $ find . -name "*.txt"
4
5 $ find . -name "*.color"
6
7 $ find ~ -name "*.txt"
8
9 $ find ~ -name "*.color"
10
11 $ find . -type d
12
13 $ find . -type f
14
15 $ find . -name "*.txt" | grep "fox"
16
17 $ find . -name "*.txt" | grep "fox" | wc -l
18
19 $ find . -type d | wc -l
20
21 $ find . -type f | wc -l

บทนี้เรียนรู้อะไร?

คำสั่งในการค้นหา file หรือ directory


ค้นหาแบบระบุชื่อ
ค้นหาแบบระบุชนิด file หรือ directory

เพิ่มเติม

man find
man grep
man wc
ลอง find ใน home directory ของคุณ แล้ว grep เอาเฉพาะ file รูป .jpg
แล้วอยากรู้ด้วยว่ามีทั้งหมดกี่ file จัดเก็บ path ที่ได้ลง file ชื่อ list_jpg.txt
ถ้าอยากหา file ที่มีขนาด file size ใหญ่กว่า 1MB คุณหาได้ไหมครับ?
ถ้าอยากหา file หรือ directory ที่เป็น .dotfile (hidden file) คุณหาได้ไหม
ครับ?
ตั้งโจทย์เองแล้วฝึกเยอะๆ ครับ พลังแห่งการค้นหาอยู่ที่ปลายนิ้วคุณแล้วครับ
:P
บทที่ 18
คำสั่งสำหรับ Backup ข้อมูล (zip , unzip , tar)

ในการทำงานจริง Backup file ที่เรามักจะเจอบ่อยๆ น่าจะมี .zip .tar.gz และ


.tar.bz2 ครับ

แบบฝึกหัด

1 $ cd ~/learncli
2 $ ls -F
3 art/ cattxt/ foxtxt/ right/
4
5 $ mkdir backup/
6
7 $ zip -r ./backup/art.zip art/
8
9 $ tar -zcvf ./backup/cattxt.tar.gz cattxt/
10
11 $ tar -jcvf ./backup/foxtxt.tar.bz2 foxtxt
12
13 $ cd backup/
14 $ ls
15
16 $ unzip art.zip
17
18 $ tar -zxvf cattxt.tar.gz
19
20 $ tar -jxvf foxtxt.tar.bz2
21
22 $ ls

บทนี้เรียนรู้อะไร?

การ Backup ด้วยคำสั่ง zip , tar

เพิ่มเติม

ลองทำ Backup directory ไหนของคุณก็ได้ที่เก็บ file เอาไว้เยอะๆ แล้วลอง


เปรียบเทียบว่า .zip , tar.gz และ tar.bz2 อันไหนบีบอัดได้ดีกว่ากัน
บทที่ 19
ก้าวต่อไป

ถ้าคุณเปิดมาถึงบทนี้โดยค่อยๆ ผ่านมาทีละบทผมก็ขอขอบคุณมากครับที่ คุณทำตา


มกติกาที่ผมบอกเอาไว้ในบทที่ 00 และต้องชมคุณว่า “คุณนี้ไม่ได้หน้าตาดีอย่าง
เดียวนะครับ เก่งมากด้วย” มีทั้งวินัยและความพยายาม ตบมือรัวๆ ให้เลยครับ :D

มาถึงตอนนี้คุณน่าจะคุ้นเคยกับ CLI มากขึ้นแล้วนะครับ ถ้ายังไม่ชำนาญไม่เป็นไรนะ


ครับ ของอย่างนี้มันต้องฝึกกันบ่อยๆ

อย่างที่บอกเอาไว้ในบทนำนะครับ ผมเขียนหนังสือเล่มนี้ขึ้นมาเพื่อเป็นก้าวแรก
สำหรับผู้ที่สนใจใช้งานคอมพิวเตอร์ผ่าน CLI เท่านั้น หากคุณสนใจที่จะเรียนรู้เพิ่ม
เติม…“อินเตอร์เน็ตเป็นครูที่ดีครับ”

สิ่งที่ควรเรียนรู้ต่อไป

ศึกษาคำสั่งอื่นๆ เพิ่มเติมโดยการตั้งโจทย์และค้นหาในอินเตอร์เน็ต เช่น


การติดตั้ง Sofeware Packages ผ่าน apt-get, yum, หรือ
download มา compile ด้วยตัวเอง
ฝึกเป็น Unix/Linux Administrator
ศึกษาในหัวข้อเรื่อง Permissions, Processes, คำสั่งในการจัดการ
ระบบ ฯลฯ
ถ้าสนใจทางด้าน Network ก็สบายแล้วครับ
ศึกษา Text Editor อย่างเช่น nano , vim , emac
ศึกษาเลยเถิดไปจนถึงการเขียน Shell Script ไปเลยครับ
ผมสอนคุณเกี่ยวกับ Bash Shell ก็จริง แต่ในโลกนี้ยังมี Shell อีกหลายตัว
คุณลองหาทางเปลี่ยนไปใช้ Shell ตัวอื่นดูบ้างก็ได้นะครับ เช่น zsh
สำหรับผู้ใช้ Windows คุณรู้จัก PowerShell ไหมครับ? คุณลองใช้หนังสือ
เล่มนี้เป็นแนวทางในการใช้งาน PowerShell ดูก็ได้นะครับ

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

กรกต รักห่วง

http://about.me/rkorakot
บทสุดท้าย
เกี่ยวกับผู้เขียน

โลกจริง

กรกต รักห่วง
ภรรยา 1 คนถ้วน (ไม่คิดจะมีเพิ่มแล้วครับ)
หนีเมืองกรุงฯ ใช้ชิวิตอยู่จังหวัดตรัง
เป็นแฟนบอลทีม Liverpool
เล่น DOS Game เป็นงานอดิเรก

โลกออนไลน์

@rkorakot
http://www.rkorakot.me
http://about.me/rkorakot

เกี่ยวกับหนังสือ

ภาพปกใช้ฟอนด์ ‘RD CHULAJARUEK’


ที่มา http://www.f0nt.com/release/rd-chulajaruek-regular/
แหล่งอ้างอิงในการเขียน
http://linuxcommand.org
http://www.maclife.com/tags/terminal_101
http://freeengineer.org/learnUNIXin10minutes.html
http://www.ee.surrey.ac.uk/Teaching/Unix/

You might also like