🐧 คู่มือคำสั่ง Linux Terminal (ฉบับครอบคลุมและจัดหมวดหมู่)
คู่มือนี้รวบรวมคำสั่งใช้งาน Linux Terminal ที่สำคัญและถูกใช้งานบ่อยที่สุด ตั้งแต่พื้นฐานไปจนถึงระดับสูง โดยจัดหมวดหมู่อย่างเป็นระบบเพื่อให้อ่านง่าย ค้นหาสะดวก และเหมาะสำหรับการเก็บไว้ใช้งานบน Obsidian
📂 1. การจัดการไฟล์และโฟลเดอร์ (File & Directory Management)
ใช้สำหรับสร้าง, ลบ, ย้าย, คัดลอก และค้นหาไฟล์หรือโฟลเดอร์ต่าง ๆ
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
pwd | pwd | แสดงตำแหน่งโฟลเดอร์ปัจจุบันที่กำลังทำงานอยู่ (Print Working Directory) |
ls | ls -la | แสดงรายชื่อไฟล์และโฟลเดอร์ย่อย (-l = แสดงรายละเอียด, -a = แสดงไฟล์ซ่อน) |
cd | cd /path/to/folder | เปลี่ยนตำแหน่งโฟลเดอร์ปัจจุบัน (cd .. = ย้อนกลับ 1 ชั้น, cd ~ = ไปโฟลเดอร์ Home) |
mkdir | mkdir -p project/src | สร้างโฟลเดอร์ใหม่ (-p = สร้างโฟลเดอร์หลักที่จำเป็นไปด้วยพร้อมกัน) |
rmdir | rmdir empty_folder | ลบโฟลเดอร์ว่าง (ถ้ามีไฟล์ข้างในจะลบไม่ได้) |
touch | touch newfile.txt | สร้างไฟล์ว่างใหม่ หรืออัปเดตเวลาการแก้ไขล่าสุดของไฟล์ |
cp | cp -r source/ dest/ | คัดลอกไฟล์หรือโฟลเดอร์ (-r = คัดลอกทั้งโฟลเดอร์และเนื้อหาภายใน) |
mv | mv old.txt new.txt | ย้ายไฟล์/โฟลเดอร์ หรือใช้เปลี่ยนชื่อไฟล์ |
rm | rm -rf folder/ | ลบไฟล์หรือโฟลเดอร์อย่างถาวร (-r = ลบโฟลเดอร์, -f = บังคับลบโดยไม่ถามซ้ำ) |
ln | ln -s target link | สร้างทางลัด Link (Symbolic Link คล้าย Shortcut ใน Windows) |
find | find . -name "*.log" | ค้นหาไฟล์ตามเงื่อนไข (ตัวอย่าง: ค้นหาไฟล์นามสกุล .log ในโฟลเดอร์ปัจจุบัน) |
locate | locate filename | ค้นหาไฟล์อย่างรวดเร็วโดยดึงข้อมูลจากฐานข้อมูลของระบบ (ต้องรัน updatedb เพื่ออัปเดตข้อมูล) |
WARNING
คำสั่ง
rm -rfเป็นคำสั่งที่มีความเสี่ยงสูงมาก โปรดระมัดระวังก่อนกด Enter เสมอ โดยเฉพาะเมื่อรันด้วยสิทธิ์sudo
📄 2. การอ่านและการจัดการข้อความในไฟล์ (File Reading & Text Processing)
ใช้สำหรับเปิดอ่าน ค้นหาข้อความ และแก้ไขเนื้อหาในไฟล์ผ่าน Terminal
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
cat | cat file.txt | แสดงเนื้อหาทั้งหมดของไฟล์ในเทอร์มินัล |
less | less file.txt | เปิดอ่านไฟล์ขนาดใหญ่โดยแบ่งหน้าจอ สามารถใช้ลูกศรเลื่อนขึ้นลงได้ (กด q เพื่อออก) |
head | head -n 20 file.txt | แสดงเนื้อหาจากบรรทัดแรกเริ่มลงมา (ค่าเริ่มต้น 10 บรรทัด) |
tail | tail -n 20 -f error.log | แสดงเนื้อหาจากบรรทัดท้ายสุดขึ้นมา (-f = ติดตามการอัปเดตเนื้อหาไฟล์แบบ Real-time) |
grep | grep "error" sys.log | ค้นหาคำหรือข้อความที่กำหนดในไฟล์ |
awk | awk '{print $1}' file.txt | เครื่องมือวิเคราะห์และประมวลผลข้อความตามคอลัมน์ |
sed | sed 's/old/new/g' file.txt | ค้นหาและแทนที่คำในไฟล์แบบอัตโนมัติ (Stream Editor) |
wc | wc -l file.txt | นับจำนวนบรรทัด คำ และตัวอักษรในไฟล์ (-l = นับบรรทัด) |
diff | diff file1.txt file2.txt | เปรียบเทียบหาจุดที่แตกต่างระหว่างไฟล์สองไฟล์ |
echo | echo "hello" >> file.txt | แสดงข้อความ หรือเขียนข้อความลงไฟล์ (> เขียนทับ, >> เขียนต่อท้าย) |
nano | nano file.txt | ตัวแก้ไขข้อความพื้นฐาน ใช้งานง่ายในเทอร์มินัล |
vim / nvim | nvim file.txt | ตัวแก้ไขข้อความระดับสูง มีคีย์ลัดและฟังก์ชันหลากหลาย |
🔒 3. สิทธิ์การเข้าถึงและความปลอดภัย (Permissions & Security)
การจัดการสิทธิ์การอ่าน เขียน และรันไฟล์ (Read, Write, Execute)
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
sudo | sudo pacman -Syu | รันคำสั่งด้วยสิทธิ์ผู้ดูแลระบบ (Superuser Do) |
su | su username | สลับผู้ใช้งานในเซสชันปัจจุบัน |
chmod | chmod 755 script.sh | เปลี่ยนสิทธิ์การเข้าถึงไฟล์ (เช่น 755 = เจ้าของรันได้ คนอื่นอ่านและรันได้อย่างเดียว) |
chown | chown user:group file | เปลี่ยนเจ้าของไฟล์หรือกลุ่มที่เป็นเจ้าของไฟล์ |
whoami | whoami | แสดงชื่อผู้ใช้งานปัจจุบันของคุณ |
groups | groups username | แสดงกลุ่มทั้งหมดที่ผู้ใช้งานนั้นสังกัดอยู่ |
passwd | passwd | เปลี่ยนรหัสผ่านของผู้ใช้ปัจจุบัน |
💡 ความเข้าใจเบื้องต้นเรื่องสิทธิ์ (chmod)
r(Read) = 4w(Write) = 2x(Execute) = 1- ตัวเลขสามหลักใน
chmodหมายถึง:[เจ้าของไฟล์] [กลุ่มของไฟล์] [ผู้ใช้ทั่วไป]เช่น755แปลว่า เจ้าของทำได้ทุกอย่าง (4+2+1=7) กลุ่มและคนทั่วไปอ่านและรันได้อย่างเดียว (4+1=5)
⚙️ 4. การจัดการกระบวนการทำงานและทรัพยากร (Process & Resources)
ใช้ควบคุมโปรแกรมที่ทำงานอยู่เบื้องหลัง ตรวจสอบ RAM, CPU และความจุฮาร์ดดิสก์
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
ps | ps aux | แสดงกระบวนการ (Process) ที่กำลังรันอยู่ในขณะนี้ |
top | top | แสดงการทำงานของ CPU/RAM แบบ Real-time |
htop | htop | ตัวแสดงการใช้ทรัพยากรเวอร์ชันปรับปรุง สวยงาม และสามารถสั่งปิดโปรแกรมได้ง่าย |
kill | kill 1234 | ปิดโปรแกรมผ่านหมายเลข Process ID (PID) |
killall | killall firefox | ปิดโปรแกรมทุกตัวที่ทำงานภายใต้ชื่อนั้น ๆ |
pkill | pkill -f process_name | ค้นหาและปิดกระบวนการตามชื่อบางส่วน |
bg | bg | สั่งให้งานที่หยุดอยู่ไปทำงานต่อข้างหลัง (Background) |
fg | fg %1 | ดึงงานจาก Background กลับมาทำงานข้างหน้า (Foreground) |
jobs | jobs | แสดงงานทั้งหมดที่รันอยู่เบื้องหลังในเทอร์มินัลปัจจุบัน |
df | df -h | แสดงเนื้อที่ว่างและพื้นที่ใช้งานของฮาร์ดดิสก์แต่ละไดรฟ์ (-h = แสดงผลให้อ่านง่าย เช่น GB, MB) |
du | du -sh folder/ | แสดงขนาดพื้นที่ที่โฟลเดอร์นั้น ๆ ใช้งานจริงบนดิสก์ |
free | free -h | แสดงหน่วยความจำ (RAM & Swap) ที่ใช้งานและเหลืออยู่ของระบบ |
uptime | uptime | แสดงระยะเวลาที่เครื่องเปิดทำงานอยู่ จำนวนผู้ใช้ และภาระงานเฉลี่ย (Load Average) |
🌐 5. ระบบเครือข่ายและการโอนย้ายข้อมูล (Networking & File Transfer)
คำสั่งตรวจสอบสัญญานอินเทอร์เน็ต โอนย้ายไฟล์ และเชื่อมต่อเครื่องเซิร์ฟเวอร์ปลายทาง
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
ping | ping -c 4 google.com | ส่งข้อมูลทดสอบความพร้อมใช้งานและการตอบสนองของโฮสต์ (-c = กำหนดจำนวนครั้ง) |
ip | ip a หรือ ip route | แสดงข้อมูลการเชื่อมต่อเครือข่ายและการกำหนดค่าไอพีแอดเดรส (IP Address) |
netstat | netstat -tulnp | แสดงพอร์ตเครือข่ายและสถิติเชื่อมต่อ (ในรุ่นใหม่นิยมใช้คำสั่ง ss แทน) |
ss | ss -tulnp | ตรวจสอบพอร์ตที่กำลังเชื่อมต่อและรอการเชื่อมต่อ (Listening ports) |
curl | curl -I https://google.com | ส่งคำขอไปยังเว็บเซิร์ฟเวอร์เพื่อดูเนื้อหาหรือ HTTP Header |
wget | wget https://example.com/file.zip | ดาวน์โหลดไฟล์จากอินเทอร์เน็ตโดยตรงผ่านลิงก์ |
ssh | ssh user@192.168.1.50 | เชื่อมต่อเพื่อเข้าใช้งาน Terminal บนเครื่องรีโมตแบบปลอดภัย (Secure Shell) |
scp | scp file.txt user@host:/path | คัดลอกและโอนย้ายไฟล์ข้ามเครื่องเซิร์ฟเวอร์แบบปลอดภัย |
rsync | rsync -avz local/ remote:/path | ซิงค์ข้อมูลระหว่างโฟลเดอร์/เครื่องคอมพิวเตอร์อย่างรวดเร็ว (ส่งเฉพาะจุดต่าง) |
nslookup | nslookup google.com | ตรวจสอบข้อมูล DNS IP Address ของชื่อโดเมนเนม |
dig | dig google.com | ตรวจสอบและสืบค้นข้อมูล DNS อย่างละเอียด |
📦 6. การจัดการแพ็กเกจบน Omarchy (Package Management: Arch & AUR)
เนื่องจาก Omarchy พัฒนามาจาก Arch Linux จึงใช้ระบบจัดการแพ็กเกจของ Arch เป็นหลัก
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
pacman -S | sudo pacman -S git | ติดตั้งแพ็กเกจซอฟต์แวร์ใหม่จากฐานข้อมูลหลัก |
pacman -Syu | sudo pacman -Syu | อัปเกรดระบบปฏิบัติการและแอปพลิเคชันทั้งหมดในเครื่อง |
pacman -R | sudo pacman -R name | ลบแพ็กเกจออกจากเครื่อง (ใส่ -Rs เพื่อลบ dependency ที่ไม่ได้ใช้ด้วย) |
pacman -Ss | pacman -Ss docker | ค้นหาแพ็กเกจในคลังเก็บข้อมูลรีโมต |
pacman -Qs | pacman -Qs nodejs | ค้นหาแพ็กเกจที่ติดตั้งอยู่ในระบบแล้ว |
yay -S | yay -S google-chrome | ติดตั้งแพ็กเกจเสริมจากคลังโปรแกรมสาธารณะ AUR (Arch User Repository) |
yay -Sua | yay -Sua | อัปเกรดเฉพาะแพ็กเกจที่เป็น AUR ทั้งหมดในเครื่อง |
💻 7. ข้อมูลระบบและฮาร์ดแวร์ (System & Hardware Information)
ตรวจสอบข้อมูลสเปกเครื่อง ฮาร์ดแวร์ ไดรเวอร์ และข้อมูลเคอร์เนล
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
uname | uname -a | แสดงชื่อเคอร์เนล เวอร์ชัน และสถาปัตยกรรมระบบ (Kernel details) |
hostnamectl | hostnamectl | แสดงและตั้งค่าชื่อเครื่องคอมพิวเตอร์ (Hostname) และข้อมูลระบบพื้นฐาน |
lscpu | lscpu | แสดงรายละเอียดทั้งหมดของหน่วยประมวลผลกลาง (CPU) |
free -h | free -h | ตรวจสอบหน่วยความจำหลัก RAM และ Swap |
lsusb | lsusb | แสดงข้อมูลอุปกรณ์ที่เชื่อมต่อผ่านพอร์ต USB ทั้งหมด |
lspci | lspci | แสดงข้อมูลอุปกรณ์ที่ต่อผ่านช่อง PCI (การ์ดจอ, การ์ดเน็ตเวิร์ก) |
neofetch / fastfetch | fastfetch | แสดงข้อมูลสเปกเครื่องและโลโก้ระบบปฏิบัติการแบบสวยงามในเทอร์มินัล |
🗜️ 8. การบีบอัดและคลายไฟล์ (Compression & Archiving)
คำสั่งรวบรวมไฟล์และลดขนาดสำหรับการจัดส่งข้อมูล
| คำสั่ง | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
tar -czvf | tar -czvf backup.tar.gz folder/ | บีบอัดไฟล์ในโฟลเดอร์ให้เป็นไฟล์ .tar.gz |
tar -xzvf | tar -xzvf backup.tar.gz | แตกไฟล์หรือโฟลเดอร์ออกจากไฟล์ .tar.gz |
zip | zip -r archive.zip folder/ | บีบอัดโฟลเดอร์ให้เป็นรูปแบบ .zip |
unzip | unzip archive.zip | แตกไฟล์บีบอัดรูปแบบ .zip ออกมาใช้งาน |
gzip | gzip file.txt | บีบอัดไฟล์เดี่ยวเป็นไฟล์สกุล .gz (ไฟล์เดิมจะถูกลบ) |
gunzip | gunzip file.txt.gz | คลายการบีบอัดไฟล์ .gz กลับมา |
🔀 9. การรับส่งข้อมูลระหว่างคำสั่ง (Redirection & Pipelines)
ช่วยเชื่อมต่อผลลัพธ์จากคำสั่งหนึ่งไปใช้งานต่อยังอีกคำสั่งหนึ่งแบบต่อเนื่อง
| ตัวดำเนินการ | ตัวอย่างการใช้งาน | คำอธิบาย |
|---|---|---|
> | ls > files.txt | เขียนทับผลลัพธ์ของคำสั่งลงไปในไฟล์ปลายทาง (Overwrites file) |
>> | echo "Log entry" >> log.txt | เขียนต่อท้ายผลลัพธ์ของคำสั่งลงในไฟล์ปลายทาง (Appends to file) |
< | mysql -u db < db.sql | นำข้อมูลในไฟล์มาป้อนเป็น Input ให้กับคำสั่งแทนการพิมพ์ |
| | cat system.log | grep "ERR" | ท่อส่ง (Pipe) สำหรับนำผลลัพธ์ของคำสั่งซ้ายมือไปเป็น Input ของคำสั่งขวามือ |
⌨️ 10. คีย์ลัดที่ใช้บ่อยที่สุดใน Terminal (Essential Terminal Shortcuts)
ใช้เมื่อทำงานอยู่ภายในหน้าต่าง Terminal เพื่อช่วยเพิ่มความเร็วในการพิมพ์คำสั่งและควบคุมอินเทอร์เฟซ
Tab: พิมพ์ช่วยอัตโนมัติ (Auto-complete) สำหรับชื่อคำสั่ง, ชื่อไฟล์ และโฟลเดอร์ (กด 2 ครั้งเพื่อดูรายการที่เข้าข่ายทั้งหมด)Ctrl + C: สั่งหยุด/ยกเลิกคำสั่งหรือโปรแกรมที่กำลังรันอยู่ใน Terminal ปัจจุบันทันที (Abort)Ctrl + Z: พักคำสั่งที่กำลังรันอยู่ไว้เบื้องหลังชั่วคราว (Suspend/Pause) สามารถใช้คำสั่งfgดึงกลับมาทำงานต่อได้Ctrl + D: ออกจาก Terminal ปัจจุบัน หรือปิดเซสชันผู้ใช้ (คล้ายสั่งexit)Ctrl + L: ล้างหน้าจอเทอร์มินัลให้สะอาด (คล้ายสั่งclear)Ctrl + A: เลื่อนเคอร์เซอร์การพิมพ์ไปหน้าสุดของบรรทัดCtrl + E: เลื่อนเคอร์เซอร์การพิมพ์ไปหลังสุดของบรรทัดCtrl + R: เปิดโหมดค้นหาประวัติคำสั่งย้อนหลังที่คุณเคยพิมพ์ไปแล้ว (Reverse History Search)
TIP
หากต้องการดูคู่มือการใช้งานแบบละเอียดของคำสั่งใด ๆ บน Linux คุณสามารถพิมพ์
man <คำสั่ง>(ย่อมาจาก Manual) เพื่อเปิดอ่านคำอธิบายแบบดั้งเดิมของระบบได้ เช่น:man grepหรือman tar(กดqเพื่อปิดหน้านั้น)