🐧 คู่มือคำสั่ง Linux Terminal (ฉบับครอบคลุมและจัดหมวดหมู่)

คู่มือนี้รวบรวมคำสั่งใช้งาน Linux Terminal ที่สำคัญและถูกใช้งานบ่อยที่สุด ตั้งแต่พื้นฐานไปจนถึงระดับสูง โดยจัดหมวดหมู่อย่างเป็นระบบเพื่อให้อ่านง่าย ค้นหาสะดวก และเหมาะสำหรับการเก็บไว้ใช้งานบน Obsidian


📂 1. การจัดการไฟล์และโฟลเดอร์ (File & Directory Management)

ใช้สำหรับสร้าง, ลบ, ย้าย, คัดลอก และค้นหาไฟล์หรือโฟลเดอร์ต่าง ๆ

คำสั่งตัวอย่างการใช้งานคำอธิบาย
pwdpwdแสดงตำแหน่งโฟลเดอร์ปัจจุบันที่กำลังทำงานอยู่ (Print Working Directory)
lsls -laแสดงรายชื่อไฟล์และโฟลเดอร์ย่อย (-l = แสดงรายละเอียด, -a = แสดงไฟล์ซ่อน)
cdcd /path/to/folderเปลี่ยนตำแหน่งโฟลเดอร์ปัจจุบัน (cd .. = ย้อนกลับ 1 ชั้น, cd ~ = ไปโฟลเดอร์ Home)
mkdirmkdir -p project/srcสร้างโฟลเดอร์ใหม่ (-p = สร้างโฟลเดอร์หลักที่จำเป็นไปด้วยพร้อมกัน)
rmdirrmdir empty_folderลบโฟลเดอร์ว่าง (ถ้ามีไฟล์ข้างในจะลบไม่ได้)
touchtouch newfile.txtสร้างไฟล์ว่างใหม่ หรืออัปเดตเวลาการแก้ไขล่าสุดของไฟล์
cpcp -r source/ dest/คัดลอกไฟล์หรือโฟลเดอร์ (-r = คัดลอกทั้งโฟลเดอร์และเนื้อหาภายใน)
mvmv old.txt new.txtย้ายไฟล์/โฟลเดอร์ หรือใช้เปลี่ยนชื่อไฟล์
rmrm -rf folder/ลบไฟล์หรือโฟลเดอร์อย่างถาวร (-r = ลบโฟลเดอร์, -f = บังคับลบโดยไม่ถามซ้ำ)
lnln -s target linkสร้างทางลัด Link (Symbolic Link คล้าย Shortcut ใน Windows)
findfind . -name "*.log"ค้นหาไฟล์ตามเงื่อนไข (ตัวอย่าง: ค้นหาไฟล์นามสกุล .log ในโฟลเดอร์ปัจจุบัน)
locatelocate filenameค้นหาไฟล์อย่างรวดเร็วโดยดึงข้อมูลจากฐานข้อมูลของระบบ (ต้องรัน updatedb เพื่ออัปเดตข้อมูล)

WARNING

คำสั่ง rm -rf เป็นคำสั่งที่มีความเสี่ยงสูงมาก โปรดระมัดระวังก่อนกด Enter เสมอ โดยเฉพาะเมื่อรันด้วยสิทธิ์ sudo


📄 2. การอ่านและการจัดการข้อความในไฟล์ (File Reading & Text Processing)

ใช้สำหรับเปิดอ่าน ค้นหาข้อความ และแก้ไขเนื้อหาในไฟล์ผ่าน Terminal

คำสั่งตัวอย่างการใช้งานคำอธิบาย
catcat file.txtแสดงเนื้อหาทั้งหมดของไฟล์ในเทอร์มินัล
lessless file.txtเปิดอ่านไฟล์ขนาดใหญ่โดยแบ่งหน้าจอ สามารถใช้ลูกศรเลื่อนขึ้นลงได้ (กด q เพื่อออก)
headhead -n 20 file.txtแสดงเนื้อหาจากบรรทัดแรกเริ่มลงมา (ค่าเริ่มต้น 10 บรรทัด)
tailtail -n 20 -f error.logแสดงเนื้อหาจากบรรทัดท้ายสุดขึ้นมา (-f = ติดตามการอัปเดตเนื้อหาไฟล์แบบ Real-time)
grepgrep "error" sys.logค้นหาคำหรือข้อความที่กำหนดในไฟล์
awkawk '{print $1}' file.txtเครื่องมือวิเคราะห์และประมวลผลข้อความตามคอลัมน์
sedsed 's/old/new/g' file.txtค้นหาและแทนที่คำในไฟล์แบบอัตโนมัติ (Stream Editor)
wcwc -l file.txtนับจำนวนบรรทัด คำ และตัวอักษรในไฟล์ (-l = นับบรรทัด)
diffdiff file1.txt file2.txtเปรียบเทียบหาจุดที่แตกต่างระหว่างไฟล์สองไฟล์
echoecho "hello" >> file.txtแสดงข้อความ หรือเขียนข้อความลงไฟล์ (> เขียนทับ, >> เขียนต่อท้าย)
nanonano file.txtตัวแก้ไขข้อความพื้นฐาน ใช้งานง่ายในเทอร์มินัล
vim / nvimnvim file.txtตัวแก้ไขข้อความระดับสูง มีคีย์ลัดและฟังก์ชันหลากหลาย

🔒 3. สิทธิ์การเข้าถึงและความปลอดภัย (Permissions & Security)

การจัดการสิทธิ์การอ่าน เขียน และรันไฟล์ (Read, Write, Execute)

คำสั่งตัวอย่างการใช้งานคำอธิบาย
sudosudo pacman -Syuรันคำสั่งด้วยสิทธิ์ผู้ดูแลระบบ (Superuser Do)
susu usernameสลับผู้ใช้งานในเซสชันปัจจุบัน
chmodchmod 755 script.shเปลี่ยนสิทธิ์การเข้าถึงไฟล์ (เช่น 755 = เจ้าของรันได้ คนอื่นอ่านและรันได้อย่างเดียว)
chownchown user:group fileเปลี่ยนเจ้าของไฟล์หรือกลุ่มที่เป็นเจ้าของไฟล์
whoamiwhoamiแสดงชื่อผู้ใช้งานปัจจุบันของคุณ
groupsgroups usernameแสดงกลุ่มทั้งหมดที่ผู้ใช้งานนั้นสังกัดอยู่
passwdpasswdเปลี่ยนรหัสผ่านของผู้ใช้ปัจจุบัน

💡 ความเข้าใจเบื้องต้นเรื่องสิทธิ์ (chmod)

  • r (Read) = 4
  • w (Write) = 2
  • x (Execute) = 1
  • ตัวเลขสามหลักใน chmod หมายถึง: [เจ้าของไฟล์] [กลุ่มของไฟล์] [ผู้ใช้ทั่วไป] เช่น 755 แปลว่า เจ้าของทำได้ทุกอย่าง (4+2+1=7) กลุ่มและคนทั่วไปอ่านและรันได้อย่างเดียว (4+1=5)

⚙️ 4. การจัดการกระบวนการทำงานและทรัพยากร (Process & Resources)

ใช้ควบคุมโปรแกรมที่ทำงานอยู่เบื้องหลัง ตรวจสอบ RAM, CPU และความจุฮาร์ดดิสก์

คำสั่งตัวอย่างการใช้งานคำอธิบาย
psps auxแสดงกระบวนการ (Process) ที่กำลังรันอยู่ในขณะนี้
toptopแสดงการทำงานของ CPU/RAM แบบ Real-time
htophtopตัวแสดงการใช้ทรัพยากรเวอร์ชันปรับปรุง สวยงาม และสามารถสั่งปิดโปรแกรมได้ง่าย
killkill 1234ปิดโปรแกรมผ่านหมายเลข Process ID (PID)
killallkillall firefoxปิดโปรแกรมทุกตัวที่ทำงานภายใต้ชื่อนั้น ๆ
pkillpkill -f process_nameค้นหาและปิดกระบวนการตามชื่อบางส่วน
bgbgสั่งให้งานที่หยุดอยู่ไปทำงานต่อข้างหลัง (Background)
fgfg %1ดึงงานจาก Background กลับมาทำงานข้างหน้า (Foreground)
jobsjobsแสดงงานทั้งหมดที่รันอยู่เบื้องหลังในเทอร์มินัลปัจจุบัน
dfdf -hแสดงเนื้อที่ว่างและพื้นที่ใช้งานของฮาร์ดดิสก์แต่ละไดรฟ์ (-h = แสดงผลให้อ่านง่าย เช่น GB, MB)
dudu -sh folder/แสดงขนาดพื้นที่ที่โฟลเดอร์นั้น ๆ ใช้งานจริงบนดิสก์
freefree -hแสดงหน่วยความจำ (RAM & Swap) ที่ใช้งานและเหลืออยู่ของระบบ
uptimeuptimeแสดงระยะเวลาที่เครื่องเปิดทำงานอยู่ จำนวนผู้ใช้ และภาระงานเฉลี่ย (Load Average)

🌐 5. ระบบเครือข่ายและการโอนย้ายข้อมูล (Networking & File Transfer)

คำสั่งตรวจสอบสัญญานอินเทอร์เน็ต โอนย้ายไฟล์ และเชื่อมต่อเครื่องเซิร์ฟเวอร์ปลายทาง

คำสั่งตัวอย่างการใช้งานคำอธิบาย
pingping -c 4 google.comส่งข้อมูลทดสอบความพร้อมใช้งานและการตอบสนองของโฮสต์ (-c = กำหนดจำนวนครั้ง)
ipip a หรือ ip routeแสดงข้อมูลการเชื่อมต่อเครือข่ายและการกำหนดค่าไอพีแอดเดรส (IP Address)
netstatnetstat -tulnpแสดงพอร์ตเครือข่ายและสถิติเชื่อมต่อ (ในรุ่นใหม่นิยมใช้คำสั่ง ss แทน)
ssss -tulnpตรวจสอบพอร์ตที่กำลังเชื่อมต่อและรอการเชื่อมต่อ (Listening ports)
curlcurl -I https://google.comส่งคำขอไปยังเว็บเซิร์ฟเวอร์เพื่อดูเนื้อหาหรือ HTTP Header
wgetwget https://example.com/file.zipดาวน์โหลดไฟล์จากอินเทอร์เน็ตโดยตรงผ่านลิงก์
sshssh user@192.168.1.50เชื่อมต่อเพื่อเข้าใช้งาน Terminal บนเครื่องรีโมตแบบปลอดภัย (Secure Shell)
scpscp file.txt user@host:/pathคัดลอกและโอนย้ายไฟล์ข้ามเครื่องเซิร์ฟเวอร์แบบปลอดภัย
rsyncrsync -avz local/ remote:/pathซิงค์ข้อมูลระหว่างโฟลเดอร์/เครื่องคอมพิวเตอร์อย่างรวดเร็ว (ส่งเฉพาะจุดต่าง)
nslookupnslookup google.comตรวจสอบข้อมูล DNS IP Address ของชื่อโดเมนเนม
digdig google.comตรวจสอบและสืบค้นข้อมูล DNS อย่างละเอียด

📦 6. การจัดการแพ็กเกจบน Omarchy (Package Management: Arch & AUR)

เนื่องจาก Omarchy พัฒนามาจาก Arch Linux จึงใช้ระบบจัดการแพ็กเกจของ Arch เป็นหลัก

คำสั่งตัวอย่างการใช้งานคำอธิบาย
pacman -Ssudo pacman -S gitติดตั้งแพ็กเกจซอฟต์แวร์ใหม่จากฐานข้อมูลหลัก
pacman -Syusudo pacman -Syuอัปเกรดระบบปฏิบัติการและแอปพลิเคชันทั้งหมดในเครื่อง
pacman -Rsudo pacman -R nameลบแพ็กเกจออกจากเครื่อง (ใส่ -Rs เพื่อลบ dependency ที่ไม่ได้ใช้ด้วย)
pacman -Sspacman -Ss dockerค้นหาแพ็กเกจในคลังเก็บข้อมูลรีโมต
pacman -Qspacman -Qs nodejsค้นหาแพ็กเกจที่ติดตั้งอยู่ในระบบแล้ว
yay -Syay -S google-chromeติดตั้งแพ็กเกจเสริมจากคลังโปรแกรมสาธารณะ AUR (Arch User Repository)
yay -Suayay -Suaอัปเกรดเฉพาะแพ็กเกจที่เป็น AUR ทั้งหมดในเครื่อง

💻 7. ข้อมูลระบบและฮาร์ดแวร์ (System & Hardware Information)

ตรวจสอบข้อมูลสเปกเครื่อง ฮาร์ดแวร์ ไดรเวอร์ และข้อมูลเคอร์เนล

คำสั่งตัวอย่างการใช้งานคำอธิบาย
unameuname -aแสดงชื่อเคอร์เนล เวอร์ชัน และสถาปัตยกรรมระบบ (Kernel details)
hostnamectlhostnamectlแสดงและตั้งค่าชื่อเครื่องคอมพิวเตอร์ (Hostname) และข้อมูลระบบพื้นฐาน
lscpulscpuแสดงรายละเอียดทั้งหมดของหน่วยประมวลผลกลาง (CPU)
free -hfree -hตรวจสอบหน่วยความจำหลัก RAM และ Swap
lsusblsusbแสดงข้อมูลอุปกรณ์ที่เชื่อมต่อผ่านพอร์ต USB ทั้งหมด
lspcilspciแสดงข้อมูลอุปกรณ์ที่ต่อผ่านช่อง PCI (การ์ดจอ, การ์ดเน็ตเวิร์ก)
neofetch / fastfetchfastfetchแสดงข้อมูลสเปกเครื่องและโลโก้ระบบปฏิบัติการแบบสวยงามในเทอร์มินัล

🗜️ 8. การบีบอัดและคลายไฟล์ (Compression & Archiving)

คำสั่งรวบรวมไฟล์และลดขนาดสำหรับการจัดส่งข้อมูล

คำสั่งตัวอย่างการใช้งานคำอธิบาย
tar -czvftar -czvf backup.tar.gz folder/บีบอัดไฟล์ในโฟลเดอร์ให้เป็นไฟล์ .tar.gz
tar -xzvftar -xzvf backup.tar.gzแตกไฟล์หรือโฟลเดอร์ออกจากไฟล์ .tar.gz
zipzip -r archive.zip folder/บีบอัดโฟลเดอร์ให้เป็นรูปแบบ .zip
unzipunzip archive.zipแตกไฟล์บีบอัดรูปแบบ .zip ออกมาใช้งาน
gzipgzip file.txtบีบอัดไฟล์เดี่ยวเป็นไฟล์สกุล .gz (ไฟล์เดิมจะถูกลบ)
gunzipgunzip 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 เพื่อปิดหน้านั้น)