ข้อมูลเหล่านี้ถูกสรุปมาจากแหล่งข้อมูลที่กล่าวถึงคำสั่ง Linux และเครื่องมือสำคัญที่นักพัฒนาควรทราบ โดยมีวัตถุประสงค์เพื่อให้ผู้ที่ไม่มีพื้นฐานด้านนี้สามารถเข้าใจได้อย่างง่ายดาย
ส่วนที่ 1: เครื่องมือค้นหาและจัดการไฟล์ (File Searching and Navigation)
เครื่องมือเหล่านี้ช่วยให้คุณค้นหาเนื้อหาภายในไฟล์ ค้นหาไฟล์ตามชื่อ หรือดูโครงสร้างของไดเรกทอรีได้อย่างรวดเร็ว
| ลำดับ | คำสั่ง/เครื่องมือ | หน้าที่และคำอธิบายสำหรับผู้เริ่มต้น | ตัวอย่าง/รายละเอียดสำคัญที่พบในแหล่งข้อมูล |
|---|---|---|---|
| 1 | rg (rip grep) | เป็นเครื่องมือค้นหาข้อความภายในเนื้อหาของไฟล์ (คล้ายกับฟังก์ชัน “Find” ที่มีประสิทธิภาพสูง) | ใช้ค้นหาคำที่ต้องการแบบเฉพาะเจาะจง เช่น การค้นหาคำว่า “off” จะไม่รวมคำที่มี “off” เป็นส่วนหนึ่งอย่างคำว่า “authors” |
| 2 | rg (rip grep) | มีประสิทธิภาพในการค้นหาทั่วทั้งไดเรกทอรีแม่ (Parent directory) และไดเรกทอรีย่อยทั้งหมด | ตัวอย่าง: หากต้องการจำกัดการค้นหาแค่ในโปรเจกต์ go jin พบว่ามีคำว่า “off” อยู่สองครั้งใน change log และอีกสองครั้งในไฟล์ off.go |
| 3 | tree | เป็นคำสั่งที่แสดงโครงสร้างไดเรกทอรีทั้งหมดในรูปแบบแผนผังต้นไม้ | ช่วยให้เห็นภาพรวมว่ามีโฟลเดอร์ย่อยอะไรบ้างภายใต้โฟลเดอร์หลัก |
| 4 | tree | สามารถจำกัดความลึกของการแสดงผลโครงสร้างไดเรกทอรีได้ | ตัวอย่าง: ใช้แฟล็ก -L 3 เพื่อแสดงผลความลึกเพียงสามระดับของไดเรกทอรีย่อยเท่านั้น |
| 5 | fd (Find replacement) | เป็นเครื่องมือทางเลือกที่ง่ายและเร็วกว่าคำสั่ง find แบบดั้งเดิม |
เหมาะสมกับความต้องการส่วนใหญ่ เนื่องจากใช้งานง่ายและทำงานได้รวดเร็ว |
| 6 | fd | ทำหน้าที่ค้นหาโดยใช้ชื่อไฟล์และพาธ (File name and path) | ความแตกต่าง: ต่างจาก rip grep ที่ค้นหาเนื้อหา แต่ fd ค้นหาชื่อของไฟล์ |
| 7 | fuzzyfinder (FZF) | เป็นเครื่องมือที่เปลี่ยนรายการ (list) ใด ๆ ให้กลายเป็นตัวกรองแบบโต้ตอบ (interactive filter) ที่สามารถค้นหาได้ | ตัวอย่าง: หากคุณมีรายการไฟล์ยาว ๆ สามารถใช้ FZF เพื่อค้นหาไฟล์ที่ชื่อว่า go.mod ได้ทันที |
| 8 | bat | ใช้สำหรับแสดงผลไฟล์ (render files) ภายในเทอร์มินัลโดยตรง | ข้อดี: เป็นที่นิยมเหนือคำสั่ง cat เพราะแสดงผลด้วยการไฮไลต์ไวยากรณ์ (full syntax highlighting) และมีหมายเลขบรรทัดกำกับ |
| 9 | eza | เป็นเวอร์ชันที่ทันสมัยของคำสั่ง ls (List files) |
มีคุณสมบัติเพิ่มเติมและดีฟอลต์ (defaults) ที่ถูกปรับปรุงให้ดีขึ้น |
| 10 | eza -L | เป็นแฟล็กที่ใช้แสดงรายละเอียดรายการไฟล์/โฟลเดอร์ที่คล้ายกับการใช้คำสั่ง ls แบบละเอียด |
โดยทั่วไปแล้ว eza จะแสดงรายการออกมาตามดีฟอลต์ แต่สามารถเพิ่ม -L เพื่อดูรายละเอียดเพิ่มเติมได้ |
| 11 | eza –icons | เป็นแฟล็กที่ใช้เพื่อแสดงไอคอนกำกับไฟล์และโฟลเดอร์ | ช่วยให้การมองเห็นในเทอร์มินัลมีความสวยงามและแยกแยะประเภทไฟล์ได้ง่ายขึ้น |
| 12 | eza –tree | สามารถทำหน้าที่เหมือนคำสั่ง tree คือแสดงโครงสร้างไดเรกทอรีทั้งหมด |
ข้อดี: แสดงผลโครงสร้างด้วยสีสันที่สวยงาม (with color) |
| 13 | eza –tree -L 3 | สามารถจำกัดการแสดงผลโครงสร้างให้มีความลึกตามที่กำหนด | ตัวอย่าง: แสดงผลโครงสร้างที่ความลึกเพียงสามระดับ |
| 14 | zoxside | เป็นเครื่องมือที่ช่วยให้การนำทางไปยังไดเรกทอรีต่าง ๆ เร็วขึ้น | ตัวอย่าง: แทนที่จะพิมพ์คำสั่งยาว ๆ เช่น cd into repos into Rust into alocrit สามารถพิมพ์แค่ Z alocring เพื่อไปยังไดเรกทอรีนั้นโดยตรง |
ส่วนที่ 2: การจัดการระบบ เครือข่าย และความปลอดภัย (System, Network, and Security Management)
เครื่องมือเหล่านี้สำคัญในการตรวจสอบสถานะเครือข่าย จัดการกระบวนการต่าง ๆ และช่วยในการดีบัก (debugging) ปัญหาด้านการเชื่อมต่อ
| ลำดับ | คำสั่ง/เครื่องมือ | หน้าที่และคำอธิบายสำหรับผู้เริ่มต้น | ตัวอย่าง/รายละเอียดสำคัญที่พบในแหล่งข้อมูล |
|---|---|---|---|
| 15 | OpenVPN | ใช้เพื่อสร้างอุโมงค์เข้ารหัส (encrypted tunnels) สำหรับการส่งข้อมูล | ข้อมูลสามารถเคลื่อนย้ายระหว่างอุปกรณ์และเครือข่ายบนอินเทอร์เน็ตได้อย่างปลอดภัย |
| 16 | OpenVPN | ช่วยในการเข้าถึงเครือข่ายส่วนตัวอย่างปลอดภัย (securely access private targets) | ตัวอย่าง: ใช้เพื่อเชื่อมต่อกับเครือข่ายของ Try Hackme หรือโครงสร้างพื้นฐานโค้ดที่เป็นกรรมสิทธิ์ (proprietary code infrastructure) หรือฐานข้อมูล |
| 17 | mosh | ใช้สำหรับเทอร์มินัลระยะไกล (remote terminals) | ข้อดีเหนือ SSH: สามารถรักษาเซสชันให้คงอยู่ได้แม้ในเครือข่ายที่ไม่เสถียร หรือเมื่อ Wi-Fi หลุด |
| 18 | fast fetch | เป็นคำสั่งที่แสดงรายละเอียดภายในระบบทั้งหมด (system internals) | เป็นเครื่องมือที่สนุกและช่วยให้เห็นข้อมูลเชิงลึกเกี่ยวกับคอมพิวเตอร์ของคุณ |
| 19 | systemctl | อนุญาตให้จัดการบริการ (service management) ต่าง ๆ ของระบบ | สามารถสั่งเริ่ม (start), หยุด (stop), รีสตาร์ท (restart) และตรวจสอบสถานะ (check status) ของบริการได้ |
| 20 | systemctl | จุดเด่น: สามารถดำเนินการจัดการบริการเหล่านี้ได้โดยไม่จำเป็นต้องใช้สิทธิ์รูท (root) หรือคำสั่ง sudo |
|
| 21 | lsof (List Open Files) | ใช้เพื่อดูว่ามีอะไรกำลังทำงานอยู่และทำงานอยู่ที่ไหน | ใน Linux/Unix ทุกสิ่งรวมถึงซ็อกเก็ตเครือข่าย (network sockets) จะถือว่าเป็นไฟล์ |
| 22 | lsof | สามารถใช้เพื่อตรวจสอบซ็อกเก็ตอินเทอร์เน็ตที่กำลังอยู่ในสถานะ listen (รอการเชื่อมต่อ) |
ตัวอย่าง: ค้นหาว่ามีบริการใดกำลังทำงานบนพอร์ต 8099 บ้าง |
| 23 | lsof/kill | เมื่อพบกระบวนการที่รันอยู่และทราบ Process ID (PID) | ตัวอย่าง: สามารถใช้คำสั่ง kill พร้อมกับ PID (เช่น kill 231347) เพื่อหยุดบริการนั้นทันที |
| 24 | ss (Socket Statistics) | แสดงสถิติซ็อกเก็ตทั้งหมดของระบบ (systemwide view) | มีประโยชน์ในการตรวจสอบว่าพอร์ตใดถูกใช้งานอยู่ หรือเพื่อตรวจสอบความปลอดภัยว่ามีพอร์ตใดถูกเปิดเผย (exposed) บ้าง |
| 25 | ss | สามารถใช้แฟล็ก -L เพื่อจำกัดการแสดงผลให้เห็นเฉพาะซ็อกเก็ตที่อยู่ในสถานะ listen เท่านั้น |
|
| 26 | procs | เป็นทางเลือกที่อ่านง่ายและจัดระเบียบดีกว่าคำสั่ง ps หรือ ps aux ที่ใช้ตรวจสอบกระบวนการ (processes) |
ข้อดี: มีการจัดสี (color) และการจัดระเบียบที่ดีขึ้นมาก |
| 27 | procs | สามารถกำหนดให้จัดเรียงผลลัพธ์ตามการใช้งาน CPU ได้ | |
| 28 | watch | ใช้สำหรับรันคำสั่งซ้ำ ๆ ในช่วงเวลาที่กำหนด | ตัวอย่าง: สามารถใช้ watch เพื่อดูผลลัพธ์ของคำสั่ง ss และให้มันรีเฟรชหน้าจอทุกครึ่งชั่วโมง เพื่อสังเกตการเปลี่ยนแปลง |
| 29 | ip -A | เป็นคำสั่งที่แสดงอินเทอร์เฟซ (interfaces) และที่อยู่ (addresses) ของเครือข่าย | เป็นส่วนสำคัญในการทำความเข้าใจการกำหนดค่าเครือข่าย |
| 30 | ip -R | เป็นคำสั่งที่แสดงเส้นทาง (routes) ของเครือข่าย | |
| 31 | dig | ใช้สำหรับสอบถามบันทึก DNS (DNS records) ทั้งหมด | มีความสำคัญในการแก้ไขปัญหา (troubleshoot) การหยุดชะงักของ DNS |
| 32 | dig | สามารถใช้แฟล็ก plus short เพื่อแสดงเฉพาะข้อมูลที่จำเป็นโดยไม่ต้องมีรายละเอียดทั้งหมด |
ตัวอย่าง: dig github.com +short จะแสดงผลลัพธ์ที่สั้นและกระชับ |
| 33 | mtr (My Trace Route) | รวมฟังก์ชันการทำงานของ ping และ trace route เข้าด้วยกัน |
ข้อดี: สามารถดูการสูญหายของแพ็คเก็ต (packet loss) และความหน่วงเวลา (latency) แบบเรียลไทม์ |
| 34 | ncdu | เป็นเครื่องมือสำรวจการใช้งานดิสก์แบบโต้ตอบ (interactive disc usage explorer) | ช่วยให้ทราบว่าทำไมไดรฟ์ถึงเต็ม และสามารถเข้าไปดูการใช้งานในไดเรกทอรีย่อยแต่ละอันได้ |
ส่วนที่ 3: เครื่องมือสำหรับนักพัฒนาและการจัดการโค้ด (Development and Code Management)
เครื่องมือเหล่านี้ใช้สำหรับจัดการ JSON, เรียกใช้ HTTP, และตรวจสอบสคริปต์ รวมถึงการวิเคราะห์ประสิทธิภาพของระบบ
| ลำดับ | คำสั่ง/เครื่องมือ | หน้าที่และคำอธิบายสำหรับผู้เริ่มต้น | ตัวอย่าง/รายละเอียดสำคัญที่พบในแหล่งข้อมูล |
|---|---|---|---|
| 35 | curl | เป็นไคลเอนต์ HTTP ที่รวดเร็ว ใช้ในเทอร์มินัล | ใช้สำหรับส่งคำขอ (request) ไปยัง URL ต่าง ๆ |
| 36 | curl -s | แฟล็ก -s ใช้เพื่อทำให้การแสดงผลเงียบ (silent) ซึ่งส่งผลให้เอาต์พุตที่สะอาดตา |
|
| 37 | curl | สามารถรวมส่วนหัว (headers) เข้าไปด้วย | มีประโยชน์ในการดีบักสถานะโค้ด (status codes), ประเภทเนื้อหา (content types) หรือการเปลี่ยนเส้นทาง (redirects) |
| 38 | jq | ใช้สำหรับดึงข้อมูล (extract fields) ที่คุณสนใจจากไฟล์ JSON ที่รกหรือไม่เป็นระเบียบ | ช่วยลดความจำเป็นในการเขียนสคริปต์หรือเปิดเครื่องมือภายนอก เช่น Postman |
| 39 | jq | มักจะถูกใช้โดยการส่งเอาต์พุตจาก curl ผ่านไปป์ (pipe) ไปยัง jq |
ตัวอย่าง: สามารถใช้เพื่อค้นหาชื่อเต็มหรือจำนวน Stargazer's count ในคลังข้อมูล Git (เช่น 87,262 ดวงสำหรับ Genjonic) |
| 40 | shell check | ใช้สำหรับตรวจสอบสคริปต์ deploy ที่คุณเขียนขึ้นมา |
ช่วยป้องกันการปล่อยสคริปต์ที่ใช้งานไม่ได้ (broken deploy script) |
| 41 | shell check | สามารถตรวจจับตัวแปรที่ไม่ได้ใช้งาน (unused var) ภายในสคริปต์ได้ | ตัวอย่าง: หากตรวจสอบแล้วไม่มีผลลัพธ์ใด ๆ แสดงว่าสคริปต์นั้นสะอาดและปลอดภัย |
| 42 | Perf | ใช้เพื่อดูสถิติประสิทธิภาพการทำงาน (performance statistics) ของระบบ | คำสั่งย่อยที่ใช้คือ Perf stat |
| 43 | Perf stat | แสดงข้อมูลสถิติที่สำคัญ | ข้อมูลที่แสดงรวมถึง CPU ที่ถูกใช้งาน, คำสั่งต่อรอบ (instructions per cycle) และค่ากิกะเฮิรตซ์ (gigahertz) |
ส่วนที่ 4: การจัดการคอนเทนเนอร์และเทอร์มินัล (Container and Terminal Management)
เครื่องมือเหล่านี้ช่วยให้การทำงานกับ Docker และการจัดการหลายหน้าต่างในเทอร์มินัลมีประสิทธิภาพมากขึ้น
| ลำดับ | คำสั่ง/เครื่องมือ | หน้าที่และคำอธิบายสำหรับผู้เริ่มต้น | ตัวอย่าง/รายละเอียดสำคัญที่พบในแหล่งข้อมูล |
|---|---|---|---|
| 44 | docker compose | ใช้จัดการแอปพลิเคชันที่มีหลายคอนเทนเนอร์ | ช่วยให้การจัดการ Dependencies (เช่น Redis และ Postgress) สามารถทำซ้ำได้และเรียกใช้ในเครื่องของคุณได้ด้วยคำสั่งเดียว |
| 45 | docker compose | สามารถสั่งรันคอนเทนเนอร์ในโหมด detached mode (ทำงานเบื้องหลัง) |
|
| 46 | docker compose ps | ใช้สำหรับตรวจสอบสถานะของอิมเมจ (images) ที่กำลังทำงานอยู่ | |
| 47 | docker compose logs | ใช้สำหรับดู Log ของคอนเทนเนอร์ และสามารถติดตาม Log ได้แบบสด ๆ (follow live) | |
| 48 | lazy docker | เป็นอินเทอร์เฟซผู้ใช้แบบกราฟิก (TUI - Terminal User Interface) สำหรับ Docker | มีเมนูที่สวยงามและใช้งานง่ายเพื่อจัดการ Docker |
| 49 | lazy docker | ช่วยให้คุณสามารถนำทางผ่านบริการที่กำลังทำงานอยู่ (running services), คอนเทนเนอร์แบบสแตนด์อโลน, อิมเมจ, วอลลุ่ม (volumes) และเครือข่าย | |
| 50 | tmux (Terminal Multiplexing) | อนุญาตให้หน้าต่างเทอร์มินัลเดียว (one window) กลายเป็นหลายบานหน้าต่าง (multiple panes) และเซสชัน (sessions) ที่สามารถคงอยู่ได้ | |
| 51 | tmux | เปรียบเทียบ: ให้ความรู้สึกเหมือนกับการมีพื้นที่ทำงานหลายแห่ง (workspaces) ภายในเทอร์มินัลเดียว |
ส่วนที่ 5: การจัดการ Git และการทำงานร่วมกัน (Git Management and Collaboration)
เครื่องมือเหล่านี้ช่วยให้นักพัฒนาจัดการการเปลี่ยนแปลงโค้ด (commits), สาขา (branches), และการดีบัก (debugging) หาจุดที่เกิดข้อผิดพลาดได้อย่างมีประสิทธิภาพ
| ลำดับ | คำสั่ง/เครื่องมือ | หน้าที่และคำอธิบายสำหรับผู้เริ่มต้น | ตัวอย่าง/รายละเอียดสำคัญที่พบในแหล่งข้อมูล |
|---|---|---|---|
| 52 | git grep | ใช้สำหรับค้นหาภายในไฟล์ที่ถูกติดตาม (tracked files) โดย Git เท่านั้น | ตัวอย่าง: ค้นหาคำว่า “health” ภายในไฟล์ main.go หลังจากการ git add` ไฟล์ |
| 53 | git worktree | อนุญาตให้คุณมีหลายสาขา (multiple branches) ที่ถูก Check Out พร้อมกันในโฟลเดอร์ที่แตกต่างกันบนเครื่องของคุณ | ประโยชน์: หากคุณต้องการแก้ไขด่วน (hot fix) ในสาขาหนึ่ง ในขณะที่การพัฒนาฟีเจอร์ยังดำเนินต่อในอีกสาขาหนึ่ง คุณสามารถทำได้ |
| 54 | git bisect start | ใช้เพื่อทำ Binary Search บน commits เพื่อค้นหาจุดที่แน่นอนว่าบั๊ก (bug) ถูกนำเข้ามาในระบบเมื่อใด | เปรียบทียบ: คล้ายกับการเป็นนักสืบที่ใช้การแบ่งครึ่งเพื่อค้นหาความผิดพลาดที่เกิดขึ้น |
| 55 | delta | เป็น Pager (ตัวจัดการการแสดงผล) สำหรับคำสั่ง git diff |
ข้อดี: ให้ผลลัพธ์ที่สวยงามกว่ามาก (prettier) และมีการจัดรูปแบบที่ดีกว่า git diff มาตรฐาน |
| 56 | lazy git | เป็น TUI (Terminal User Interface) สำหรับ Git | ช่วยให้คุณเห็นไฟล์, การเปลี่ยนแปลง, สาขาปัจจุบัน และประวัติ commits ทั้งหมดในรูปแบบภาพ |
| 57 | lazy git | รองรับการดำเนินการหลายอย่าง | สามารถทำ squash, fix up, reword, drop, edit, amend และ bisect ได้ผ่านอินเทอร์เฟซ |
| 58 | lazy git | ช่วยในการทำความเข้าใจความแตกต่างระหว่างสิ่งที่ถูก indexed และสิ่งที่ถูก staged ใน Git |
ประโยชน์: เป็นเครื่องมือช่วยทางสายตาที่สวยงาม (beautiful visual aid) ในการทำความเข้าใจคำสั่ง Git |
| 59 | GitHub CLI (gh) | เป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับโต้ตอบกับ GitHub | |
| 60 | gh issue list | ใช้สำหรับดูรายการ Issues ทั้งหมดของ GitHub | |
| 61 | GitHub CLI | สามารถดูรายการ Pull Request (PR list) และสามารถใช้เพื่อรีวิวหรือรวม (merge) PR ได้อีกด้วย | |
| 62 | tldr | ย่อมาจาก “Too Long; Didn’t Read” ให้บริการตัวอย่างการใช้งานจริง | ข้อดี: แทนที่จะอ่านหน้า Man Pages ที่ยาวเหยียด จะช่วยให้คุณเข้าใจการใช้คำสั่งต่าง ๆ ได้อย่างรวดเร็ว |
บทสรุปเชิงเปรียบเทียบ
เครื่องมือเหล่านี้เปรียบเสมือนชุดเครื่องมือพิเศษที่ช่างฝีมือ (นักพัฒนา) ใช้จัดการกับชิ้นส่วนและระบบที่ซับซ้อน:
rg(rip grep) และfdเหมือนการใช้แว่นขยายที่มีความคมชัดสูง:rgส่องหาข้อความที่ซ่อนอยู่ในเอกสารทั้งหมด ส่วนfdช่วยให้คุณค้นหาเอกสารตามชื่อได้ทันทีtmuxและlazy dockerเหมือนการมีโต๊ะทำงานแบบมัลติฟังก์ชัน:tmuxทำให้เทอร์มินัลเดียวของคุณกลายเป็นหลายหน้าต่างที่ทำงานพร้อมกันได้ ส่วนlazy dockerให้คุณจัดการคอนเทนเนอร์ที่ซับซ้อนได้ผ่านแผงควบคุมที่มีภาพสวยงามOpenVPNเหมือนการสร้างทางด่วนส่วนตัวที่มีรั้วและยามรักษาความปลอดภัย: ทำให้ข้อมูลของคุณเดินทางอย่างปลอดภัยและเข้ารหัสระหว่างอุปกรณ์กับเครือข่าย
Ubuntu