คำสั่ง Bash / Terminal
คำสั่งที่จำเป็นสำหรับการนำทาง ไฟล์ การค้นหา สิทธิ์ กระบวนการ เครือข่าย และการเก็บถาวร
การนำทาง
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
ls
|
-la, -lh, -R |
ls -la /etc |
รายการไฟล์ | แสดงเนื้อหาในไดเรกทอรี; -l รูปแบบยาว, -a ไฟล์ซ่อน, -h ขนาดแบบอ่านง่าย |
cd
|
-, ~, .. |
cd ~/projects |
เปลี่ยนไดเรกทอรี | เปลี่ยนไดเรกทอรี; cd - กลับไดเรกทอรีก่อนหน้า, cd ~ กลับโฮม |
pwd
|
|
pwd |
/home/user | แสดงไดเรกทอรีปัจจุบัน (พาธเต็ม) |
tree
|
-L n, -a |
tree -L 2 |
แสดงโครงสร้างต้นไม้ | แสดงโครงสร้างไดเรกทอรีแบบต้นไม้; -L จำกัดความลึก (อาจต้องติดตั้งเพิ่ม) |
find
|
-name -type -mtime |
find . -name '*.log' |
พาธของไฟล์ | ค้นหาไฟล์หรือไดเรกทอรีตามเงื่อนไขที่กำหนด |
locate
|
-i |
locate nginx.conf |
พาธของไฟล์ | ค้นหาไฟล์ด่วนโดยใช้ฐานข้อมูล index; รัน updatedb ก่อน |
การจัดการไฟล์
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
cp
|
-r, -i, -u |
cp -r src/ dst/ |
คัดลอกไฟล์ | คัดลอกไฟล์; -r สำหรับไดเรกทอรี, -i ถามยืนยันก่อนเขียนทับ |
mv
|
-i, -n |
mv old.txt new.txt |
ย้าย/เปลี่ยนชื่อ | ย้ายหรือเปลี่ยนชื่อไฟล์; -i ถามยืนยันก่อนเขียนทับ |
rm
|
-r, -f, -i |
rm -rf dist/ |
ลบแล้ว | ลบไฟล์หรือไดเรกทอรี; -r recursive, -f บังคับลบ — ใช้ด้วยความระมัดระวัง |
mkdir
|
-p |
mkdir -p a/b/c |
ไดเรกทอรีใหม่ | สร้างไดเรกทอรี; -p สร้างไดเรกทอรีแม่ที่ยังไม่มีด้วย |
touch
|
|
touch index.html |
ไฟล์ว่าง | สร้างไฟล์ว่างหรืออัปเดต timestamp ของไฟล์ |
ln
|
-s |
ln -s /etc/nginx nginx |
symlink | สร้าง hard link; -s สำหรับ symbolic link |
ดูไฟล์
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
cat
|
-n, -A |
cat -n file.txt |
เนื้อหาไฟล์ | แสดงไฟล์; -n เพิ่มหมายเลขบรรทัด, -A แสดงอักขระที่ไม่พิมพ์ได้ |
head
|
-n N |
head -n 20 log.txt |
N บรรทัดแรก | แสดงบรรทัดแรกของไฟล์ (ค่าเริ่มต้น 10 บรรทัด) |
tail
|
-n N, -f |
tail -f app.log |
N บรรทัดสุดท้าย | แสดงบรรทัดสุดท้าย; -f ติดตามเนื้อหาใหม่แบบ real time |
less
|
/search, q |
less large.log |
ดูแบบแบ่งหน้า | เลื่อนดูไฟล์ทีละหน้า; / ค้นหา, q ออก, space เลื่อนหน้า |
wc
|
-l, -w, -c |
wc -l file.txt |
จำนวน | นับคำ; -l นับบรรทัด, -w นับคำ, -c นับไบต์/อักขระ |
ค้นหาและประมวลผลข้อความ
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
grep
|
-r -i -n -v -E |
grep -rn 'error' logs/ |
บรรทัดที่ตรงกัน | ค้นหารูปแบบข้อความ; -r recursive, -i ไม่สนตัวพิมพ์เล็ก/ใหญ่, -n แสดงหมายเลขบรรทัด |
grep -v
|
|
grep -v 'debug' app.log |
บรรทัดที่ไม่ตรง | กลับผลการค้นหา — แสดงบรรทัดที่ไม่มีรูปแบบนั้น |
grep -E
|
|
grep -E 'warn|error' log |
บรรทัดที่ตรงกัน | Extended regex — ใช้ | สำหรับ OR, + สำหรับหนึ่งครั้งขึ้นไป |
awk
|
'{print $N}' |
awk '{print $1}' f |
ค่าคอลัมน์ | ประมวลผลข้อความแบบ pattern-action; $1 ฟิลด์แรก, $NF ฟิลด์สุดท้าย |
sed
|
-i 's/a/b/g' |
sed -i 's/foo/bar/g' f |
ข้อความที่แก้ไขแล้ว | Stream editor; s/ค้นหา/แทนที่/g แทนที่ทุกตำแหน่งในไฟล์ |
sort
|
-n -r -k N |
sort -n numbers.txt |
ผลลัพธ์ที่เรียงแล้ว | เรียงบรรทัด; -n เรียงตัวเลข, -r ย้อนกลับ, -k เรียงตามคอลัมน์ N |
uniq
|
-c, -d |
sort f | uniq -c |
บรรทัดที่ไม่ซ้ำ | ลบบรรทัดซ้ำที่ติดกัน; มักใช้ต่อจาก sort |
สิทธิ์
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
chmod
|
755, 644, +x |
chmod +x script.sh |
เปลี่ยนสิทธิ์แล้ว | เปลี่ยนสิทธิ์ไฟล์; 755=rwxr-xr-x, 644=rw-r--r-- |
chown
|
-R user:group |
chown -R www-data:www-data /var/www |
เปลี่ยนเจ้าของแล้ว | เปลี่ยนเจ้าของและกลุ่มของไฟล์; -R recursive |
ls -la
|
|
ls -la /var/www |
รายการสิทธิ์ | แสดงสิทธิ์, เจ้าของ, กลุ่ม, และขนาดของไฟล์ทั้งหมด |
umask
|
022, 027 |
umask 022 |
สิทธิ์เริ่มต้น | กำหนด permission mask เริ่มต้นสำหรับไฟล์ใหม่ (022 → ไฟล์ 644) |
sudo
|
-u user |
sudo systemctl restart nginx |
คำสั่งยกระดับสิทธิ์ | รันคำสั่งในฐานะ superuser; -u เพื่อรันในนามผู้ใช้อื่น |
การจัดการกระบวนการ
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
ps
|
aux, -ef |
ps aux | grep nginx |
รายการโปรเซส | แสดงรายการโปรเซส; aux=ทุกผู้ใช้, -ef=รูปแบบเต็ม |
top
|
q, k, M |
top |
มุมมอง live | มอนิเตอร์โปรเซสแบบ interactive; q ออก, k ฆ่าโปรเซส, M เรียงตามหน่วยความจำ |
htop
|
F3, F9 |
htop |
มุมมอง live | top แบบสีสันพร้อมปรับปรุง; F3 ค้นหา, F9 ฆ่าโปรเซส (อาจต้องติดตั้งเพิ่ม) |
kill
|
-9, -15 |
kill -9 1234 |
ส่ง signal แล้ว | ส่ง signal ไปยัง PID; -15 SIGTERM (ปิดอย่างสุภาพ), -9 SIGKILL (บังคับ) |
killall
|
-9, -u |
killall node |
ส่ง signal แล้ว | ฆ่าทุกโปรเซสที่มีชื่อตรงกัน |
jobs
|
-l |
jobs -l |
รายการงาน | แสดงรายการงานที่ทำงานเบื้องหลังหรือหยุดชั่วคราวใน shell ปัจจุบัน |
bg / fg
|
%N |
fg %1 |
กลับมาทำงานแล้ว | bg ส่งงานไปเบื้องหลัง, fg ดึงงานกลับมาเบื้องหน้า |
เครือข่าย
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
curl
|
-o -L -X -H -d |
curl -O https://example.com/f |
ผลลัพธ์ | ส่งข้อมูลผ่าน HTTP/FTP; -L ติดตาม redirect, -o บันทึกเป็นไฟล์ |
wget
|
-O -r -q |
wget -q https://example.com |
บันทึกไฟล์แล้ว | ดาวน์โหลดไฟล์; -O เปลี่ยนชื่อไฟล์ผลลัพธ์, -r recursive, -q เงียบ |
ping
|
-c N |
ping -c 4 google.com |
RTT ms | ทดสอบการเชื่อมต่อเครือข่าย; -c จำกัดจำนวน packet |
ssh
|
-i -p -L |
ssh user@host -p 2222 |
shell | Secure shell; -i ไฟล์ key, -p พอร์ต, -L port forward แบบ local |
scp
|
-r -P -i |
scp file user@host:~/ |
คัดลอกแล้ว | คัดลอกไฟล์ผ่าน SSH อย่างปลอดภัย; -r recursive, -P พอร์ต (ตัวพิมพ์ใหญ่) |
netstat
|
-tuln |
netstat -tuln |
รายการพอร์ต | แสดงการเชื่อมต่อเครือข่าย; -t TCP, -u UDP, -l กำลังฟัง, -n ตัวเลข |
ss
|
-tuln |
ss -tuln |
รายการพอร์ต | ทดแทน netstat รุ่นใหม่; เร็วกว่าและรายละเอียดมากกว่า |
การเก็บถาวรและบีบอัด
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
tar -czf
|
-czf out.tar.gz |
tar -czf arc.tar.gz dir/ |
archive | สร้าง tarball บีบอัดด้วย gzip; c=สร้าง, z=gzip, f=ชื่อไฟล์ |
tar -xzf
|
-xzf file.tar.gz |
tar -xzf arc.tar.gz -C /tmp |
แตกไฟล์แล้ว | แตกไฟล์ gzip tarball; x=แตก, -C ระบุไดเรกทอรีปลายทาง |
tar -tf
|
|
tar -tf archive.tar.gz |
รายการไฟล์ | แสดงรายการไฟล์ใน tarball โดยไม่แตกออก |
zip
|
-r, -9 |
zip -r out.zip dir/ |
ไฟล์ zip | สร้าง zip archive; -r recursive, -9 บีบอัดสูงสุด |
unzip
|
-d, -l |
unzip archive.zip -d out/ |
แตกไฟล์แล้ว | แตกไฟล์ zip; -d ระบุปลายทาง, -l แสดงรายการโดยไม่แตกออก |
gzip / gunzip
|
-k, -d |
gzip -k file.txt |
บีบอัดแล้ว | บีบอัดไฟล์เดี่ยวด้วย gzip; -k เก็บไฟล์ต้นฉบับ, gunzip เพื่อคลายการบีบอัด |
สภาพแวดล้อมและเชลล์
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
env
|
|
env | grep PATH |
var=value | แสดงตัวแปร environment ทั้งหมด; ใช้ pipe กับ grep เพื่อกรอง |
export
|
|
export NODE_ENV=production |
ตั้งตัวแปรแล้ว | ตั้งค่าตัวแปร environment สำหรับ session ปัจจุบันและโปรเซสลูก |
echo $VAR
|
|
echo $HOME |
ค่า | แสดงค่าตัวแปร; ใช้ ${VAR} เพื่อแยกแยะในสตริง |
which
|
|
which node |
พาธ | แสดงพาธเต็มของไฟล์ executable ของคำสั่ง |
alias
|
|
alias ll='ls -la' |
ทางลัด | สร้างชื่อย่อสำหรับคำสั่ง; เพิ่มใน ~/.bashrc เพื่อให้คงอยู่ถาวร |
source
|
|
source ~/.bashrc |
โหลดใหม่แล้ว | รันไฟล์ใน context ของ shell ปัจจุบัน (หรือใช้: . ~/.bashrc) |
history
|
!N, !! |
history | tail -20 |
รายการคำสั่ง | แสดงประวัติคำสั่ง; !! รันคำสั่งล่าสุดซ้ำ, !N รันคำสั่งที่ N |
อ้างอิง Git ด่วน
| คำสั่ง | ตัวเลือก | ตัวอย่าง | ผลลัพธ์ | คำอธิบาย |
|---|---|---|---|---|
git init
|
|
git init my-project |
สร้าง repo แล้ว | สร้าง Git repository ใหม่ในไดเรกทอรี |
git clone
|
--depth 1 |
git clone url |
clone repo แล้ว | clone repository ระยะไกล; --depth 1 สำหรับ shallow clone |
git status
|
-s |
git status -s |
การเปลี่ยนแปลง | แสดงสถานะ working tree; -s รูปแบบย่อ |
git add
|
-A, -p |
git add -p |
staged แล้ว | เพิ่มการเปลี่ยนแปลงเข้า stage; -A ทั้งหมด, -p โหมด interactive patch |
git commit
|
-m, --amend |
git commit -m 'msg' |
commit แล้ว | commit การเปลี่ยนแปลงที่ staged; --amend แก้ไข commit ล่าสุด |
git push
|
-u origin |
git push -u origin main |
push แล้ว | push ไปยัง remote; -u กำหนด upstream tracking branch |
git pull
|
--rebase |
git pull --rebase |
ซิงค์แล้ว | ดึงและรวมการเปลี่ยนแปลงจาก remote; --rebase แทน merge |
git log
|
--oneline --graph |
git log --oneline -10 |
ประวัติ | แสดงประวัติ commit; --oneline แบบย่อ, --graph แสดง branch แบบ visual |
git stash
|
pop, list |
git stash pop |
กู้คืนแล้ว | บันทึกงานที่ยังไม่ commit ชั่วคราว; pop เพื่อกู้คืน |
git diff
|
--staged |
git diff --staged |
diff | แสดงการเปลี่ยนแปลง; --staged แสดงที่ staged แต่ยังไม่ commit |