Dev Cli 2568

ข้อมูลเหล่านี้ถูกสรุปมาจากแหล่งข้อมูลที่กล่าวถึงคำสั่ง 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 ที่ยาวเหยียด จะช่วยให้คุณเข้าใจการใช้คำสั่งต่าง ๆ ได้อย่างรวดเร็ว

บทสรุปเชิงเปรียบเทียบ

เครื่องมือเหล่านี้เปรียบเสมือนชุดเครื่องมือพิเศษที่ช่างฝีมือ (นักพัฒนา) ใช้จัดการกับชิ้นส่วนและระบบที่ซับซ้อน:

Related
Ubuntu