🐧 บรรทัดคำสั่ง 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/