
บทความนี้จะมาอธิบาย Linux/Unix commands โดยใช้ online text editor ที่ชื่อว่า Replit สามารถสร้างฟรีได้ 3 Repl ( Repl คือ โปรเจ็คที่เราสร้างขึ้นบน Replit ) แต่จำกัดใช้ได้ฟรีแค่ 20 ชั่วโมง
- สมัคร free account ที่ replit.com
- คลิกปุ่ม Create Repl เลือก Template Bash
- ตั้งชื่อโปรเจ็คที่ช่อง Title
- กด Create Repl

เราสามารถดู version ของ bash ได้ด้วยคำสั่งbash –version

pwd
pwd ย่อมาจาก print working directory จะแสดงตัว home folder ที่เราใช้งานอยู่ปัจจุบัน

( ~ ) เรียกว่า tilde หมายถึง user’s home directory
ls
ls ย่อมาจากคำว่า list เป็นคำสั่งสำหรับแสดง File และ Folder ทั้งหมด

จากตัวอย่างด้านบนเราทำงานอยู่ในโฟลเดอร์ที่ชื่อว่า basic เราอยากจะรู้ว่าข้างในโฟลเดอร์นั้นเก็บอะไรไว้บ้างโดยใช้คำสั่ง ls
คำสั่ง ls สามารถทำงานร่วมกับ option อื่นๆได้ เราจะใส่ option ผ่านตัว – เช่น
ls -l l ย่อมาจาก long listing format จะแสดงรายละเอียดของไฟล์และโฟลเดอร์แบบเต็มๆ เช่น แสดงสิทธิ์ ( Permission ) ของแต่ละไฟล์และโฟลเดอร์, แสดงเจ้าของไฟล์, กลุ่ม, ขนาดของไฟล์หรือโฟลเดอร์, วัน เวลาที่แก้ไข, และ ชื่อไฟล์และโฟลเดอร์

ก่อนอื่นเรามารู้จักกับประเภทของสิทธิ์ ( Permission ) และ ประเภทของผู้ใช้ในระบบ Linux แบบเบื้องต้นกันก่อน
ประเภทของสิทธิ์ ( Permission )
ตัวแรกตำแหน่งแรกเท่านั้น
| d | เป็น directory หรือ folder |
| – | เป็น file |
ส่วนตัวอื่นๆที่เหลือ
| r | ย่อมาจากคำว่า readable คือ มีสิทธิ์ในการอ่านข้อมูลในไฟล์ |
| w | ย่อมาจากคำว่า writable คือ มีสิทธิ์ในการแก้ไขข้อมูลในไฟล์ |
| x | ย่อมาจากคำว่า executable คือ มีสิทธิ์ในการเรียกใช้งานไฟล์ หรือ execute ไฟล์ |
ประเภทของผู้ใช้ในระบบ Linux
| Owner / User | เจ้าของไฟล์หรือโฟลเดอร์ |
| Group | กลุ่ม ( ในกลุ่มสามารถมี user หลายคน ) |
| All users | คนอื่นที่ไม่ใช่เจ้าของและไม่อยู่ในกลุ่มของไฟล์และโฟลเดอร์ |
วิธีการอ่าน
ขอแบ่งออกเป็น 4 ช่องหลักๆ Directory or file | Owner | Group | All users
d | rwx | r-x| r-x
| d | เป็น directory หรือ folder |
| rwx | เจ้าของมีสิทธิ์ อ่าน แก้ไข และเรียกใช้งานได้ |
| r-x | กลุ่มมีสิทธ์ อ่าน และ เรียกใช้งานได้ แต่ไม่สามารถแก้ไข |
| r-x | คนอื่นๆมีสิทธ์ อ่าน และ เรียกใช้งานได้ แต่ไม่สามารถแก้ไข |
– | rw- | r– | r–
| r | เป็น file |
| rw- | เจ้าของมีสิทธิ์ อ่าน แก้ไข แต่ไม่สามารถเรียกใช้งานได้ |
| r– | กลุ่มมีสิทธิ์ อ่านได้อย่างเดียว |
| r– | คนอื่นมีสิทธิ์ อ่านได้อย่างเดียว |
เท่านี้ทุกคนก็สามารถเข้าใจเกี่ยวกับสิทธิ์และการอ่านไฟล์แบบ long format แบบเบื้องต้นได้แล้ว เรามาต่อกันที่ การใช้งาน ls กันอีก!!
ls -al a ย่อมาจาก all จะแสดงไฟล์ที่ถูกซ่อน ( Hidden File ) ขึ้นมาด้วย ไฟล์ที่ถูกซ่อนจะขึ้นต้นด้วย .

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

จากตัวอย่างข้างต้น ค้นหาไฟล์ทั้งหมด ( * ) ที่เป็นนามสกุล .py และ .c ในโฟลเดอร์ basic
เราสามารถใช้ ls -ld */ เพื่อให้แสดงโฟลเดอร์ทั้งหมด */ หมายความว่า ให้แสดงทุกโฟลเดอร์

cd
cd ย่อมาจาก change directory เป็นคำสั่งที่ใช้ในการเปลี่ยน directory หรือ folder


จากตัวอย่าง ตอนแรกเราอยู่ที่โฟลเดอร์ basic แต่เราต้องการกลับไปที่โฟลเดอร์ bash เราจะใช้คำสั่ง cd เพื่อเปลี่ยน folder ร่วมกับ .. ที่ได้อธิบายไปว่า หมายถึง โฟลเดอร์ที่อยู่ก่อนหน้าโฟลเดอร์ที่เราอยู่ เขียนได้เป็น cd .. หรือ cd ~/bash
แล้วถ้าอยากกลับไปยังโฟลเดอร์ basic แค่เขียน cd basic

ตัวอย่างต่อมา
เราอยู่ในโฟลเดอร์ที่ชื่อว่า folder1 แต่ถ้าเราอยากจะกลับไปยังโฟลเดอร์ bash ปกติต้องเขียน cd .. สองรอบ แต่เราสามารถใช้ cd ../.. หรือ cd ~/bash เพื่อความสะดวกรวดเร็ว


cp
cp ย่อมาจาก copy เป็นคำสั่งที่ใช้ในการ copy file จากโฟลเดอร์อื่นๆมายังโฟลเดอร์ที่เราอยู่ โดยใช้ cp ชื่อโฟลเดอร์ที่เราต้องการ copy file/ชื่อไฟล์ที่ต้องการ copy


จากตัวอย่างจะเห็นได้ว่ามีไฟล์ในโฟลเดอร์ folder1 ซึ่งเป็นโฟลเดอร์ที่อยู่ใน basic อีกที และเรากำลังอยู่ที่โฟลเดอร์ basic แต่อยากจะ copy ไฟล์ hello.py ที่อยู่ในโฟลเดอร์ folder1 มาและทำการเปลี่ยนชื่อเป็น hello_new.py ถ้าหากเราไม่ต้องการเปลี่ยนชื่อก็ไม่ต้องเขียนชื่อไฟล์ใหม่ตามหลัง
ถ้าเราอยากจะ copy folder cp -r ชื่อโฟลเดอร์ที่เราต้องการ copy ชื่อโฟลเดอร์ใหม่

จากตัวอย่าง ใช้ cp ชื่อโฟล์เดอร์ที่เราต้องการ copy ชื่อโฟล์เดอร์ใหม่ จะไม่สามารถทำการ copy ได้ เราต้องเพิ่ม option เข้าไปด้วย คือ r ย่อมาจากคำว่า recursive จะสั่งให้ระบบ recursive ทั้งหมดใน directory/folder (ไล่ดูทุกไฟล์ภายใน directory/folder เพื่อทำการ copy)
mkdir
mkdir ย่อมาจาก make directory ใช้สร้างโฟลเดอร์ใหม่ พิมพ์ mkdir ตามด้วยชื่อโฟลเดอร์ที่เราต้องการ จากตัวอย่างด้านล่าง สร้างโฟลเดอร์ชื่อ basic เราสามารถดูโฟลเดอร์ ที่เราสร้างทางด้านซ้ายมือด้านบนใน replit

เราสามารถสร้างได้หลายๆโฟลเดอร์พร้อมกัน mkdir folder_1 folder_2 folder_3

จากตัวอย่างด้านบน ถ้าเราต้องสร้างหลายๆโฟลเดอร์พร้อมกันจะใช้เวลาเยอะ แต่เราจะเอา Brace Expension {..} เข้ามาช่วยในการเขียน เพื่อความสะดวกรวดเร็ว
Brace Expension ใช้เพื่อรันลำดับ สามารถใช้ได้ทั้งตัวเลขจำนวนเต็มและตัวอักษร สามารถนำไปประยุกต์ใช้ได้กับหลายๆคำสั่ง
วิธีการเขียนเราจะเขียนตัวเลขหรือตัวอักษรสองตัวในเครื่องหมายวงเล็บปีกกา { } ( Braces or Curly Brackets ) และจะคั่นด้วยจุดสองจุด เช่น
mkdir folder{1..3}

rmdir
rmdir ย่อมาจาก remove directory เป็นคำสั่งไว้ใช้ลบโฟลเดอร์ที่ไม่มีข้อมูลข้างใน โดยพิมพ์ rmdir ตามด้วยโฟลเดอร์ที่เราต้องการลบ

แต่ถ้าข้างในโฟลเดอร์นั้นมีไฟล์ต่างๆอยู่ ให้เรา
touch
touch เป็นคำสั่งที่เราใช้ในการสร้างไฟล์ touch file เราสามารถสร้างได้หลายๆไฟล์พร้อมกันโดยนำ Brace Expension เข้ามาช่วย

rm
rm ย่อมาจากคำว่า remove เป็นการลบไฟล์ rm file และสามารถลบได้หลายๆไฟล์พร้อมกัน

จากตัวอย่างด้านบนได้ลบไฟล์ happy.c และ score.py
ถ้าเราต้องการจะลบไฟล์ที่เป็นนามสกุล .csv ทุกไฟล์ ก็สามารถทำได้โดย rm *.csv

mv
mv ย่อมาจากคำว่า move ใช้ในการย้ายไฟล์และโฟลเดอร์และสามารถใช้ในการเปลี่ยนชื่อไฟล์และโฟลเดอร์ได้เช่นกัน
มาเริ่มกันที่เปลี่ยนชื่อไฟล์กันก่อน
ใช้ mv เพื่อเปลี่ยนชื่อไฟล์ mv old_name new_name


เปลี่ยนชื่อโฟลเดอร์ก็ทำแบบเดียวกันกับไฟล์ ในโฟลเดอร์ basic มีโฟลเดอร์ที่ชื่อว่า folder2 อยู่ แต่เราจะเปลี่ยนชื่อไปเป็น f2 โดย mv folder2 f2


ต่อมาจะเป็นใช้ mv เพื่อ ย้ายไฟล์…


จากรูปด้านบน ในโฟลเดอร์ b_1 มีไฟล์ hello.py แต่ต้องการย้ายไฟล์ไปยังโฟลเดอร์ b_2 และเปลี่ยนชื่อไฟล์เป็น hello_new.py
เราใช้คำสั่ง mv ตามด้วยชื่อไฟล์ที่ต้องการย้าย
less
ใช้สำหรับดูข้อมูลในไฟล์ทีละหน้า กรณีที่ข้อมูลในไฟล์มีหลายแถว
- กด space bar สำหรับการดูหน้าถัดไป
- กด b เพื่อย้อนกลับ
- กด shift + g เพื่อไปหน้าสุดท้าย กด g เพื่อไปหน้าแรก
- กด q เพื่อออกจากคำสั่ง less
less ตามด้วยชื่อไฟล์ที่ต้องการเปิด ในตัวอย่าง less dogs_new.txt


สามารถใส่ option N เพื่อให้แสดงเลขแถว less -N dogs_new.txt


head and tail
ใช้พรีวิวข้อมูลเวลาที่ข้อมูลในไฟล์เยอะ default จะแสดง 10 แถว
- head ใช้พรีวิวข้อมูล 10 แถวแรก
- tail ใช้พรีวิวข้อมูล 10 แถวสุดท้าย


เราสามารถให้แสดงน้อยกว่าหรือมากกว่า 10 แถวก็ได้ โดยใช้ option -n ตามด้วยตัวเลขจำนวนเต็มที่เราต้องการแสดง


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

จากรูปด้านบน เราใช้คำสั่ง cat เพื่อดูข้อมูลในไฟล์ coffee.txt และ chocolate.txt ตามลำดับ และ ใช้ cat ในการรวมทั้งสองไฟล์โดยข้อมูลของไฟล์ที่สองจะไปต่อท้ายข้อมูลไฟล์แรก
เราสามารถใส่ option -n เพื่อให้แสดงเลขแถวได้

แล้ว cat กับ less ต่างกันตรงไหน ? ก็ในเมื่อสามารถเรียกดูไฟล์ได้เหมือนๆกัน
| cat | less |
| ใช้เมื่อต้องดูข้อมูลทั้งหมดในไฟล์ที่ขนาดไม่ใหญ่มาก ถ้าเปิดไฟล์ที่มีข้อมูลขนาดใหญ่มันจะเลือนลงไปหน้าสุดท้าย | ใช้เมื่อต้องดูไฟล์ขนาดใหญ่ทีละหน้าๆ |
| ใช้เมื่อต้องการรวมไฟล์เข้าด้วยกัน | |
| ใช้เมื่อต้องการทำ redirection output |
grep
เป็นคำสั่งที่ใช้สำหรับการค้นหาข้อมูลที่อยู่ในไฟล์ เป็น case-sensitive หมายความว่า ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก มีผลกับการค้นหา แต่ถ้าเราอยากให้เป็น case-insensitive เราก็แค่ใส่ option -i เข้าไปหลังคำสั่ง grep
ตัวอย่างแรกค้นหาแบบ case-sensitive
รอบแรก ลองค้นหาชื่อสายพันธุ์สุนัข ที่มีคำว่า terrier แต่เราไม่ได้ผลลัพธ์กลับมา ลองอีกรอบหาเหมือนเดิมแต่เปลี่ยนเป็น Terrier


ถ้าเราไม่ชัวร์ว่าในไฟล์เก็บข้อมูลเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กให้ลองใช้ option -i เข้ามาช่วยในการค้นหาแบบ case-insensitive

เราสามารถนับว่า มีคำว่า “terrier” กี่คำที่เจอในไฟล์ สามารถใส่ option -c เพิ่ม นับจำนวนคำที่ match กับที่เราค้นหาในไฟล์ จากตัวอย่างด้านล่าง ในไฟล์ dogs_new.txt มีคำว่า terrier ด้วยกันทั้งหมด 20 คำ

ตัวอย่างต่อมา จะค้นหาชื่อสายพันธ์ุสุนัขที่มีคำว่า german หรือ bulldog แบบ case-insensitive
- grep -i -e ‘german’ -e ‘bulldog’ dogs_new.txt option -e คือ สามารถระบุรูปแบบต่างๆ เพื่อค้นหาได้ ใส่ -e หน้าคำที่เราต้องการค้นหา
- grep -Ei ‘german|bulldog’ dogs_new.txt option -E เป็นการเปิดให้สามารถใช้ regular expressions ได้ เราจะเห็นสัญลักษณ์ pipe ( | ) ในที่นี้มีความหมายว่า หรือ
- egrep -i ‘german|bulldog’ dogs_new.txt คล้ายคำสั่งก่อนหน้าแต่เราเปลี่ยนจาก grep -E เป็น egrep

เราสามารถใช้ grep กับ regexp ได้ด้วย เราจะค้นหาชื่อสายพันธุ์สุนัขแบบ case -insensitive ที่ขึ้นต้นด้วย (^) ตัว b กับ m และให้แสดงเลขแถวมาด้วย ดังตัวอย่างด้านล่าง

vim
vim เป็น โปรแกรมแก้ไข้ข้อความ ( text editor ) ตัวหนึ่งที่นิยมใช้กัน ภาพด้านล่างเป็นผลสำรวจของ Stack Overflow Developer Survey 2024 ซึ่ง Vim อยู่อันดับที่ 5

วิธีใช้งาน vim แบบเบื้องต้น ใน replit
เราใช้ touch สร้างไฟล์ coffee.txt ขึ้นมา และจะพิมพ์ข้อความลงในไฟล์โดยใช้ vim
ใช้ vim ต่อด้วยชื่อไฟล์ที่ต้องการแก้ไข พอเข้ามาใน vim ถ้าต้องการพิมพ์ข้อความให้กด i เพื่อเข้าสู่ insert mode (สังเกตว่ามีคำว่า insert อยู่ด้านล่าง) จากนั้นก็สามารถพิมพ์ข้อความลงไปได้


หลังจากพิมพ์ข้อความที่เราต้องการเสร็จ กด esc เพื่อออกจาก insert mode เมื่อเราต้องการบันทึกไฟล์และออกจาก vim ให้เราพิมพ์ :wq ความหมายก็คือ write (save) and quit


เรามาลองดูข้อความในไฟล์ที่เราใส่ข้อความไปด้วยคำสั่ง cat

ดูอีกตัวอย่างจะลองเขียนโค้ดภาษา C แล้วลองรัน
มาเริ่มกันที่ภาษา C เมื่อเขียนโค้ดเสร็จ ต้องใช้คำสั่ง gcc (the GNU compiler for the C Programming language) เพื่อคอมไพล์โค้ดภาษาซี หลังจากคอมไฟล์เสร็จจะได้ a.out


เรา execute ไฟล์ด้วยคำสั่ง ./a.out

sed
sed ย่อมาจาก Stream editor เป็นคำสั่งเพื่อประมวลผลหรือเปลี่ยนแปลงข้อความในไฟล์ทีละบรรทัดตามคำสั่งที่เรากำหนด
มาเริ่มกันที่รูปแบบการใช้ของ sed
sed ‘s/old_text/new_text/g’
- เราจะเขียนคำสั่ง sed และตามด้วยคำสั่งเพื่อให้เปลี่ยนแปลงข้อความ จะอยู่ในเครื่องหมาย single quote
- s ย่อมาจาก substitute คือ สั่งให้มีการแทนที่
- old_text หรือ pattern คือ รูปแบบของข้อความที่เราต้องการจะเปลี่ยน เรานิยมใช้ Regular Expression ( regex ) เพื่อ match pattern ข้อความ
- g คือ แทนที่ข้อความทั้งหมดในแต่ละบรรทัด
เรามีไฟล์ที่เป็น csv แต่เราอยากจะเปลี่ยนจากเครื่องหมาย comma ( , ) ทั้งหมดให้เป็นเครื่องหมาย pipe ( | ) ด้วยคำสั่ง sed ‘s/,/|/g’ employee.csv


ตัวอย่างต่อมา ต้องการจะซ่อนเบอร์ 4 ตัวสุดท้าย

จากรูปด้านบนเราจะใช้ regex เข้ามาช่วยในการค้นหา pattern [0-9]{4} หมายความว่า หาตัวเลขที่ติดกัน 4 ตัว และแทนด้วย xxxx
awk
คือ การอ่านไฟล์เข้ามาทีละบรรทัดและประมวลผล
awk -F ” ” ‘pattern { action }’ input_file
-F คือ option เป็น field separator ปกติจะเป็นช่องว่าง

จากตัวอย่างด้านบน ไฟล์ที่จะเอามาใช้คำสั่ง awk เป็นไฟล์ csv
- awk -F ” , ” ‘ { print $1 } ‘ employee_1.csv
หลัง option -F เราต้องระบุตัวคั่นคอลัมน์ว่าเป็นแบบไหนต่อมาเราจะสั่งคำสั่งในวงเล็บปีกกาที่อยู่ข้างใน single quotes อีกที เราสั่งให้แสดงเฉพาะคอลัมน์ที่ 1 ซึ่งก็คือ First Name ในการเรียกคอลัมน์เราจะใส่เครื่องหมาย $ ก่อนหน้าตัวเลข
ตัวอย่างต่อมาใช้คำสั่ง awk + regular expression
ผมมีไฟล์ customer.csv ต้องการค้นหาลูกค้าที่เป็นเพศชาย 10 คนแรก โดยใช้คำสั่ง awk กับ regular expression


จากตัวอย่างด้านบน
awk -F ” , ” ‘ tolower($3) ~/^male$/ {print $0} ‘ customer.csv | head
| awk -F “,” | กำหนดให้เครื่องหมาย comma เป็นตัวแบ่งข้อมูลในแต่ละคอลัมน์ เพราะไฟล์ที่เรานำมาใช้เป็น csv |
| tolower($3) | เปลี่ยนข้อมูลในคอลัมน์ที่ 3 ให้เป็นตัวพิมพ์เล็กทั้งหมดโดยใช้คำสั่ง tolower |
| ~/^male$/ | ค้นหาข้อมูลในคอลัมน์ที่ 3 ที่ match กับรูปแบบ ^ = ขึ้นต้นด้วย และ $ = ลงท้ายด้วย ถ้าใส่แต่ $ หลังคำว่า male ตัวเดียว ระบบจะแสดง Female ออกมาด้วย |
| {print $0} | ให้แสดงออกมา $0 หมายความว่า ทั้งแถวหรือ ทุกคอลัมน์ |
Redirection
redirection ใช้สำหรับการจัดการข้อมูล เช่น การเอาผลลัพธ์ไปเก็บในไฟล์ หรือ การอ่านข้อมูลจากไฟล์
Redirect output
เป็นการนำผลลัพธ์ไปเก็บในไฟล์ใหม่ นำข้อมูลจากไฟล์หนึ่งต่อกับอีกไฟล์ไฟล์ และ รวมหลายๆไฟล์เป็นไฟล์เดียว
สัญลักษณ์ของ Redirection
| > | การสร้างไฟล์ใหม่ |
| >> | การนำผลลัพธ์ไปต่อท้ายไฟล์ |
| < | การอ่านข้อมูลจากไฟล์และนำมาประมวลผล |
ตัวอย่างแรก นำผลลัพธ์ไปเก็บไว้ที่ไฟล์ใหม่ ls > fname.txt


จากตัวอย่างด้านบนรูปซ้ายมือ เราอยู่ในโฟลเดอร์ basic ที่เก็บไฟล์และโฟลเดอร์ไว้
เราใช้คำสั่ง ls เพื่อเรียกดูไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์ basic และ ทำการ redirect ( > ) นำผลลัพธ์ที่ได้ไปสร้างเป็นไฟล์ใหม่ที่ชื่อ fname.txt และ ใช้คำสั่ง cat เพื่อแสดงผลสิ่งที่อยู่ในไฟล์
ตัวอย่างต่อมา จะทำการเอา 2 ไฟล์มารวมเป็นไฟล์เดียว cat coffee.txt tea.txt > drinks_menu.txt

จากตัวอย่างด้านบน เอา ไฟล์ coffee.txt กับ tea.txt มารวมกันเป็นไฟล์ใหม่ชื่อ drinks_menu.txt เริ่มจากการทำ cat coffee.txt tea.txt เพื่อให้แสดงข้อมูลในไฟล์ทั้งสองไฟล์และทำการ redirect ( > ) ไปที่ drinks_menu.txt
ตัวอย่างสุดท้ายการเอาไฟล์หนึ่งไปต่อท้ายอีกไฟล์หนึ่ง cat chocolate.txt >> drinks_menu.txt

จากตัวอย่างด้านบน นำไฟล์ chocolate.txt ไปต่อท้าย ( >> ) ไฟล์ drinks_menu.txt
Redirect input
การอ่านข้อมูลจากไฟล์และนำมาประมวลผลด้วยคำสั่งต่างๆ
ตัวอย่างแรก จะทำการแปลงจากตัวอักษรในไฟล์ coffee.txt ที่เป็นตัวพิมพ์ใหญ่ ไปเป็น ตัวพิมพ์เล็ก โดยใช้คำสั่ง tr ย่อมาจาก translate

ตัวอย่างต่อมา เมื่อระบบเจอเครื่องหมายการทำ redirection จะอ่านเป็นคู่ๆก่อน คือ จะทำการแปลงตัวอักษรจากไฟล์ก่อน เมื่อแปลงเสร็จแล้วจะนำผลลัพธ์ไปเก็บในไฟล์ใหม่ ตัวอย่างนี้เราใช้ bat เพื่อเรียกดูข้อมูลในไฟล์แทน cat

คำสั่ง bat มีกรอบ เลขแถว และที่สำคัญมี syntax highlighting ส่วนตัวชอบ bat มากว่า ดูความแตกต่างในรูปด้านล่าง

pipe
pipe สัญลักษณ์ คือ | เป็นคำสั่งที่เอาผลลัพธ์จากคำสั่งแรกไปเป็น input ของคำสั่งต่อๆไป เราสามารถเขียนเชื่อมหลายๆคำสั่งได้นั่นเอง
cat dogs_new.txt | grep -i “american” | head -n 3 คำสั่งนี้ ใช้ cat ให้แสดงข้อมูลในไฟล์และหาชื่อสายพันธุ์สุนัขแบบ case – insensitive ที่มีชื่อ american ให้แสดงออกมา 3 แถวแรก

alias
ใช้ตั้งชื่อเล่นให้กับคำสั่งที่เราต้องการ เพื่อความสะดวกในการเรียกใช้งาน
ใช้คำสั่ง history เพื่อเรียกดูประวัติในการใช้คำสั่งทั้งหมด แต่เราสามารถใช้คำสั่ง alias h=history เท่านี้ก็สามารถก็แค่ตัว h ก็เรียกดูประวัติการใช้งานคำสั่งได้เลยโดยไม่ต้องพิมพ์ แต่ถ้าเราออกจาก Terminal แล้วเปิดขึ้นมาใหม่ alias จะหายไปต้องไปสร้าง alias ถาวร ใน bash_profile


วิธีการสร้างใช้ vim .bash_profile เพื่อเข้าไปสร้าง alias เสร็จแล้วกด source .bash_profile เพื่อเป็นการ execute คำสั่งที่อยู่ในไฟล์ หรือ ปิด Teminal แล้ว เปิดใหม่


tar and gzip
tar ย่อมาจาก Tape Archive ใช้ในการบีบอัดไฟล์หรือโฟลเดอร์ ทำให้ไฟล์หรือโฟลเดอร์มีขนาดเล็กลง ใช้พื้นที่ในการจัดเก็บน้อยลง
Archive Folder
tar -cvf alpha.tar alpha
เริ่มกันที่คำสั่ง tar ในโฟลเดอร์ demo2 มี โฟลเดอร์ย่อยๆที่ชื่อว่า alpha ต้องการทำ archive โดยจะเราใช้คำสั่ง tar ตามด้วยชื่อโฟลเดอร์ใหม่ และ ชื่อโฟลเดอร์ที่เรานำมาทำการ archive
มาอธิบาย option ที่ใช้ร่วมกับคำสั่ง tar
| c | สร้าง archive |
| v | แสดงว่ามีไฟล์หรือโฟลเดอร์ไหนบ้างที่ถูกเก็บเข้าไป บน Terminal |
| f | ระบุชื่อ archive |

Archive File
tar -cf y2021.tar y2021.csv
จะทำเหมือนกันกับโฟลเดอร์ จากตัวอย่างด้านล่าง ได้ทำการ archive ไฟล์ y2021.csv

Gzip
gzip [-k] folder/file.tar
option -k จะระบุหรือไม่ระบุก็ได้ แต่ ไม่ระบุไฟล์ .tar จะถูกลบทิ้งหลังจากใช้คำสั่ง gzip
option -h จะแสดงขนาดของไฟล์ให้อ่านได้ง่ายขึ้น เช่น KB, MB, GB ถ้าไม่ระบุจะแสดงเป็น bytes ซึ่งอ่านยาก

tar + gzip
tar -cvzf alpha.tar.gz alpha
จากตัวอย่างด้านบนทำ archive แล้วก็มาทำ gzip ต่อ ตัวอย่างนี้เขียนคำสั่งให้ทำทีเดียว เริ่มด้วยคำสั่ง tar เหมือนเดิม แต่จะมี option z เพิ่ม หมายความว่า เราจะใช้ gzip compress หลังจากที่คำสั่ง tar ทำงานเสร็จแล้ว

Extract from archive
tar -xf alpha.tar.gz
ยังคงใช้คำสั่ง tar เหมือนเดิม แต่จะเพิ่ม option -x เพื่อเป็นการ extract file ออกมาจากที่เราได้ archive
จากรูปด้านล่าง ย้ายไฟล์ไปยังโฟลเดอร์ b_1 ต่อมา change diretory ไปโฟลเดอร์ b_1 และทำการ extract



Leave a comment