Các lệnh Linux cơ bản được chia theo nhóm: điều hướng (pwd, ls, cd), thao tác tệp (cp, mv, rm, mkdir), quyền truy cập (chmod, chown), gói (apt), tiến trình (ps, top, kill), tìm kiếm và xử lý văn bản (find, grep, sed, awk), mạng (ip, ss, curl) và dịch vụ (systemctl, journalctl). Dưới đây là các bảng lệnh kèm ví dụ, đủ cho phần lớn công việc hằng ngày trong terminal.
Bảng tóm tắt lệnh Linux này được sắp xếp theo nhóm công việc: tìm một tệp, cài một gói, kết thúc một tiến trình bị treo, lấy một dòng từ nhật ký, kiểm tra một cổng. Các lệnh đã được kiểm tra trên Ubuntu và Debian; hầu hết cũng chạy được trên các bản phân phối khác, chỉ khác ở trình quản lý gói.
Trợ giúp và gợi ý
| Lệnh | Tác dụng |
man ls | hướng dẫn đầy đủ của lệnh, thoát bằng q, tìm kiếm bằng /từ-khóa |
ls --help | trợ giúp ngắn về các tùy chọn |
type cd | cho biết đây là lệnh tích hợp, alias hay tệp |
which python3 | đường dẫn tới tệp thực thi |
history | lịch sử lệnh; !123 chạy lại lệnh số 123 |
Ctrl+R | tìm trong lịch sử |
Ctrl+C / Ctrl+D | ngắt lệnh / đóng shell |
Điều hướng hệ thống tệp
| Lệnh | Tác dụng |
pwd | thư mục hiện tại |
ls -la | tất cả tệp, kể cả tệp ẩn, kèm quyền và kích thước |
ls -lh | kích thước dễ đọc (K, M, G) |
ls -lt | sắp xếp theo thời gian sửa đổi |
cd /var/log | chuyển tới đường dẫn tuyệt đối |
cd .. / cd ~ / cd - | lên một cấp / về thư mục cá nhân / về thư mục trước đó |
tree -L 2 | cây thư mục sâu 2 cấp (gói tree) |
Làm việc với tệp và thư mục
| Lệnh | Tác dụng |
touch file.txt | tạo tệp rỗng hoặc cập nhật thời gian sửa đổi |
mkdir -p a/b/c | tạo thư mục cùng các thư mục cha |
cp file.txt backup.txt | sao chép tệp |
cp -r src/ dst/ | sao chép thư mục đệ quy |
mv old.txt new.txt | đổi tên hoặc di chuyển |
rm file.txt | xóa tệp (không có thùng rác) |
rm -r dir/ | xóa thư mục cùng nội dung; -f — không hỏi lại, cẩn thận |
rmdir dir | xóa thư mục rỗng |
ln -s /opt/app/current app | liên kết mềm (symbolic link) |
stat file.txt | chi tiết: kích thước, quyền, inode, ngày giờ |
file image.bin | xác định loại tệp theo nội dung |
Xem nội dung
| Lệnh | Tác dụng |
cat file | in toàn bộ tệp |
less file | xem từng trang, tìm bằng /, thoát bằng q |
head -n 20 file | 20 dòng đầu |
tail -n 50 file | 50 dòng cuối |
tail -f /var/log/syslog | theo dõi tệp theo thời gian thực |
wc -l file | số dòng |
diff a.conf b.conf | khác biệt giữa hai tệp |
Quyền và chủ sở hữu
| Lệnh | Tác dụng |
chmod +x script.sh | cho phép thực thi |
chmod 644 file | rw-r--r--: chủ sở hữu ghi, những người khác đọc |
chmod 755 dir | rwxr-xr-x: thường dùng cho thư mục và script |
chmod 600 ~/.ssh/id_ed25519 | chỉ chủ sở hữu: dùng cho khóa riêng tư |
sudo chown www-data:www-data file | đổi chủ sở hữu và nhóm |
sudo chown -R alice /srv/app | đổi chủ sở hữu đệ quy |
id | UID, GID và các nhóm của bạn |
sudo -i | mở shell của root |
sudo usermod -aG docker alice | thêm người dùng vào nhóm |
Gói phần mềm (apt, Debian và Ubuntu)
| Lệnh | Tác dụng |
sudo apt update | làm mới danh sách gói từ kho |
sudo apt upgrade | nâng cấp các gói đã cài |
sudo apt install nginx | cài một gói |
sudo apt remove nginx | gỡ, giữ lại cấu hình; purge — gỡ cùng cấu hình |
sudo apt autoremove | gỡ các phụ thuộc không còn dùng |
apt search htop | tìm gói |
apt show nginx | mô tả và phiên bản |
dpkg -l | grep nginx | kiểm tra gói đã cài chưa |
dpkg -L nginx | gói đã cài những tệp nào |
Trên RHEL, Fedora, Rocky Linux, các lệnh tương ứng là dnf install, dnf remove, dnf upgrade, rpm -qa.
Môi trường và hồ sơ shell
| Lệnh | Tác dụng |
echo $PATH | shell tìm chương trình ở những thư mục nào |
env | tất cả biến môi trường |
export APP_ENV=prod | đặt biến cho phiên hiện tại và các tiến trình con |
alias ll='ls -la' | lệnh viết tắt |
source ~/.bashrc | tải lại hồ sơ mà không cần đăng nhập lại |
crontab -e / crontab -l | sửa / xem các tác vụ cron |
Tiến trình
| Lệnh | Tác dụng |
ps aux | tất cả tiến trình kèm người dùng, CPU và bộ nhớ |
ps aux | grep nginx | tìm một tiến trình |
pgrep -a nginx | PID và dòng lệnh theo tên |
top / htop | tải hệ thống theo thời gian thực |
kill 1234 | yêu cầu tiến trình kết thúc (SIGTERM) |
kill -9 1234 | buộc kết thúc (SIGKILL) — biện pháp cuối cùng |
pkill -f "python app.py" | kết thúc theo phần khớp của dòng lệnh |
command &, jobs, fg | chạy nền và quản lý công việc |
nohup ./job.sh & | tiến trình tiếp tục chạy sau khi đóng terminal |
free -h | bộ nhớ và swap |
uptime | thời gian hoạt động và tải trung bình |
strace -p 1234 | các lời gọi hệ thống của tiến trình |
Dịch vụ và nhật ký (systemd)
| Lệnh | Tác dụng |
systemctl status nginx | trạng thái dịch vụ và các dòng nhật ký gần nhất |
sudo systemctl start|stop|restart nginx | khởi động, dừng, khởi động lại |
sudo systemctl reload nginx | tải lại cấu hình mà không dừng dịch vụ |
sudo systemctl enable --now nginx | bật tự khởi động và chạy ngay |
systemctl --failed | các unit bị lỗi |
journalctl -u nginx -f | nhật ký dịch vụ theo thời gian thực |
journalctl -u nginx --since "1 hour ago" | nhật ký trong một giờ qua |
journalctl -p err -b | các lỗi kể từ lần khởi động hiện tại |
Tìm tệp
| Lệnh | Tác dụng |
find /var/log -name "*.log" | tìm theo tên |
find . -type f -mtime -1 | các tệp được sửa trong 24 giờ qua |
find / -size +500M 2>/dev/null | tệp lớn, ẩn các lỗi truy cập |
find . -name "*.tmp" -delete | tìm và xóa |
du -sh * | kích thước của từng mục trong thư mục |
df -h | dung lượng trống trên các hệ thống tệp |
Tìm kiếm và xử lý văn bản: grep, sed, awk, jq
| Lệnh | Tác dụng |
grep "error" app.log | các dòng chứa từ khóa |
grep -i -n "error" app.log | không phân biệt hoa thường, kèm số dòng |
grep -r "listen" /etc/nginx/ | tìm đệ quy trong thư mục |
grep -v "DEBUG" app.log | các dòng không chứa từ khóa |
grep -c "500" access.log | số lần khớp |
grep -E "warn|error" app.log | biểu thức chính quy mở rộng |
sed 's/old/new/g' file | thay thế và in kết quả |
sed -i 's/8080/9090/' app.conf | thay thế ngay trong tệp |
sed -n '10,20p' file | in các dòng 10–20 |
awk '{print $1}' access.log | trường đầu tiên của mỗi dòng |
awk -F: '{print $1}' /etc/passwd | tên người dùng (phân tách bằng :) |
awk '$9 == 500' access.log | các dòng có trường thứ chín bằng 500 |
sort | uniq -c | sort -rn | đếm số lần lặp và sắp xếp theo tần suất |
cut -d, -f2 data.csv | cột thứ hai của CSV |
jq '.items[].name' data.json | lấy các trường từ JSON |
Ví dụ đường ống: mười địa chỉ IP gửi nhiều yêu cầu nhất tới nginx.
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
Chuyển hướng và đường ống
| Cấu trúc | Tác dụng |
cmd > out.txt | ghi kết quả vào tệp (ghi đè) |
cmd >> out.txt | ghi thêm vào cuối tệp |
cmd 2> err.txt | chuyển hướng lỗi |
cmd > all.log 2>&1 | kết quả và lỗi vào cùng một tệp |
cmd1 | cmd2 | chuyển kết quả của lệnh này làm đầu vào cho lệnh kia |
cmd | tee out.txt | hiển thị trên màn hình và lưu lại |
cmd1 && cmd2 | chạy lệnh thứ hai chỉ khi lệnh thứ nhất thành công |
cmd1 || cmd2 | chạy lệnh thứ hai nếu lệnh thứ nhất thất bại |
Lưu trữ nén
| Lệnh | Tác dụng |
tar -czf backup.tar.gz dir/ | đóng gói và nén gzip |
tar -xzf backup.tar.gz | giải nén |
tar -tzf backup.tar.gz | xem nội dung |
zip -r site.zip site/ / unzip site.zip | tệp zip |
Mạng
| Lệnh | Tác dụng |
ip a | giao diện mạng và địa chỉ IP |
ip r | bảng định tuyến |
ping -c 4 8.8.8.8 | kiểm tra một máy có truy cập được không |
ss -tulpn | các cổng đang mở và tiến trình sử dụng chúng |
dig example.com / nslookup example.com | truy vấn DNS |
curl -I https://example.com | chỉ header của phản hồi |
curl -s https://api.example.com | jq | gọi API và hiển thị JSON dễ đọc |
wget URL | tải tệp về |
traceroute example.com | đường đi của gói tin tới một máy |
ssh user@host | kết nối tới máy chủ |
ssh-keygen -t ed25519 | tạo cặp khóa SSH |
scp file user@host:/tmp/ | sao chép tệp lên máy chủ |
rsync -avz dir/ user@host:/srv/dir/ | đồng bộ thư mục |
sudo ufw status | các luật tường lửa |
Hệ thống và ổ đĩa
| Lệnh | Tác dụng |
uname -a | kernel và kiến trúc |
cat /etc/os-release | bản phân phối và phiên bản |
hostnamectl | tên máy và thông tin hệ thống |
lsblk | ổ đĩa và phân vùng |
sudo mount /dev/sdb1 /mnt | gắn một phân vùng |
who / w | ai đang đăng nhập vào hệ thống |
sudo reboot / sudo shutdown -h now | khởi động lại / tắt máy |
Tóm lại
Cho công việc hằng ngày, vài chục lệnh là đủ: ls, cd, cp, mv, rm, chmod, sudo, apt, ps, kill, systemctl, journalctl, grep, find, ss, curl và ssh. Hãy lưu bảng tóm tắt này và tham khảo khi cần, cho đến khi các lệnh đã thành phản xạ. Mọi nhóm lệnh đều được hướng dẫn thực hành trong khóa học Linux.
Làm sao thoát khỏi man hoặc less?
Nhấn q. Để tìm kiếm bên trong, gõ dấu gạch chéo và từ khóa; n chuyển tới kết quả tiếp theo.
Làm sao thoát khỏi trình soạn thảo vim?
Nhấn Esc, rồi gõ :q! và Enter để thoát không lưu, hoặc :wq để lưu và thoát. Người mới nên sửa tệp bằng nano cho dễ.
Vì sao rm -rf nguy hiểm?
Lệnh xóa ngay, không hỏi xác nhận và không có thùng rác, nên một lỗi về đường dẫn (ví dụ thừa dấu cách trước dấu sao) có thể xóa nhầm thư mục. Hãy kiểm tra đường dẫn bằng ls trước khi chạy.
Làm sao chạy lại lệnh vừa rồi với sudo?
Gõ sudo !! — shell sẽ thay thế toàn bộ lệnh trước đó.
Làm sao dừng một lệnh bị treo trong terminal?
Ctrl+C gửi tín hiệu ngắt. Nếu lệnh vẫn không phản hồi, tìm PID bằng ps hoặc pgrep trong một terminal khác rồi kết thúc bằng kill.