🐧 บรรทัดคำสั่ง Linux
คำสั่งพื้นฐานและขั้นสูงสำหรับการนำทาง ไฟล์ กระบวนการ เครือข่าย การตรวจสอบ แพ็กเกจ และระบบอัตโนมัติ เหมาะสำหรับเวิร์กโฟลว์ DevOps
🔹 คำสั่งพื้นฐาน
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| cat | แสดงเนื้อหาไฟล์หรือรวมหลายไฟล์เข้าด้วยกัน | |
| cat file.txt | ดูเนื้อหาไฟล์ | |
| cat file1 file2 | รวมและแสดงผลสองไฟล์ | |
| cat file1 file2 > merged.txt | รวมไฟล์และบันทึกไปยังไฟล์ใหม่ | |
| cd | เปลี่ยนไดเรกทอรีทำงานปัจจุบัน | |
| cd /etc | ไปยัง path แบบสัมบูรณ์  | |
| cd ~ | ไปยัง home directory | |
| cd .. | ย้ายขึ้นไปหนึ่งระดับ | |
| cd - | กลับไปยังไดเรกทอรีก่อนหน้า | |
| clear | ล้างหน้าจอเทอร์มินัล | |
| cp | คัดลอกไฟล์และไดเรกทอรี | |
| cp file1.txt file2.txt | คัดลอกไฟล์พร้อมเปลี่ยนชื่อใหม่ | |
| cp -r dir1 dir2 | คัดลอกไดเรกทอรีแบบ recursive | |
| cp -i file.txt /tmp/ | คัดลอกพร้อมยืนยันก่อนเขียนทับ | |
| echo | แสดงสตริงหรือค่าตัวแปรสภาพแวดล้อม | |
| echo "Hello, World!" | แสดงสตริงธรรมดา | |
| echo $HOME | แสดง path ของ home directory | |
| echo -e "1\t2\n3" | ตีความ escape sequences ( ) | |
| history | แสดงประวัติคำสั่ง | |
| id | แสดง UID, GID และกลุ่มของผู้ใช้ปัจจุบัน | |
| ls | แสดงรายการไฟล์และไดเรกทอรี | |
| ls -l | แสดงรายละเอียดพร้อมสิทธิ์และเจ้าของ | |
| ls -a | แสดงไฟล์ที่ซ่อนอยู่ | |
| ls -lh | แสดงขนาดแบบอ่านง่าย | |
| mkdir | สร้างไดเรกทอรี | |
| mkdir folder | สร้างไดเรกทอรีเดียว | |
| mkdir -p a/b/c | สร้างไดเรกทอรีซ้อน | |
| mkdir dir{1,2,3} | สร้างหลายไดเรกทอรีพร้อมกัน | |
| mv | ย้ายหรือเปลี่ยนชื่อไฟล์/ไดเรกทอรี | |
| mv oldname.txt newname.txt | เปลี่ยนชื่อไฟล์ | |
| mv file.txt /path/to/dir/ | ย้ายไฟล์ไปยังอีกไดเรกทอรี | |
| mv *.txt archive/ | ย้ายไฟล์  | |
| pwd | แสดงไดเรกทอรีทำงานปัจจุบัน | |
| pwd -P | แสดง path จริง (ไม่ตาม symlinks) | |
| cd /tmp && pwd | แสดง path หลังจากเปลี่ยนไปยัง  | |
| rm | ลบไฟล์หรือไดเรกทอรี | |
| rm file.txt | ลบไฟล์ | |
| rm -i file.txt | ลบไฟล์พร้อมยืนยัน | |
| rm -r folder/ | ลบไดเรกทอรีแบบ recursive | |
| rm -rf folder/ | ลบแบบบังคับโดยไม่ต้องยืนยัน | |
| rmdir | ลบไดเรกทอรีว่าง | |
| rmdir emptydir | ลบไดเรกทอรี  | |
| touch | สร้างไฟล์เปล่าหรืออัปเดตเวลาแก้ไข | |
| touch newfile.txt | สร้างไฟล์ใหม่ถ้าไม่มีอยู่ | |
| touch a b c | สร้างหลายไฟล์พร้อมกัน | |
| touch -c file.txt | อัปเดตเวลาโดยไม่สร้างไฟล์ถ้าไม่มี | |
| whereis | ค้นหา binary, source และ man pages ของคำสั่ง | |
| whereis ls | หาตำแหน่งของ  | |
| whereis bash | แสดง path ของ binary และ docs ของ Bash | |
| whereis -b bash | ค้นหาเฉพาะ binary | |
| which | แสดง path ของไฟล์คำสั่งที่รันได้ | |
| which python3 | path ของ  | |
| which grep | path ของ  | |
| which --skip-alias ls | ข้าม alias ขณะค้นหา | |
| whoami | แสดงชื่อผู้ใช้ที่ใช้งานอยู่ | 
🔸 ระดับกลาง
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| chmod | เปลี่ยนสิทธิ์ไฟล์หรือไดเรกทอรี | |
| chmod 755 file | กำหนดสิทธิ์ด้วยตัวเลข (เช่น 755) | |
| chmod +x script.sh | เพิ่มสิทธิ์ execute ให้กับสคริปต์ | |
| chmod -R 644 dir/ | เปลี่ยนสิทธิ์แบบ recursive บนไดเรกทอรี | |
| chown | เปลี่ยนเจ้าของและกลุ่มของไฟล์ | |
| chown user file | เปลี่ยนเจ้าของไฟล์ | |
| chown user:group file | เปลี่ยนเจ้าของและกลุ่ม | |
| chown -R user:group dir/ | เปลี่ยนเจ้าของและกลุ่มแบบ recursive | |
| curl | รับ/ส่งข้อมูลจาก/ไปยังเซิร์ฟเวอร์ (HTTP, HTTPS ฯลฯ) | |
| curl -I https://example.com | ส่ง HEAD request (headers เท่านั้น) | |
| curl -O https://example.com/file.txt | ดาวน์โหลดไฟล์และเก็บชื่อเดิม | |
| curl -d "a=1&b=2" -X POST URL | ส่ง POST request พร้อมฟอร์มข้อมูล | |
| df | รายงานการใช้งานพื้นที่ดิสก์ | |
| df -h | แสดงขนาดแบบอ่านง่าย | |
| df /home | การใช้งานของ mount point เฉพาะ | |
| df -T | แสดงชนิดของ file system | |
| diff | เปรียบเทียบไฟล์หรือไดเรกทอรี | |
| diff file1 file2 | เปรียบเทียบสองไฟล์ | |
| diff -u old.c new.c | แสดง diff แบบ unified (patch-style) | |
| diff -r dir1 dir2 | เปรียบเทียบไดเรกทอรีแบบ recursive | |
| du | ประเมินการใช้งานพื้นที่ของไฟล์และไดเรกทอรี | |
| du -sh * | แสดงขนาดไฟล์ในไดเรกทอรีปัจจุบัน | |
| du -h file.txt | แสดงขนาดไฟล์เดียว | |
| du -sh --max-depth=1 /var | สรุปขนาดของไดเรกทอรีย่อยระดับบน | |
| find | ค้นหาไฟล์/ไดเรกทอรีตามชื่อ ขนาด เวลา ฯลฯ | |
| find . -name "*.log" | ค้นหาไฟล์  | |
| find / -type f -size +100M | ค้นหาไฟล์ที่ใหญ่กว่า 100 MB | |
| find . -mtime -1 | ค้นหาไฟล์ที่แก้ไขใน 1 วันที่ผ่านมา | |
| free | แสดงหน่วยความจำที่ใช้และว่าง | |
| free -h | แสดงหน่วยแบบอ่านง่าย | |
| free -m | แสดงค่าเป็น MB | |
| watch -n 2 free -h | รีเฟรชผลลัพธ์ทุก 2 วินาที | |
| grep | ค้นหาข้อความโดยใช้ pattern (regular expressions) | |
| grep "error" logfile | หาบรรทัดที่มี  | |
| grep -r "error" /var/log | ค้นหาแบบ recursive ในไดเรกทอรี | |
| grep -i "fail" file | ค้นหาแบบไม่สนตัวพิมพ์เล็กใหญ่ | |
| head | แสดงบรรทัดแรกของไฟล์ | |
| head -n 10 file | 10 บรรทัดแรก | |
| head -n 20 file.txt | 20 บรรทัดแรก | |
| head -c 100 file | 100 ไบต์แรก | |
| hostname | แสดงหรือกำหนดชื่อโฮสต์ของระบบ | |
| hostname newname | ตั้งค่า hostname ชั่วคราวจนกว่าจะรีบูต | |
| hostname -I | แสดงที่อยู่ IP | |
| kill | ส่งสัญญาณไปยัง process | |
| kill -9 1234 | ฆ่า process โดยใช้ PID | |
| kill -TERM 1234 | หยุดอย่างนุ่มนวลด้วย SIGTERM | |
| pkill -f python | ฆ่า process ที่ตรงกับ pattern | |
| ping | ตรวจสอบการเชื่อมต่อเครือข่ายด้วย ICMP | |
| ping 8.8.8.8 | ping ที่อยู่ | |
| ping -c 4 ya.ru | ส่ง 4 packets | |
| ping -i 2 1.1.1.1 | ตั้งค่า interval 2 วินาที | |
| ps | รายงานสถานะ process | |
| ps aux | แสดง process ทั้งหมด | |
| ps -ef | grep nginx | กรองด้วย  | |
| ps -u $USER | แสดง process ของผู้ใช้ปัจจุบัน | |
| rsync | ถ่ายโอนไฟล์แบบ incremental เร็ว | |
| rsync -av src/ dst/ | ซิงค์ไดเรกทอรีภายในเครื่อง | |
| rsync -avz user@host:/src /dst | ซิงค์กับโฮสต์ระยะไกลผ่าน SSH | |
| rsync --delete src/ dst/ | ลบไฟล์ในปลายทางที่ไม่มีในต้นทาง | |
| scp | คัดลอกไฟล์อย่างปลอดภัย (ระยะไกล) | |
| scp file user@host:/path | คัดลอกไฟล์ไปยังโฮสต์ระยะไกล | |
| scp user@host:/file.txt . | คัดลอกไฟล์จากโฮสต์ระยะไกล | |
| scp -r dir user@host:/path | คัดลอกไดเรกทอรีแบบ recursive | |
| sort | จัดเรียงบรรทัดข้อความ | |
| sort file.txt | เรียงลำดับตามตัวอักษร | |
| sort -r file.txt | เรียงย้อนกลับ | |
| sort -n numbers.txt | เรียงแบบตัวเลข | |
| tail | แสดงส่วนท้ายของไฟล์; ติดตามการเปลี่ยนแปลง | |
| tail -f logfile.log | ติดตาม log แบบ real time | |
| tail -n 20 file.txt | แสดง 20 บรรทัดสุดท้าย | |
| tail -c 100 file.txt | แสดง 100 ไบต์สุดท้าย | |
| tar | สร้าง แสดงรายการ หรือแตกไฟล์ tar | |
| tar -czf archive.tgz dir/ | สร้าง  | |
| tar -xzf archive.tgz | แตกไฟล์  | |
| tar -tf archive.tgz | แสดงเนื้อหา archive | |
| tee | อ่านจาก stdin และเขียนไป stdout และไฟล์ | |
| echo "test" | tee out.txt | เขียน output ไปที่  | |
| ls | tee list.txt | บันทึก output ของ  | |
| command | tee -a log.txt | ต่อท้าย output ลงใน  | |
| top | แสดงงานของ Linux (interactive process viewer) | |
| top | เริ่ม top | |
| htop | ใช้ htop แทน | |
| top -o %MEM | จัดเรียงตามการใช้หน่วยความจำ | |
| uptime | แสดงเวลาที่ระบบทำงาน | |
| uptime -p | แสดง uptime แบบสวยงาม | |
| uptime -s | เวลา boot ของระบบ | |
| wget | ดาวน์โหลดเครือข่ายแบบ non-interactive | |
| wget https://site.com/file.zip | ดาวน์โหลดไฟล์โดยใช้ URL | |
| wget -c file.zip | ทำต่อจากการดาวน์โหลดที่ขาด | |
| wget -O saved.txt URL | บันทึกด้วยชื่อไฟล์ที่ต่างออกไป | |
| wc | นับบรรทัด คำ และตัวอักษรในไฟล์ | |
| wc -l file | นับบรรทัด | |
| wc -w file | นับคำ | |
| wc -m file | นับอักขระ | |
| uniq | รายงานหรือลบบรรทัดที่ซ้ำกัน (ติดกัน) | |
| uniq file.txt | ลบบรรทัดซ้ำติดกัน | |
| sort file | uniq | ลบซ้ำหลังการ sort | |
| sort file | uniq -c | นับจำนวนครั้งของแต่ละบรรทัด | |
| yes | แสดงสตริงซ้ำ ๆ จนกว่าจะหยุด; ใช้ได้กับ scripting | |
| yes "y" | command | ตอบ “y” อัตโนมัติทุกครั้ง | |
| yes | rm -i * | ยืนยันการลบแบบ interactive อัตโนมัติ | |
| yes no | command | ตอบ “no” อัตโนมัติ | 
🔧 คำสั่งขั้นสูง
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| at | ตั้งเวลาให้คำสั่งรันครั้งเดียวตามที่กำหนด | |
| at now + 1 minute | รันคำสั่งในอีก 1 นาที | |
| atq | แสดง jobs ที่รอดำเนินการ | |
| atrm | ลบ job ที่รอดำเนินการ | |
| awk | ภาษาสำหรับสแกนและประมวลผลข้อมูล | |
| awk '{print $1}' file | แสดงคอลัมน์แรก | |
| ps aux | awk '$3 > 50' | กรอง process ตามการใช้ CPU | |
| cat file.txt | awk '{print $2}' | แสดงฟิลด์ที่สองจากแต่ละบรรทัด | |
| awk '/error/ {print $0}' logfile | แสดงบรรทัดที่ตรงกับ pattern | |
| crontab | ติดตั้ง แสดง หรือลบ cron jobs ต่อผู้ใช้ | |
| crontab -e | แก้ไข crontab ของผู้ใช้ปัจจุบัน | |
| crontab -l | แสดง cron jobs | |
| crontab -r | ลบ crontab ของผู้ใช้ปัจจุบัน | |
| cut | ตัดหรือเลือกบางส่วนจากแต่ละบรรทัดของไฟล์ | |
| cut -d':' -f1 /etc/passwd | แสดงชื่อผู้ใช้จาก  | |
| echo "a:b:c" | cut -d':' -f2 | ตัดฟิลด์ที่สองโดยใช้ ‘:’ เป็นตัวแบ่ง | |
| cut -c1-5 filename | เลือกตัวอักษรตามตำแหน่ง | |
| df | รายงานการใช้งานพื้นที่ดิสก์ | |
| df -h | แสดงขนาดแบบอ่านง่าย | |
| df -T | แสดงชนิด file system | |
| df /home | การใช้งานของ home directory | |
| env | รันคำสั่งใน environment ที่แก้ไขหรือแสดง env | |
| env | grep PATH | แสดงรายการ PATH | |
| env -i bash | เริ่ม shell ใหม่พร้อม environment ว่าง | |
| export | ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับ shell/session | |
| export VAR=value | ตั้งค่าตัวแปรใน shell นี้ | |
| export PATH=$PATH:/new/path | เพิ่มไดเรกทอรีเข้า PATH | |
| export -p | แสดงรายการตัวแปรที่ export แล้ว | |
| free | แสดงการใช้หน่วยความจำ | |
| free -m | แสดงเป็น MB | |
| free -h | แสดงหน่วยแบบอ่านง่าย | |
| free -s 5 | อัปเดตทุก 5 วินาที | |
| hostnamectl | สอบถามและเปลี่ยน hostname ของระบบและการตั้งค่า | |
| hostnamectl status | แสดงสถานะ hostname | |
| hostnamectl set-hostname newname | ตั้งค่า hostname ใหม่ | |
| ifconfig/ip | เครื่องมือ IP สำหรับดู/จัดการอินเทอร์เฟซและที่อยู่ | |
| ifconfig | แสดง network interfaces (legacy) | |
| ip a | แสดง addresses ด้วย  | |
| ip link set eth0 up | เปิดใช้งาน interface | |
| iostat | รายงานสถิติ CPU และ I/O | |
| iostat -x 2 | แสดงสถิติทุก 2 วินาที | |
| iostat -d 5 3 | แสดงสถิติอุปกรณ์ (ทุก 5s จำนวน 3 ครั้ง) | |
| iptables | เครื่องมือจัดการ IPv4 packet filtering และ NAT | |
| iptables -L | แสดงกฎปัจจุบัน | |
| iptables -A INPUT -p tcp --dport 22 -j ACCEPT | อนุญาต SSH เข้า port 22 | |
| iptables -F | ล้างกฎทั้งหมด | |
| journalctl | สอบถาม systemd journal | |
| journalctl -xe | แสดง errors ล่าสุดพร้อมรายละเอียด | |
| journalctl -u nginx.service | แสดง logs ของ service | |
| journalctl --since "2 hours ago" | แสดง logs ตั้งแต่เวลาที่กำหนด | |
| ln | สร้างลิงก์ระหว่างไฟล์ | |
| ln -s target link | สร้าง symbolic link | |
| ln file.txt backup.txt | สร้าง hard link | |
| ln -sf target link | สร้าง symbolic link ใหม่แทนที่เดิม | |
| sed | stream editor สำหรับกรองและแปลงข้อความ | |
| sed 's/old/new/g' file | แทนที่สตริงทั้งหมด | |
| sed -n '1,5p' file | แสดงบรรทัดช่วงที่เลือก | |
| sed '/pattern/d' file | ลบบรรทัดที่ตรงกับ pattern | |
| systemctl | ควบคุม systemd และบริการ | |
| systemctl status nginx | แสดงสถานะบริการ | |
| systemctl start nginx | เริ่มบริการ | |
| systemctl enable nginx | เปิดใช้บริการเมื่อบูต | |
| tr | แปลงหรือลบตัวอักษร | |
| tr a-z A-Z | เปลี่ยนตัวพิมพ์เล็กเป็นใหญ่ | |
| echo "hello" | tr 'h' 'H' | แทนที่อักขระ | |
| echo "abc123" | tr -d '0-9' | ลบตัวเลข | |
| type | อธิบายว่าชื่อถูกตีความอย่างไรใน shell | |
| type ls | แสดงว่า  | |
| type cd | แสดงว่า  | |
| type python3 | แสดงว่า  | |
| ulimit | ดูหรือกำหนดขีดจำกัดของ process ต่อผู้ใช้ | |
| ulimit -n | แสดงจำนวนไฟล์ที่เปิดได้สูงสุด | |
| ulimit -c unlimited | เปิดใช้งาน core dumps | |
| ulimit -u 4096 | จำกัดจำนวน process ของผู้ใช้ | |
| uptime | แสดง uptime และค่าโหลดเฉลี่ย | |
| uptime -p | แสดง uptime แบบสวยงาม | |
| uptime -s | แสดงเวลา boot | |
| xargs | สร้างและรันคำสั่งจาก standard input | |
| xargs -n 1 echo | echo แต่ละ argument บรรทัดใหม่ | |
| echo "a b c" | xargs -n 1 | แยกคำเป็น arguments | |
| find . -name '*.txt' | xargs rm | หาไฟล์แล้วลบด้วย xargs | 
🌐 คำสั่งเครือข่าย
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| curl | ถ่ายโอนข้อมูลไปยัง/จากเซิร์ฟเวอร์ | |
| curl -X POST -d "a=1" URL | ส่ง POST request พร้อมข้อมูลฟอร์ม | |
| curl -I URL | ดึงเฉพาะ headers | |
| curl -o file.html URL | ดาวน์โหลดและบันทึกเป็นไฟล์ | |
| dig | เครื่องมือค้นหา DNS | |
| dig openai.com | ค้นหา A records | |
| dig +short openai.com | คำตอบแบบสั้น | |
| dig @8.8.8.8 openai.com | ใช้ DNS server ที่กำหนดเอง | |
| ftp | ไคลเอนต์ FTP (File Transfer Protocol) | |
| ftp host | เชื่อมต่อกับ FTP server | |
| ftp -n host | เชื่อมต่อโดยไม่เข้าสู่ระบบอัตโนมัติ | |
| ftp> get file.txt | ดาวน์โหลดไฟล์ในเซสชัน FTP | |
| ip address | แสดง/จัดการที่อยู่ IP | |
| ip addr show eth0 | แสดงข้อมูล address ของ  | |
| ip addr | แสดง addresses ทั้งหมด | |
| ip link | แสดง/จัดการอุปกรณ์เครือข่าย | |
| ip link show | แสดง network links | |
| ip link set eth0 up | เปิดใช้งาน interface | |
| ip route | แสดง/จัดการตาราง routing ของ IP | |
| ip route list | แสดง routing table | |
| ip route add default via 192.168.1.1 | เพิ่ม default route | |
| nc | เชื่อมต่อ TCP/UDP หรือตั้งรับการเชื่อมต่อ | |
| nc -zv host 22 | สแกนพอร์ตของโฮสต์ | |
| nc -l 1234 | รอฟังที่พอร์ต TCP | |
| nc host 1234 < file | ส่งไฟล์ไปยังพอร์ตระยะไกล | |
| nmap | เครื่องมือสำรวจเครือข่ายและสแกนพอร์ต/ความปลอดภัย | |
| nmap -sP 192.168.1.0/24 | สแกน subnet แบบ ping | |
| nmap -sV 192.168.1.1 | ตรวจหาบริการ/เวอร์ชัน | |
| nmap -O 192.168.1.1 | ตรวจจับระบบปฏิบัติการ | |
| nslookup | สอบถามเซิร์ฟเวอร์ชื่อโดเมน (DNS) | |
| nslookup google.com | ค้นหาชื่อโดเมน | |
| nslookup 8.8.8.8 | Reverse lookup สำหรับ IP | |
| ssh | OpenSSH ไคลเอนต์สำหรับเข้าสู่ระบบระยะไกล | |
| ssh user@host | เชื่อมต่อไปยังโฮสต์ | |
| ssh -p 2222 user@host | เชื่อมต่อด้วยพอร์ตที่ไม่ใช่ค่าเริ่มต้น | |
| ssh -i ~/.ssh/id_rsa user@host | เข้าสู่ระบบด้วย private key ที่กำหนด | |
| ss | เครื่องมือสืบค้น sockets | |
| ss -tuln | แสดง TCP/UDP พอร์ตที่กำลังฟัง | |
| ss -s | สถิติแบบสรุป | |
| ss -l | แสดง sockets ที่กำลังฟัง | |
| telnet | ส่วนติดต่อผู้ใช้สำหรับโปรโตคอล TELNET | |
| telnet host 80 | เชื่อมต่อกับโฮสต์ที่พอร์ต 80 | |
| telnet example.com 443 | เชื่อมต่อไปยัง 443 | |
| telnet localhost 25 | เชื่อมต่อกับ SMTP ภายในเครื่อง | |
| traceroute | ติดตามเส้นทางไปยังโฮสต์เครือข่าย | |
| traceroute 8.8.8.8 | ติดตามเส้นทางไปยัง IP | |
| traceroute -m 15 8.8.8.8 | จำกัดจำนวน hops สูงสุด | |
| wget | ดึงไฟล์จากเว็บ | |
| wget -O file.txt URL | บันทึกผลลัพธ์ลงไฟล์ | |
| wget URL | ดาวน์โหลดไปยังไดเรกทอรีปัจจุบัน | |
| wget -c URL | ทำต่อจากการดาวน์โหลดที่ไม่สมบูรณ์ | 
🔍 การค้นหาและจัดการไฟล์
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| basename | ตัดไดเรกทอรีและนามสกุลออกจากชื่อไฟล์ | |
| basename /path/to/file | แสดงชื่อไฟล์จาก path | |
| basename /path/to/file .txt | ตัดนามสกุลออกจากชื่อ | |
| dirname | ตัดส่วนสุดท้ายออกจาก path | |
| dirname /path/to/file | แสดงส่วน directory ของ path | |
| dirname /etc/passwd | แสดง parent ของ  | |
| du | ประมาณการใช้งานพื้นที่ไฟล์ | |
| du -sh folder/ | แสดงขนาดของไดเรกทอรี | |
| du -h * | แสดงขนาดของไฟล์ในไดเรกทอรีปัจจุบัน | |
| du -c folder1 folder2 | รวมขนาดของหลายไดเรกทอรี | |
| file | ตรวจสอบประเภทไฟล์ | |
| file some.bin | ตรวจสอบประเภทไฟล์ | |
| file * | ตรวจสอบประเภทไฟล์ทั้งหมดในไดเรกทอรี | |
| file -i file.txt | แสดง MIME type | |
| find | ค้นหาไฟล์ | |
| find /path -type f -name "*.sh" | ค้นหา shell scripts ตามชื่อ | |
| find . -size +10M | ค้นหาไฟล์ที่ใหญ่กว่า 10 MB | |
| find /tmp -mtime -1 | ค้นหาไฟล์ที่แก้ไขใน 1 วันที่ผ่านมา | |
| locate | ค้นหาไฟล์ตามชื่อด้วยฐานข้อมูล | |
| locate filename | ค้นหาตามชื่อไฟล์ | |
| locate *.conf | ค้นหาด้วย wildcard | |
| locate -i README | ค้นหาแบบไม่สนตัวพิมพ์เล็กใหญ่ | |
| realpath | แสดง path แบบ absolute ที่ถูก resolve | |
| realpath file | resolve path ของไฟล์ | |
| realpath ../relative/path | resolve path แบบ relative | |
| stat | แสดงสถานะไฟล์หรือระบบไฟล์ | |
| stat file | แสดงรายละเอียดสถานะไฟล์ | |
| stat -c %s file | แสดงเฉพาะขนาดไฟล์ | |
| stat -f file | แสดงสถานะระบบไฟล์ | |
| tree | แสดงเนื้อหาไดเรกทอรีในรูปแบบต้นไม้ | |
| tree | พิมพ์ tree ของไดเรกทอรี | |
| tree -L 2 | จำกัดระดับความลึกของการแสดงผล | |
| tree -a | รวมไฟล์ที่ซ่อนอยู่ | 
📊 การตรวจสอบระบบ
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| dmesg | แสดงหรือควบคุม kernel ring buffer | |
| dmesg | tail | แสดง kernel messages ล่าสุด | |
| dmesg | grep usb | กรองเฉพาะข้อความ USB | |
| free | แสดงการใช้หน่วยความจำ | |
| free -h | หน่วยแบบอ่านง่าย | |
| free -m | แสดงเป็น MB | |
| htop | ตัวแสดง process แบบ interactive | |
| htop | รัน  | |
| iotop | แสดงการใช้งาน I/O ตาม process | |
| iotop | รัน  | |
| iotop -o | แสดงเฉพาะ process ที่มี I/O | |
| lsof | แสดงไฟล์ที่เปิดอยู่ | |
| lsof -i :80 | แสดง process ที่ใช้พอร์ต 80 | |
| lsof -u username | แสดงไฟล์ที่เปิดโดยผู้ใช้ | |
| uptime | แสดง uptime ของระบบและค่าโหลดเฉลี่ย | |
| vmstat | รายงานสถิติหน่วยความจำเสมือน | |
| vmstat 1 | รีเฟรชทุก 1 วินาที | |
| vmstat 5 3 | ช่วง 5 วินาที จำนวน 3 รายงาน | |
| watch | รันโปรแกรมซ้ำ ๆ และแสดงผล | |
| watch -n 1 df -h | ตรวจสอบการใช้งานดิสก์ | |
| watch -d free -h | ไฮไลต์ความต่างและตรวจสอบหน่วยความจำ | 
📦 การจัดการแพ็กเกจ
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| apt | APT package manager (Debian/Ubuntu) | |
| apt install curl | ติดตั้งแพ็กเกจ | |
| apt remove curl | ลบแพ็กเกจ | |
| apt update && apt upgrade | อัปเดตรายการและอัปเกรดแพ็กเกจ | |
| dnf | Dandified YUM (Fedora/RHEL family) | |
| dnf install curl | ติดตั้งแพ็กเกจ | |
| dnf upgrade | อัปเกรดแพ็กเกจ | |
| rpm | RPM package manager | |
| rpm -ivh package.rpm | ติดตั้งแพ็กเกจ RPM | |
| rpm -e package | ถอนการติดตั้งแพ็กเกจ | |
| snap | Snappy package manager | |
| snap install app | ติดตั้ง snap | |
| snap remove app | ลบ snap | |
| yum | Yellowdog Updater Modified (RHEL/CentOS) | |
| yum install curl | ติดตั้งแพ็กเกจ | |
| yum remove curl | ลบแพ็กเกจ | 
💽 ระบบไฟล์
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| blkid | ค้นหา/แสดงคุณลักษณะ block device | |
| blkid | แสดง block devices และ attributes | |
| df | รายงานการใช้งานดิสก์ | |
| df -Th | แสดงขนาดอ่านง่ายตามชนิด | |
| fsck | ตรวจสอบและซ่อมแซมระบบไฟล์ Linux | |
| fsck /dev/sda1 | ตรวจสอบอุปกรณ์ | |
| lsblk | แสดงข้อมูล block devices | |
| lsblk | แสดง devices ในรูปแบบต้นไม้ | |
| mkfs | สร้างระบบไฟล์ Linux | |
| mkfs.ext4 /dev/sdb1 | สร้างระบบไฟล์ ext4 | |
| mount | เมานต์ระบบไฟล์ | |
| mount /dev/sdb1 /mnt | เมานต์อุปกรณ์ไปยัง  | |
| mount | grep /mnt | แสดงระบบไฟล์ที่เมานต์พร้อมกรอง path | |
| parted | โปรแกรมจัดการพาร์ทิชัน | |
| parted /dev/sdb | เปิดดิสก์เพื่อจัดการพาร์ทิชัน | |
| umount | ยกเลิกการเมานต์ระบบไฟล์ | |
| umount /mnt | ยกเลิกการเมานต์ mount point | 
🤖 สคริปต์และระบบอัตโนมัติ
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| alias | กำหนดหรือแสดง alias ของ shell | |
| alias ll='ls -la' | สร้าง alias ที่ใช้งานง่าย | |
| alias | แสดง alias ที่มีอยู่ | |
| bash/sh | รัน shell scripts | |
| bash script.sh | รันสคริปต์ด้วย Bash | |
| sh script.sh | รันสคริปต์ด้วย  | |
| crontab | cron tables ต่อผู้ใช้ | |
| crontab -e | แก้ไข crontab ของผู้ใช้ปัจจุบัน | |
| read | รับอินพุตจากผู้ใช้ใน shell scripts | |
| read name | อ่านค่าใส่ตัวแปร | |
| set | ตั้งค่า options/parameters ของ shell | |
| set -e | ออกจาก script เมื่อเกิด error | |
| source | อ่านและรันคำสั่งจากไฟล์ใน shell ปัจจุบัน | |
| source ~/.bashrc | โหลดการตั้งค่า shell ใหม่ | |
| trap | ดักสัญญาณและรันคำสั่ง | |
| trap "echo 'exit'" EXIT | รันคำสั่งเมื่อ shell ออก | 
🛠 การพัฒนาและการดีบัก
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| gcc | GNU C compiler | |
| gcc main.c -o app | คอมไพล์ไฟล์ต้นฉบับ C | |
| gdb | GNU debugger | |
| gdb ./app | ดีบัก binary ที่คอมไพล์แล้ว | |
| git | ระบบควบคุมเวอร์ชันแบบกระจาย | |
| git status | แสดงสถานะ working tree | |
| git commit -m "msg" | commit พร้อมข้อความ | |
| ltrace | ติดตาม library calls | |
| ltrace ./app | ติดตาม library calls ของ binary | |
| make | เครื่องมือจัดการโปรแกรมหลายตัว | |
| make | คอมไพล์ตาม Makefile | |
| shellcheck | วิเคราะห์ static สำหรับ shell scripts | |
| shellcheck script.sh | ตรวจสอบ shell script | |
| strace | ติดตาม system calls และสัญญาณ | |
| strace ./app | ติดตาม syscalls ของโปรแกรม | |
| valgrind | เฟรมเวิร์กวิเคราะห์ dynamic สำหรับเครื่องมือ | |
| valgrind ./app | รันโปรแกรมภายใต้ Valgrind | |
| vim/nano | ตัวแก้ไขข้อความบน command line | |
| vim file.sh | แก้ไขด้วย Vim | |
| nano file.sh | แก้ไขด้วย Nano | 
📌 เบ็ดเตล็ด
| คำสั่ง | ตัวอย่าง | คำอธิบาย | 
|---|---|---|
| cal | แสดงปฏิทิน | |
| cal 2025 | แสดงปฏิทินทั้งปี | |
| cal 08 2025 | แสดงเดือนที่ระบุ | |
| date | แสดงหรือตั้งวันที่และเวลาของระบบ | |
| date +%T | พิมพ์เวลาปัจจุบัน (HH:MM:SS) | |
| date -d "next friday" | พิมพ์วันที่สำหรับวันแบบ relative | |
| factor | แยกตัวประกอบจำนวนเต็ม | |
| factor 100 | แยกตัวประกอบตัวเลข | |
| man | จัดรูปแบบและแสดง man pages ออนไลน์ | |
| man tar | เปิด man page | |
| man -k copy | ค้นหา manuals ด้วย keyword | |
| man 5 passwd | เปิด section ของ manual | |
| seq | แสดงลำดับตัวเลข | |
| seq 1 5 | นับจาก 1 ถึง 5 | |
| seq 1 2 9 | นับแบบกำหนด step | |
| seq -s ',' 1 5 | รวมตัวเลขด้วยตัวคั่นที่กำหนดเอง | |
| yes | แสดงสตริงซ้ำจนกว่าจะหยุด | |
| yes | rm -r dir | ยืนยันอัตโนมัติในการลบแบบ recursive | 
📚 แหล่งข้อมูลเพิ่มเติม
📘 man pages - คู่มือคำสั่งแบบละเอียด:
man ls
man rm📙 TLDR - ตัวอย่างการใช้งานคำสั่งยอดนิยมแบบสั้น:
🧠 เคล็ดลับ: ติดตั้ง tldr สำหรับความช่วยเหลือแบบชีทโกง:
sudo apt install tldr   # หรือ: npm install -g tldr
tldr tar                # ตัวอย่างสรุปแบบย่อสำหรับคำสั่ง tar🌐 ลิงก์ที่มีประโยชน์
Linux man pages online — คู่มืออย่างเป็นทางการ ค้นหาได้ตามชื่อคำสั่ง:
https://man7.org/linux/man-pages/
man pages แบบง่ายและขับเคลื่อนโดยชุมชน — หน้า help จากชุมชนพร้อมตัวอย่างการใช้งานจริง:
https://tldr.sh/