
Important Note
คอมพิวเตอร์ที่แอดใช้สอนเป็น Windows 10 ที่ติดตั้ง Subsystem for Linux เอาไว้ สำหรับนักเรียนที่ใช้ Windows และอยากทำตามบทเรียนนี้ อ่านวิธีการติดตั้ง Linux ได้ที่นี่ (แอดใช้ Ubuntu 18.04 LTS)
คอมมานด์ของ linux/ mac os ที่แอดใช้สอนใน module นี้เรียกว่า bash ย่อมาจากคำว่า Bourne Again SHell พัฒนาโดย Brian Fox เป็น command line ตัวมาตรฐานที่ใช้กันมาตั้งแต่ปี 1989

Module นี้เราจะเรียนกันแบบ text-based + tutorial นะครับ นักเรียนต้องอ่านบทความและลองทำตามใน terminal/ shell ของตัวเอง สำหรับ bash version ใหม่นักเรียนสามารถ copy & paste โค้ดหรือกด CTRL+C
CTRL+V
ใน terminal ได้แล้ว (สะดวกขึ้น แต่แอดแนะนำว่าเขียนโค้ดเองดีกว่า จะได้ฝึกไปในตัวนะครับ)
หลังจากเรียนโมดูลนี้จบแล้ว นักเรียนที่ใช้ linux/ mac os สามารถข้ามไปเรียน SQLite ในโมดูลสามได้เลยนะครับ ถ้าใครติดตั้ง Parallels แอดแนะนำให้ลองเรียนเนื้อหาของ Windows ด้วยจะมีประโยชน์มากเวลาจบไปทำงานจริง (บริษัทส่วนใหญ่ยังนิยมใช้ windows laptop มากกว่า macbook)
Download

ดาวน์โหลดไฟล์ตัวอย่างสำหรับ module นี้ได้ที่นี่
Key Concept
Command Line คือ instruction หรือคอมพิวเตอร์โค้ดที่ถูกสร้างขึ้นมาเพื่อทำงานหนึ่งๆ ยิ่งเรารู้จัก commands มากขึ้นเท่าไหร่ เรายิ่งทำงานได้มากขึ้นเท่านั้น โปรแกรมที่ใช้เขียน command line ของ mac เรียกว่า Terminal หรือ Shell
👩💻 ทำไมต้องเรียน Command Line?
เพราะไม่ใช่ทุกคอมพิวเตอร์จะมีหน้าจอ GUI (Graphical User Interface) ให้เราใช้งาน ยกตัวอย่างเช่น server ในบริษัทของเราหรือการทำงานกับบริการต่างๆของ cloud platforms อย่าง Google Cloud, AWS, Microsoft Azure เราจำเป็นต้องเขียน command line เองทั้งหมดเลย
คลิกเพื่อดูตัวอย่าง gcloud commands ของ Google Cloud Platform
Review
Essential Command Lines (Linux/ Mac OS) ที่ควรรู้จักและใช้ให้เป็น
echo
– แสดงข้อความใน terminal/ shellpwd
– แสดง working directory ปัจจุบัน (print working directory)ls
– แสดงข้อมูลไฟล์และโฟลเดอร์ใน working directorycd
– เปลี่ยน working directorymkdir
– สร้าง directory ใหม่rmdir
– ลบโฟลเดอร์หรือ directoryrm
– ลบไฟล์mv
– ย้ายไฟล์หรือโฟลเดอร์/ เปลี่ยนชื่อไฟล์หรือโฟลเดอร์cp
– copy ไฟล์หรือโฟลเดอร์nano
– เปิดโปรแกรม nano text editor ของ linux/ mactouch
– สร้าง text file ง่ายๆcat
– แสดงข้อมูลใน text fileman
– เรียกคู่มือ manual ของคอมมานด์นั้นๆclear
– เคลียร์หน้าจอ terminal/ shell
Note – ในคอร์สนี้ คำว่า directory กับ folder คือสิ่งเดียวกันนะครับ เราสามารถ navigate file systems ใน Linux/ Mac OS ได้สองวิธีคือ 1. Finder (GUI) หรือ 2. terminal/ shell (command line)
[su_spoiler title=”วิธีการเปิด terminal ใน mac”]
เราสามารถเปิด terminal ได้สองวิธี 1. คลิกที่ไอคอน launchpad และพิมพ์ “terminal” หรือ 2. เปิด Finder ไปที่โฟลเดอร์ /Applications/Utilities
และเปิด terminal

อ่านเพิ่มเติมได้ที่บทความช่วยเหลือของ apple
[/su_spoiler]
Basics
วันที่ เวลา ปฏิทิน
เมื่อเปิด terminal/ shell ขึ้นมา โปรแกรมจะรอรับคำสั่งจากเราโดยตัว prompt จะแสดงชื่อของ user ตามด้วยชื่อของ machine (คอมพิวเตอร์) ที่เราตั้งค่าไว้ ตัวอย่างเช่น toyeiei@LAPTOP-6BQFCRRP
ตามด้วยเครื่องหมาย $
วิธีการเขียนคอมมานด์ ให้เราพิมพ์ command ที่ต้องการหลัง $
และเคาะ Enter
ได้เลย
พิมพ์และรันคอมมานด์ date
และ cal
ตามลำดับเพื่อเรียกดูวันที่ เวลา และปฏิทิน (cal ย่อมาจาก calendar)
date
cal
แสดงผลข้อความ
echo
เทียบเท่ากับฟังก์ชัน print() ของภาษาอื่นๆ ใช้สำหรับแสดงผลข้อมูลใน terminal/ shell
echo hello world
echo I am learning command line for linux and mac os
ถ้าเราต้องการเคลียร์หน้าจอ terminal/ shell ให้พิมพ์คอมมานด์ clear
ถ้าต้องการปิด terminal/ shell ให้พิมพ์คอมมานด์ exit
และคลิกปุ่มแดงเพื่อปิดโปรแกรม
clear
exit
Note – ตอนเราเรียนถึงบท Python เราสามารถพิมพ์ข้อความเดียวกันด้วยฟังก์ชัน print(“I am learning command line in linux and mac os!”)
[su_spoiler title=”คลิกเพื่อดูวีดีโอ echo
“]
echo
แสดงผลข้อความใน terminal และ clear
หรือ CTRL+L
เพื่อเคลียร์หน้าจอ
[/su_spoiler]
สร้าง Directory ใหม่
หัวข้อนี้เราจะเรียน 3 commands ที่ใช้เยอะที่สุดใน linux/ mac os คือ pwd
mkdir
และ ls
pwd
– print working directorymkdir
– make directoryls
– list contents in directory
เราใช้คอมมานด์ pwd
ย่อมาจาก print working directory เพื่อดูชื่อโฟลเดอร์ปัจจุบันของเรา (ศัพท์เทคนิคเราเรียกว่า PATH) โดย linux/ mac os จะใช้ตัว slash /
เพื่อเขียนชื่อ path ตัวอย่างเช่น /home/user_name
pwd
mkdir
ย่อมาจาก make directory ใช้สำหรับสร้างโฟลเดอร์หรือ directory ใหม่ syntax การเขียนให้พิมพ์ mkdir
ตามด้วยชื่อโฟลเดอร์ เราสามารถใช้ mkdir
สร้างหลายๆโฟลเดอร์พร้อมกันตามตัวอย่างด้านล่าง
mkdir newFolder1
mkdir newFolder2 newFolder3
เสร็จแล้วใช้คอมมานด์ ls
ย่อมาจาก list contents เพื่อเรียกดูไฟล์และโฟลเดอร์ใน working directory ของเรา นักเรียนจะเห็นชื่อโฟลเดอร์ newFolder1
newFolder2
newFolder3
ที่เราเพิ่งสร้างขึ้นมาใน terminal
ls
เปลี่ยน PATH
linux/ mac os ใช้ slash /home/user_name
สำหรับเขียนชื่อ path เราใช้ cd
command (ย่อมาจาก change directory) เพื่อเปลี่ยนไปยัง path ที่เราต้องการ
- ถ้าเราพิมพ์
cd
เฉยๆ จะกลับไปสู่ root directory ของคอมพิวเตอร์เรา ใน linux/ mac คือ path/home/user_name
- cd ตามด้วยชื่อ folder ที่อยู่ใน working directory คือการย้ายไปที่โฟลเดอร์ใหม่
- cd .. คือการย้อนกลับหนึ่ง step (กลับไปที่ parent)
- cd ตามด้วยชื่อ absolute path เต็มๆ เช่น
/home/user_name/folder/sub_folder
คือการย้ายไปที่โฟลเดอร์นั้นในคอมพิวเตอร์ของเราเลย
[su_spoiler title=”คลิกเพื่อดูวีดีโอ cd
“]
cd
คือคอมมานด์หลักที่ใช้ในการ navigate file systems ของ linux/ mac os ตอนจบของวีดีโอนี้เราย้ายกลับมาอยู่ที่ /home/toyeiei
ใน path นี้มีทั้งหมด 4 โฟลเดอร์คือ newFolder1
newFolder2
newFolder3
และ travel
[/su_spoiler]
มาลองสร้างโฟลเดอร์ใหม่ mkdir
travel ใน current path ของเรากันก่อน
pwd
mkdir travel
ใช้คอมมานด์ cd
navigate ไปที่โฟลเดอร์ travel แล้วลองปริ้นท์ชื่อ path ด้วย pwd
cd travel
pwd
พิมพ์ cd ..
เพื่อกลับไปที่ path ก่อนหน้า ปริ้นท์ชื่อ path ด้วย pwd
อีกครั้งหนึ่ง
cd ..
pwd
เราสามารถเขียน cd
ตามด้วยชื่อ path เต็มๆ (absolute path) ตามตัวอย่างด้านล่าง
cd /home/user_name/country/thailand
Tip – เวลาเราเขียนชื่อโฟลเดอร์หรือไฟล์ใน terminal/ shell สามารถคลิกปุ่ม TAB
บนคีย์บอร์ดเพื่อทำ auto complete ชื่อได้ด้วย (ประหยัดเวลาตอนเขียนชื่อ path หรือชื่อไฟล์และโฟลเดอร์ยาวๆ)
สร้าง Text File ง่ายๆ
หัวข้อนี้มาเรียนวิธีการสร้าง text file และการเรียกใช้งาน nano
text editor ผ่าน terminal/ shell
เราใช้คอมมานด์ touch
เพื่อสร้าง text file เปล่าๆ (ยังไม่มีข้อมูลในไฟล์)
touch cities.txt
เราสามารถแก้ไขข้อมูลในไฟล์นี้ด้วยโปรแกรม text editor ของ linux/ mac ชื่อว่า nano
วิธีการ edit ไฟล์ให้พิมพ์ nano
ตามด้วยชื่อไฟล์ ลองเขียนชื่อ 2-3 เมืองในไฟล์นี้
nano cities.txt
Bangkok
London
Tokyo
หลังจากแก้ไข เพิ่มเติมข้อมูลเสร็จแล้ว เราจะกดปุ่ม CTRL+O
บนคีย์บอร์ดเพื่อ save file เคาะ Enter
หนึ่งครั้งเพื่อคอนเฟิร์มชื่อไฟล์ และกดปุ่ม CTRL+X
เพื่อปิดโปรแกรม nano กลับสู่ terminal/ shell
เราใช้คอมมานด์ cat
เพื่อปริ้นท์ content ของ text file ใน terminal
cat cities.txt
ปรับพารามิเตอร์
คอมมานด์ส่วนใหญ่จะมีพารามิเตอร์ที่เราสามารถปรับเปลี่ยนได้ โดย bash parameter จะเขียนตามหลังเครื่องหมาย -
และชื่อพารามิเตอร์จะมีสองแบบ คือแบบสั้น -l
หรือแบบยาว --reverse
(อธิบาย แบบสั้นจะใช้ -
ตามด้วยหนึ่งตัวอักษร แบบยาวจะใช้ --
ตามด้วย word เช่น help หรือ reverse)
ls
ชื่อโฟลเดอร์จะมีไฮไลท์สีเขียวด้วย ส่วนชื่อไฟล์ปกติจะไม่มีไฮไลท์มาลองดูตัวอย่างพารามิเตอร์ของ ls
ตัวที่เราใช้บ่อยที่สุดคือ -l
ย่อมาจาก long listing format ใช้แสดงผลข้อมูลไฟล์และโฟลเดอร์ใน working directory ของเราแบบเต็มๆ มีชื่อ user ที่สร้างไฟล์นั้นๆขึ้นมา วันและเวลาที่อัพเดทไฟล์ล่าสุด และขนาดไฟล์ (size)
ls
ls -l
เราสามารถเขียนหลายๆพารามิเตอร์พร้อมกันได้สองวิธี คือ -l
-S
หรือเขียน -lS
ติดกันเลยก็ได้ โดยที่ S
(ตัวพิมพ์ใหญ่) คือการเรียงไฟล์ตามขนาด (sorted by size) จากสูงไปต่ำ ตัวอย่างด้านล่างคือการสั่ง terminal ให้แสดงผลข้อมูลไฟล์แบบ long listing format และ sort files by size
ls -l -S
ls -lS
เราสามารถใช้ wildcard *
กับคอมมานด์ ls
เพื่อ any match character ค้นหาชื่อไฟล์หรือ .extension ที่ต้องการ ตัวอย่างด้านล่างเราค้นหาไฟล์ .pdf .jpg และไฟล์ที่ชื่อขึ้นต้นด้วยตัว a ตามลำดับ
ls *.pdf
ls *.jpg
ls a*
ถ้าต้องการดูว่าคอมมานด์ ls
มีพารามิเตอร์อะไรบ้าง ให้พิมพ์ ls --help
เพื่อเรียกคู่มือขึ้นมาอ่าน อ่านจบแล้วกด q
บนคีย์บอร์ดเพื่อกลับสู่ terminal (ถ้าใครพิมพ์ ls --help
ไม่ได้ ให้ลองพิมพ์ man ls
แทนนะครับ)
ls --help
Note – ไม่ใช่ทุกคอมมานด์จะสามารถใช้ --help
เพื่อเรียกคู่มือขึ้นมาอ่านได้ พารามิเตอร์พวกนี้จะขึ้นอยู่กับ developers ที่เขียนมันขึ้นมา ถ้าหาคู่มือไม่เจอ แอดแนะนำให้ลอง Google หาข้อมูลเองได้เลย
ย้ายและเปลี่ยนชื่อไฟล์
คอมมานด์ mv
ย่อมาจาก move ใช้สำหรับย้ายไฟล์หรือโฟลเดอร์ syntax การเขียนคือ mv file folder
ตัวอย่างด้านล่างเราย้ายไฟล์ hello.txt ไปที่โฟลเดอร์ new_folder
mv hello.txt new_folder
เราสามารถใช้ mv
เพื่อเปลี่ยนชื่อไฟล์ได้ด้วย ตัวอย่างนี้เรา rename ชื่อไฟล์ hello.txt เป็น helloworld.txt
mv hello.txt helloworld.txt
[su_spoiler title=”คลิกเพื่อดูวีดีโอ mv
“]
เราใช้คอมมานด์ mv
เพื่อย้ายและเปลี่ยนชื่อไฟล์
[/su_spoiler]
การลบไฟล์และโฟลเดอร์
เราใช้คอมมานด์ rm
เพื่อลบไฟล์ที่เราไม่ต้องการ ตรงนี้ต้องระวังมากๆ เพราะว่าลบแล้วหายเลย (ไฟล์ไม่ได้ไปอยู่ใน recycly bin) และ terminal/ shell ไม่มีปุ่ม undo ด้วย เราสามารถใช้พารามิเตอร์ -i
เพื่อถามเราก่อนอีกครึ่งหนึ่งว่าต้องการจะลบไฟล์นั้นจริงหรือเปล่า พิมพ์ y
เพื่อยืนยันการลบไฟล์
rm cities.txt
rm -i cities.txt
เราใช้คอมมานด์ rmdir
(remove directory) เพื่อลบโฟลเดอร์เปล่าที่เราไม่ต้องการ
rmdir newFolder3
ถ้าโฟลเดอร์นั้นมีข้อมูลหรือไฟล์อื่นๆอยู่ เราต้องลบไฟล์ทั้งหมดก่อนถึงจะลบโฟลเดอร์ได้ เทคนิคคือการใช้ wildcard *
เพื่อลบไฟล์ทั้งหมดใน newFolder3
ตามตัวอย่างด้านล่าง
rm newFolder3/*
rmdir newFolder3
Redirection
เราใช้สัญลักษณ์ > เพื่อ redirect output ของ echo ไปที่ text file ได้ (.txt) และใช้ >> เพื่อ append ข้อความ เสร็จแล้วใช้ cat
เพื่อดู content ของ text file ใน terminal/ shell
ตัวอย่างนี้เราสร้างไฟล์ hello.txt ด้วยเทคนิค redirection มีข้อมูลทั้งหมด 3 บรรทัด
echo hello world > hello.txt
echo this is a second line >> hello.txt
echo this is a third line >> hello.txt
cat hello.txt
[su_spoiler title=”คลิกเพื่อดูวีดีโอ redirection
“]
เราใช้ >>
เพื่อ append ข้อความใน text file ถ้าเราใช้ >
จะเป็นการเขียนทับไฟล์เดิม (overwrite)
[/su_spoiler]
ค้นหา String Pattern
เราใช้คอมมานด์ grep
เพื่อค้นหา pattern ใน text file ได้ โดย grep
จะหา pattern ที่เราต้องการทีละบรรทัดใน text file นั้นๆ และแสดงผลเฉพาะบรรทัดที่เจอ matched pattern พร้อมทั้งไฮไลท์สีด้วย
ตัวอย่างนี้เราค้นหาตัวอักษร “a” และ “o” ตามลำดับ ถ้าต้องการให้ grep
ค้นหาแบบไม่สนใจ case (ตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ก็ได้) ให้เราใส่พารามิเตอร์ -i
ด้วย
cat animals.txt
grep "a" animals.txt
grep "o" animals.txt
grep -i "a" animals.txt
วิธีการอ่าน Manual
สำหรับ commands ส่วนใหญ่ใน linux/ mac จะมีคู่มือ (manual) ให้เราอ่านวิธีการใช้งานแบบละเอียด เราใช้คอมมานด์ man
เพื่อเปิดไฟล์คู่มือ ถ้าคู่มือมีหลายหน้าให้กดปุ่ม PgUp
PgDn
หรือ space bar
บนคีย์บอร์ดเพื่อเลื่อนหน้าไปมาได้ ถ้าต้องการออกจากคู่มือให้กด q
หนึ่งครั้ง
man pwd
man ls
man mkdir
[su_spoiler title=”คลิกเพื่อดูวีดีโอ man
“]
เวลาเจอคอมมานด์ใหม่ๆ สิ่งแรกที่แอดทำคืออ่านคู่มือ วิธีหลักๆที่เราใช้เรียกคู่มือคือ man command
หรือ command --help
ถ้าไม่มีคู่มือ ลองค้นข้อมูลเพิ่มเติมใน Google ก็ได้ (stackoverflow, quora เป็นต้น)
[/su_spoiler]
pipe operator
เราสามารถเชื่อม bash commands ต่างๆเข้าด้วยกันด้วยเครื่องหมาย |
(อ่านว่า pipe)
ตัวอย่างด้านล่างเราเชื่อม 3 commands เข้าด้วยกัน เริ่มจาก sort
เพื่อเรียงข้อมูลใน animals.txt แบบ ascending order (เรียงจาก A-Z) เสร็จแล้วส่ง output ไปที่คอมมานด์ uniq
เพื่อดูชื่อ animals ที่ไม่ซ้ำกันเลย (unique) และสุดท้ายคือคอมมานด์ wc
ใช้เพื่อนับจำนวน unique animals ในไฟล์ animals.txt
การใช้ pipe คือการ combo commands ของเรานั่นเอง (powerful technique!)
sort animals.txt
sort animals.txt | uniq
sort animals.txt | uniq | wc
เราสามารถใช้พารามิเตอร์เพื่อปรับผลลัพธ์ของคอมมานด์ได้ด้วย เช่น sort -r
เพื่อเปลี่ยนการเรียงข้อมูลเป็นแบบ descending order (Z-A) หรือ wc -l
แสดงผลเฉพาะจำนวนแถวของ text file เท่านั้น
sort -r animals.txt | uniq | wc -l
หัวข้อถัดไปแอดจะอธิบาย commands สำหรับจัดการ text file รวมถึง wc
อย่างละเอียด
ทำงานกับ Text File
Bash มีคอมมานด์ที่ออกแบบมาสำหรับทำงานกับ text file โดยเฉพาะ หัวข้อนี้เราจะเรียนด้วยกัน 4 ตัวคือ
head
tail
wc
less
👩💻 เวลาเจอ bash commands ใหม่ๆที่เราไม่เคยใช้มาก่อน ให้ลองศึกษาจากคู่มือ man head
หรือลอง Google เพื่อดูตัวอย่างการใช้งานเบื้องต้น
เราใช้ head
และ tail
เพื่อพรีวิวข้อมูลด้านบนและด้านล่างของ text file โดยเราสามารถใช้พารามิเตอร์ -n
เพื่อกำหนดจำนวนแถวที่ต้องการพรีวิวได้ด้วย ตัวอย่างนี้เราพรีวิว 3 แถวบนและล่างของไฟล์ animals.txt
head -n 3 animals.txt
tail -n 3 animals.txt
ถัดมาคือคอมมานด์ wc
แอดจำง่ายๆว่า word count
โดยเราสามารถใช้คอมมานด์นี้นับจำนวนแถว (new lines) จำนวนคำ (words) และจำนวนตัวอักษร (bytes) ใน text file ได้
ถ้าเรารันคอมมานด์ wc
โดยไม่ใส่พารามิเตอร์ bash จะแสดงจำนวนแถว จำนวน word และ bytes ใน terminal เราสามารถใช้พารามิเตอร์ -l
-w
-c
เพื่อแสดงเฉพาะ lines, words, bytes ตามลำดับ
wc animals.txt
wc -l animals.txt
wc -w animals.txt
wc -c animals.txt
[su_spoiler title=”คลิกเพื่อดูวีดีโอ wc
“]
output ของ wc
จะเป็นตัวเลขสามตัวคือ [1] จำนวนแถว [2] จำนวนคำ [3] จำนวนตัวอักษร (bytes) ตามลำดับ ตัวอย่างในวีดีโอนี้ไฟล์ animals.txt ได้ output 7 7 33
คือ 7 lines, 7 words และ 33 bytes ตามลำดับ เราสามารถใช้พารามิเตอร์ -l
-w
และ -c
เพื่อเรียกดูเฉพาะตัวเลขที่เราต้องการตามลำดับ
[/su_spoiler]
ถ้า text file ของเรามีขนาดใหญ่ หลายร้อยบรรทัด (หรือมากกว่านั้น) เราสามารถใช้ less
เพื่อเรียกดู content ทีละหน้าได้ โดยกด space bar
เพื่อเลื่อนไปหน้าถัดไป หรือกด q
เพื่อ quit กลับสู่ terminal
less long_text.txt
HTML
[su_spoiler title=”คลิกเพื่อดูวีดีโอ HTML
tutorial 4.36 นาที”]
นักเรียนที่ใช้ linux/ mac os สามารถเรียนวิธีการเขียน HTML ได้ในวีดีโอนี้เลยครับ สำหรับ text editor ให้นักเรียนใช้ nano
เมื่อเขียนไฟล์ homepage.html เสร็จให้ลองเปิดไฟลื์นี้ด้วยโปรแกรม Safari (เปิด Finder ไปที่โฟลเดอร์ที่เก็บไฟล์ .html ของเราไว้ double-click เพื่อเปิดไฟล์)
Note – วีดีโอนี้แอดเขียน HTML ใน Windows 10 แต่ถ้านักเรียนดูจบ จะเห็นว่าวิธีการเขียน command line ของทุก OS มีความแตกต่างกันน้อยมาก (ต่างกันแค่ชื่อคอมมานด์ และชื่อพารามิเตอร์)
[/su_spoiler]
HTML คือภาษาที่ใช้ใส่ content ในเว็บไซต์และกำหนด structure เบื้องต้น เช่น ข้อความ รูปภาพ วีดีโอ ไฟล์เสียง เป็นต้น เว็บไซต์ที่เราเห็นทั้งหมดจริงๆก็เป็นแค่ text file นามสกุล .html
nano homepage.html
HTML ใช้ <tag> ในการใส่ content
- <tag> เรียกว่า open tag ส่วน </tag> เรียกว่า closing tag
- <title> ชื่อ title ที่แสดงบนบาร์ด้านบนของ browser
- <h1> คือ heading tag ขนาดใหญ่ที่สุด สามารถไล่ระดับฟ้อนท์ได้ถึง h6
- <p> คือ paragraph tag ใส่ข้อความหรือประโยคยาวๆได้
- <img> ใช้ใส่รูปภาพ กำหนดค่า attribute
src="image.jpg"
โดยไฟล์รูปภาพต้องอยู่ใน working directory เดียวกันกับไฟล์ .html - <img> เป็น self-closing tag ไม่จำเป็นต้องมี </img> ปิดท้าย
<html>
<title>My Cool Website</title>
<h1>Hello World</h1>
<p>I am learning command line in Windows</p>
<p>This is my first website ever</p>
<img src="image.jpg">
</html>
HTML จะทำงานเหมือนเป็น tree structure โค้ดทั้งหมดจะถูก wrap อยู่ใน <html> tag และ content จะแบ่งเป็น <head> กับ <body>
- ข้อมูลที่อยู่ใน <head> นอกจากชื่อ title จะเป็นพวก metadata อื่นๆ
- ข้อมูลที่อยู่ใน <body> จะเป็น visible content ที่ถูกเรนเดอร์แสดงผลด้วย browser
<html>
<head>
<title>My Cool Website</title>
</head>
<body>
<h1>Hello World</h1>
<p>I am learning command line in Windows</p>
<p>This is my first website ever</p>
<img src="image.jpg">
</body>
</html>
หลังจากเขียนไฟล์ .html เสร็จแล้ว กดปุ่ม CTRL+O
เพื่อ save file เคาะ enter หนึ่งครั้งเพื่อคอนเฟิร์มและกดปุ่ม CTRL+X
เพื่อออกจาก nano ลองเปิดไฟล์ homepage.html ด้วยโปรแกรม Safari
อีกสองภาษาที่เรานิยมใช้กับ HTML ในการทำ website development คือ CSS สำหรับ styling ให้เว็บไซต์สวยงามขึ้นและ JavaScript เพื่อเพิ่มลูกเล่นแบบ interactive กับ users
curl website content
[su_spoiler title=”คลิกเพื่อดูวีดีโอ curl
tutorial 2.32 นาที”]
Windows ใช้คอมมานด์ findstr
สำหรับหา pattern ส่วน mac ใช้คอมมานด์ grep
[/su_spoiler]
เราใช้ curl
เพื่อดึงข้อมูลจากเว็บไซต์ เทคนิคที่เราใช้บ่อยๆคือการ redirect output ไปที่ text file และใช้ grep
เพื่อค้นหา pattern ที่เราต้องการ
ตัวอย่างด้านล่าง เราดึง html content จากเว็บไซต์ wikipedia และค้นหาชื่อ “title” ของเว็บไซต์นั้นๆ
curl https://en.wikipedia.org/wiki/Itaewon_Class
curl https://en.wikipedia.org/wiki/Itaewon_Class > itaewon.txt
grep "<title>" itaewon.txt
สังเกตวิธีการเขียน grep
(linux/ mac) หรือ findstr
(windows) ตัว syntax พื้นฐานเหมือนกันเลย ถ้าเราเขียน command line ของ OS ที่เราใช้ประจำเป็นแล้ว การเรียน OS ใหม่ ก็จะง่ายขึ้นเยอะเลย
ping website
[su_spoiler title=”คลิกเพื่อดูวีดีโอ ping
tutorial 2.44 นาที”]
Mac ใช้ ping -c
เพื่อกำหนดจำนวน echo requests ที่ส่งไปหาคอมพิวเตอร์อีกเครื่องหนึ่ง
[/su_spoiler]
ping ใช้ในการตรวจสอบการเชื่อมต่อระหว่างคอมพิวเตอร์ เช่น แล๊บท๊อปของเรากับเซอร์เวอร์ในอินเตอร์เน็ต วิธีการใช้งานแค่พิมพ์ ping ตามด้วยชื่อเว็บไซต์ (domain name) หรือ IP address ก็ได้
- Domain Name คือชื่อเว็บไซต์ ออกแบบมาให้ users ค้นหาเว็บไซต์ได้ง่ายๆ เช่น google.com, facebook.com, wikipedia.org เราสามารถจองและซื้อชื่อโดเมนที่ต้องการได้ จ่ายเงินเป็นรายปี ราคาเริ่มต้นประมาณ 200-300 บาท ลองดูรายชื่อ available domains ได้ที่เว็บไซต์ domains.google
- IP address เปรียบเสมือนเลขทะเบียนบ้านของเว็บไซต์ ออกแบบมาสำหรับการสื่อสารระหว่างคอมพิวเตอร์ด้วยกันเอง IP มีอยู่สองแบบคือ public external และ internal สำหรับใช้ภายในองค์กร
ping จะส่ง echo request ไปที่เว็บไซต์หรือเซอร์เวอร์นั้นๆ (ping ชื่อโดเมนหรือ ip address ก็ได้) เราใช้พารามิเตอร์ -c
เพื่อกำหนดจำนวน echo request ที่เราส่งไปได้ นักเรียนสามารถกดปุ่ม CTRL+C
เพื่อหยุดคอมมานด์ ping
ได้
ping www.google.co.th
ping 172.253.118.94
ตัวอย่างนี้เราส่ง echo requests ไปทั้งหมด 5 ครั้ง
ping -c 5 www.google.co.th
Note – ถ้าเรารันคอมมานด์ ping
เฉยๆโดยไม่ได้กำหนดจำนวน echo ที่ส่งไป ping
จะรันไปเรื่อยๆจนกว่าเราจะกดปุ่ม CTRL+Z
หรือ CTRL+C
บนคีย์บอร์ด
เปรียบเทียบ linux/ mac vs. windows
ตารางนี้แอดเปรียบเทียบให้ดูระหว่างคอมมานด์ของ Linux/ Mac และ Windows ตัวอย่างเช่น pwd
และ cd
ใช้แสดงชื่อ working directory ปัจจุบัน หรือ ls
และ dir
ใช้สำหรับแสดงชื่อไฟล์และโฟลเดอร์ใน directory
Note – ใน Windows ถ้าเราพิมพ์ cd
เฉยๆ cmd จะแสดงชื่อ working directory ของเรา
การเรียกใช้งานคอมมานด์ของทั้งสอง OS แตกต่างกันนิดเดียว วิธีการปรับพารามิเตอร์ (หรือ option ของคอมมานด์) Linux/ Mac จะใช้ -option
ส่วน Windows จะใช้ /option
แอดแนะนำว่านักเรียนควรเขียนพื้นฐานให้ได้ของทั้งสองระบบปฏิบัติการเลย เพราะตอนทำงานจริงมีโอกาสสูงมากที่เราต้องเจอกับ Linux โดยเฉพาะการทำงานกับเซอร์เวอร์หรือ cloud platform (Linux เป็น open source ที่สามารถดาวน์โหลดมาใช้งานฟรีได้เลย แตกต่างกับ Windows หรือ Mac ที่ต้องเสียเงิน)
Linux มีอยู่หลาย distributions ให้เลือกใช้งาน เช่น Ubuntu, Fedora, Kali และ OpenSuse เป็นต้น
References
- บทความสอนใช้งาน command line ของ Ubuntu สำหรับผู้เริ่มต้น
- คอร์สเรียนฟรี The UNIX Workbench เรียน command line ระดับพื้นฐานถึงขั้นสูงบน coursera
- หนังสือ The Linux Command Line โดย William Shotts
Content Reviewer
ขอบคุณคุณยศ นักเรียนคอร์ส ITF และแอดมินเพจมาลองเรียน (Data Analytics Manager @Predictive) ที่ช่วยทดสอบ bash commands ในแมคด้วยนะครับ ตอนนี้ยศเขียนรีวิวคอร์สเรียนออนไลน์ที่เค้าไปลงเรียนมาแล้ว ติดตามอ่านได้ที่เพจมาลองเรียน
Formative Quiz
🏆 Formative quiz คือแบบทดสอบเพื่อรีวิวและทบทวนความรู้ งานวิจัยของ Zhang และ Henderson (2015) พบว่านักเรียนที่ผ่านการทำควิซ จะช่วยให้เข้าใจบทเรียนได้ดียิ่งขึ้น better performance อย่างมีนัยสำคัญ
คลิกเพื่อเริ่มทำแบบสอบถาม 28 ข้อ นักเรียนสามารถทำควิซซ้ำได้เรื่อยๆจนกว่าจะได้คะแนนเต็ม
หลังจากทำแบบทดสอบเสร็จแล้ว แอดรบกวนช่วยตอบแบบสอบถามความพอใจ module นี้ด้วยนะครับ ขอบคุณทุกคนมากๆครับ แล้วพบกันในบทต่อไปนะ
Keep Learning
Module นี้เราเรียนวิธีการเขียน command line พื้นฐานสำหรับ linux/ mac นักเรียนที่ใช้แมคสามารถข้ามไปเรียน module 3 เรื่อง SQLite ได้เลยนะครับ mac os รุ่นใหม่จะมีโปรแกรม SQLite และ Python 3 ติดตั้งมาแล้ว สามารถเรียกใช้งานได้เลยแค่พิมพ์คอมมานด์ sqlite3
หรือ python3
ใน terminal

แอดแนะนำให้เรียนแค่วันละ 1-2 บท ให้เวลาสมองได้ย่อยเนื้อหาที่เราเรียนก่อน งานวิจัยด้าน neuroscience พบว่าสมองมีการเปลี่ยนแปลงทุกวันเวลาเราได้รับความรู้ใหม่