🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Bash คืออะไร? ทำความเข้าใจพื้นฐานและเสน่ห์ของ Shell สำหรับมือใหม่ Linux

เวลาสร้างเว็บไซต์ เรามักจะต้องเจอกับ "จอสีดำ" หรือที่เรียกว่าเทอร์มินัล (CUI) เพื่อใช้จัดการเซิร์ฟเวอร์ สำหรับดีไซเนอร์หรือโค้ดเดอร์หลายคน อาจจะรู้สึกว่า "มันดูยากจัง..." หรือ "ถ้าเลี่ยงได้ก็อยากเลี่ยง..." ใช่ไหมครับ? แต่ถ้าคุณรู้จัก Bash ซึ่งเป็นโปรแกรมโต้ตอบที่ใช้บนจอสีดำนี้สักนิด ประสิทธิภาพในการทำงานของคุณจะเพิ่มขึ้นอย่างมาก และโลกแห่งการสร้างเว็บของคุณก็จะกว้างขึ้นทันที

ในบทความนี้ เราจะอธิบายตัวตนของ Bash และวิธีการใช้งานพื้นฐานด้วยภาษาที่เข้าใจง่าย เพื่อให้แม้แต่มือใหม่ด้าน Linux หรือการจัดการเซิร์ฟเวอร์ก็สามารถร้อง "อ๋อ!" ได้ เราได้เตรียมตัวอย่างมากมายที่สามารถคัดลอกไปใช้ได้ทันที เพื่อให้คุณได้สัมผัสประสบการณ์ "การทำงานได้จริง" ตั้งแต่การจัดการไฟล์ที่จำเป็น ไปจนถึงเทคนิคเบื้องต้นในการทำให้งานที่น่าเบื่อเป็นอัตโนมัติ มาเปลี่ยนความกลัวจอสีดำให้เป็นความตื่นเต้นในการได้อาวุธใหม่กันเถอะ!


ก่อนอื่น Shell คืออะไร? Bash คืออะไร?

ก่อนจะพูดถึง Bash เรามาทำความเข้าใจ "หัวหน้า" ของมันอย่าง "เชลล์" กันก่อน

เชลล์: "ล่าม" ที่เชื่อมต่อคุณกับระบบปฏิบัติการ

ในหัวใจของคอมพิวเตอร์มีโปรแกรมที่เรียกว่า เคอร์เนล (Kernel) ซึ่งทำหน้าที่พื้นฐานที่สุดของระบบปฏิบัติการ เช่น การจัดการฮาร์ดแวร์ ลองเปรียบเทียบเคอร์เนลเป็นพระราชาดูสิครับ เราไม่สามารถสั่งงานพระราชา (เคอร์เนล) ได้โดยตรง

และนี่คือตอนที่ เชลล์ (Shell) ปรากฏตัวขึ้น เชลล์เปรียบเสมือน "ล่าม" หรือ "ราชเลขา" ที่คอยแปลภาษาของเรา (คำสั่ง) ให้เป็นภาษาที่พระราชาเข้าใจได้ เมื่อเราพิมพ์คำสั่งบนคีย์บอร์ด เชลล์จะรับคำสั่งนั้นมาตีความ แล้วส่งต่อไปให้เคอร์เนลเพื่อดำเนินการตามคำสั่ง จอสีดำที่เราเห็นนั่นแหละครับ คือที่ที่เชลล์ทำงานอยู่

Bash: "ล่าม" ที่ได้รับความนิยมสูงสุด

เช่นเดียวกับล่ามที่มีหลายคน เชลล์ก็มีหลายประเภท (zsh, fish, csh เป็นต้น) ในบรรดาเชลล์ทั้งหมด Bash (Bourne-Again SHell) คือเชลล์ที่ถูกใช้งานเป็นมาตรฐานและแพร่หลายที่สุดใน Linux และ macOS หากไม่มีเหตุผลพิเศษอะไร คุณสามารถคิดได้เลยว่าเชลล์ที่คุณจะได้สัมผัสบนเซิร์ฟเวอร์ส่วนใหญ่คือ Bash นั่นหมายความว่า การเรียนรู้วิธีใช้ Bash ก็คือการเรียนรู้คำสั่งพื้นฐานของ Linux นั่นเอง


มาลองสัมผัสกันเลย! คำสั่งพื้นฐานของ Bash

สิบปากว่าไม่เท่าตาเห็น เรามาลองใช้คำสั่งพื้นฐานกันเลยดีกว่า เปิดโปรแกรม "Terminal.app" บน macOS หรือสภาพแวดล้อมเทอร์มินัลอย่าง WSL หรือ Git Bash บน Windows แล้วคัดลอกคำสั่งด้านล่างไปวางและกด Enter ได้เลย

pwd - ตรวจสอบตำแหน่งปัจจุบัน

pwd (Print Working Directory) คือคำสั่งที่บอกเราว่า "ตอนนี้เราอยู่ที่โฟลเดอร์ (ไดเรกทอรี) ไหน?" ถ้าหลงทางเมื่อไหร่ ให้พิมพ์คำสั่งนี้ก่อนเลย

$ pwd
/Users/yourname/Documents

ls - แสดงรายการไฟล์และโฟลเดอร์ที่อยู่ข้างใน

ls (List) ใช้แสดงรายการไฟล์และโฟลเดอร์ที่อยู่ในไดเรกทอรีปัจจุบัน

$ ls
ProjectA   ProjectB   memo.txt

การเพิ่มออปชัน -l จะทำให้เราเห็นข้อมูลที่ละเอียดขึ้น เช่น สิทธิ์การเข้าถึงไฟล์ (permission) และวันที่แก้ไขล่าสุด

$ ls -l
total 8
drwxr-xr-x  3 yourname  staff   96  7  5 10:00 ProjectA
drwxr-xr-x  5 yourname  staff  160  7  5 10:01 ProjectB
-rw-r--r--  1 yourname  staff  512  7  5 10:02 memo.txt

cd - ย้ายไปยังโฟลเดอร์อื่น

cd (Change Directory) คือคำสั่งสำหรับย้ายไปยังไดเรกทอรีอื่น เหมือนกับการเดินทางจากเมืองหนึ่งไปอีกเมืองหนึ่งในเกม RPG เลยครับ

$ cd ProjectA

การระบุ .. (จุดสองจุด) จะทำให้เราย้อนกลับไปยังไดเรกทอรีชั้นบนหนึ่งขั้น

$ cd ..

การสร้างและลบไฟล์และโฟลเดอร์

พื้นฐานของการใช้คำสั่งคือการสร้าง, ย้าย และลบไฟล์และโฟลเดอร์ ซึ่งทั้งหมดนี้สามารถทำได้ในพริบตาด้วย Bash

mkdir - สร้างโฟลเดอร์ใหม่

mkdir (Make Directory) ใช้สร้างโฟลเดอร์ใหม่ที่ว่างเปล่า

$ mkdir new-website

touch - สร้างไฟล์ใหม่ที่ว่างเปล่า

คำสั่ง touch สามารถสร้างไฟล์ที่ยังไม่มีเนื้อหาได้ เหมาะสำหรับการสร้างไฟล์ต้นแบบของ HTML หรือ CSS

$ touch index.html

echo และ > - เขียนข้อความลงในไฟล์

echo คือคำสั่งที่ใช้แสดงผลสตริงที่ระบุบนหน้าจอ และเมื่อใช้ร่วมกับสัญลักษณ์ > (redirection) เราสามารถเปลี่ยนปลายทางของผลลัพธ์จากหน้าจอเป็นไฟล์ เพื่อเขียนเนื้อหาลงไปได้

$ echo "<h1>Hello, Bash!</h1>" > index.html

ข้อควรระวัง: > จะเขียนทับไฟล์เดิม หากต้องการเพิ่มข้อความต่อท้ายไฟล์ ให้ใช้ >> แทน


cat - แสดงเนื้อหาของไฟล์

เราสามารถใช้คำสั่ง cat เพื่อแสดงเนื้อหาของไฟล์บนเทอร์มินัลได้ ลองมาดูเนื้อหาที่เราเพิ่งเขียนไปกัน

$ cat index.html
<h1>Hello, Bash!</h1>

rm - ลบไฟล์หรือโฟลเดอร์

rm (Remove) คือคำสั่งสำหรับลบไฟล์หรือโฟลเดอร์ คำสั่งนี้ทรงพลังมาก มันจะลบไฟล์ทันทีอย่างถาวรโดยไม่ผ่านถังขยะ และไม่สามารถกู้คืนได้ ก่อนใช้งาน ควรตรวจสอบด้วย pwd และ ls ให้แน่ใจเสมอว่าคุณกำลังจะลบสิ่งที่ถูกต้อง

$ rm index.html

หากต้องการลบโฟลเดอร์พร้อมกับเนื้อหาทั้งหมดข้างใน ต้องใช้ออปชัน -r (Recursive)

$ rm -r old-website

หัวใจของ Bash! การเชื่อมต่อคำสั่งด้วย Pipe

หนึ่งในฟีเจอร์ที่ทรงพลังที่สุดของ Bash คือ ไปป์ (Pipe) | นี่คือฟังก์ชันที่ใช้ "เชื่อมต่อ" ผลลัพธ์ของคำสั่งหนึ่งให้กลายเป็นอินพุตของคำสั่งถัดไป ลองนึกภาพสายพานในโรงงานที่ส่งต่อชิ้นงานไปเรื่อยๆ

ตัวอย่างเช่น หากคุณต้องการ "แสดงรายการไฟล์อย่างละเอียด (ls -l) แล้วจากนั้นกรองเฉพาะบรรทัดที่มีคำว่า 'index' (grep index)" คุณสามารถเชื่อมต่อคำสั่งได้ดังนี้:

$ ls -l | grep "index"
-rw-r--r--  1 yourname  staff    23  7  5 10:30 index.html
-rw-r--r--  1 yourname  staff  1024  7  5 10:31 index.php

เสน่ห์ของ Bash คือการที่เราสามารถรวมคำสั่งง่ายๆ เข้าด้วยกันเพื่อสร้างการประมวลผลที่ซับซ้อนได้ในบรรทัดเดียว


บทนำสู่ Bash Script เพื่อการทำงานอัตโนมัติ

การพิมพ์คำสั่งเดิมๆ ซ้ำๆ เป็นเรื่องน่าเบื่อใช่ไหมครับ? ใน럴 때에는 일련의 명령어를 파일에 저장해두고 한 번에 실행할 수 있습니다. 이것이 바로 Bash 스크ริ프트입니다.

ตัวอย่างเช่น สมมติว่าทุกครั้งที่เริ่มโปรเจกต์เว็บไซต์ใหม่ คุณต้องสร้างโครงสร้างโฟลเดอร์แบบเดิมๆ (css, js, images) และไฟล์ `index.html` เสมอ เรามาสร้างสคริปต์ชื่อ `create_project.sh` เพื่อทำให้งานนี้เป็นอัตโนมัติกัน

#!/bin/bash
# สร้างโฟลเดอร์โปรเจกต์ด้วยชื่อที่ระบุตอนรันสคริปต์
PROJECT_NAME=$1
mkdir $PROJECT_NAME
cd $PROJECT_NAME

# สร้างโฟลเดอร์ย่อยต่างๆ
mkdir css js images

# สร้างไฟล์ HTML และ CSS ที่ว่างเปล่า
touch index.html css/style.css

echo "Project '$PROJECT_NAME' created successfully!"

สร้างไฟล์ชื่อ `create_project.sh` ด้วยเนื้อหานี้ แล้วให้สิทธิ์ในการรัน (execute permission) ด้วยคำสั่ง `chmod +x`


$ chmod +x create_project.sh

หลังจากนั้น เพียงแค่รันคำสั่ง `./create_project.sh ชื่อโปรเจกต์` งานที่ซ้ำซากก็จะเสร็จสิ้นในพริบตา

$ ./create_project.sh my-new-dream-site
Project 'my-new-dream-site' created successfully!

สรุป

เยี่ยมมากครับ! ในครั้งนี้ เราได้เรียนรู้เกี่ยวกับแนวคิดพื้นฐานและวิธีใช้งานเชลล์ซึ่งเป็นตัวตนของจอสีดำ และ Bash ซึ่งเป็นตัวแทนที่โดดเด่นที่สุดของมัน แม้ในตอนแรกอาจจะดูไม่คุ้นเคย แต่แค่ได้ลองใช้คำสั่งบางส่วนที่แนะนำในวันนี้ คุณก็น่าจะสัมผัสได้ถึงความสะดวกและทรงพลังของมันแล้วใช่ไหมครับ

สำหรับ Web Creator แล้ว Bash สามารถเป็นอาวุธที่ทรงพลังได้ไม่แพ้เครื่องมือออกแบบหรือโปรแกรมเขียนโค้ดเลยทีเดียว ลองค่อยๆ เรียนรู้คำสั่งใหม่ๆ แล้วนำไปปรับใช้กับงานประจำวันของคุณดูนะครับ

สำหรับคนที่คิดว่า "แต่คอมพิวเตอร์ Windows ของฉันไม่มี Bash..." ไม่ต้องกังวลครับ ในบทความหน้า เราจะอธิบายวิธีการติดตั้ง "WSL (Windows Subsystem for Linux)" ซึ่งช่วยให้ใช้ Bash บน Windows ได้อย่างง่ายดาย พร้อมรูปภาพประกอบที่เข้าใจง่าย!

[ใช้บน Windows ได้ด้วย] ขั้นตอนการติดตั้ง Bash ด้วย WSL (พร้อมรูปภาพ)