Linux là hệ điều hành mạnh mẽ, ổn định và được dùng rất nhiều trong lập trình, quản trị server, DevOps, bảo mật, cloud, container và cả máy tính cá nhân. Muốn dùng Linux hiệu quả, bạn nên nắm được các lệnh Linux cơ bản trong Terminal.
Bài viết này tổng hợp hơn 150 câu lệnh Linux thông dụng nhất, có giải thích ngắn gọn và ví dụ dễ hiểu. Bạn có thể dùng bài này như một “cheat sheet” để tra cứu nhanh khi làm việc với Ubuntu, Debian, Linux Mint, Fedora, CentOS, RHEL, Arch Linux, Alpine Linux hoặc các bản phân phối Linux phổ biến khác.
Linux Terminal là gì?
Terminal là giao diện dòng lệnh cho phép bạn giao tiếp với hệ điều hành Linux bằng cách nhập lệnh. Thay vì bấm chuột trong giao diện đồ họa, bạn có thể dùng Terminal để tạo thư mục, sao chép file, cài phần mềm, kiểm tra mạng, xem log, quản lý service hoặc xử lý hàng nghìn file cùng lúc.
Terminal thường được gọi bằng nhiều tên khác như: Command line, Shell, Console, CLI, Bash terminal.
Trên Ubuntu và nhiều bản Linux desktop, bạn có thể mở Terminal bằng tổ hợp phím: Ctrl + Alt + T
Cấu trúc cơ bản của một lệnh Linux
Một câu lệnh Linux thường có dạng:
1
command [option] [argument]
1
ls -lah /var/log
| Thành phần | Ý nghĩa |
|---|---|
ls |
Tên lệnh |
-lah |
Tùy chọn, còn gọi là option hoặc flag |
/var/log |
Đối tượng cần xử lý, thường là file, thư mục, user, service hoặc địa chỉ mạng |
Một ví dụ khác:
1
sudo apt update
| Thành phần | Ý nghĩa |
|---|---|
sudo |
Chạy lệnh với quyền quản trị |
apt |
Trình quản lý gói trên Ubuntu/Debian |
update |
Hành động cần thực hiện |
Lưu ý quan trọng trước khi dùng lệnh Linux
Trước khi học các lệnh Linux cơ bản, bạn nên nhớ vài nguyên tắc sau:
- Linux phân biệt chữ hoa và chữ thường.
File.txtvàfile.txtlà hai tên khác nhau. - Nhiều lệnh không hỏi lại khi xóa dữ liệu, đặc biệt là
rm -rf. - Lệnh bắt đầu bằng
sudocó thể thay đổi hệ thống, cài phần mềm, xóa file hệ thống hoặc chỉnh service. - Đường dẫn bắt đầu bằng
/là đường dẫn tuyệt đối, ví dụ/home/user/file.txt. - Dấu
~thường đại diện cho thư mục home của user hiện tại. - Nên dùng
man ten_lenhđể xem tài liệu chính thức của lệnh. - Không copy lệnh lạ trên mạng rồi chạy bằng
sudonếu chưa hiểu tác dụng.
Lệnh làm quen với Terminal
Đây là nhóm lệnh Linux cơ bản nhất, dùng để xem thông tin user, hệ thống, môi trường shell và trợ giúp.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
pwd |
Hiển thị thư mục hiện tại | pwd |
whoami |
Xem user đang đăng nhập | whoami |
id |
Xem UID, GID và group của user | id |
hostname |
Xem tên máy | hostname |
uname |
Xem thông tin kernel/hệ thống | uname -a |
date |
Xem ngày giờ hệ thống | date |
cal |
Hiển thị lịch | cal |
uptime |
Xem thời gian hệ thống đã chạy | uptime |
clear |
Xóa màn hình Terminal | clear |
reset |
Reset lại màn hình Terminal khi bị lỗi hiển thị | reset |
history |
Xem lịch sử lệnh đã chạy | history |
echo |
In chuỗi hoặc biến ra màn hình | echo $HOME |
printf |
In dữ liệu theo định dạng | printf "Xin chào\n" |
env |
Xem biến môi trường | env |
printenv |
In biến môi trường cụ thể | printenv PATH |
export |
Tạo/xuất biến môi trường | export APP_ENV=production |
source |
Nạp file cấu hình shell | source ~/.bashrc |
alias |
Tạo lệnh tắt | alias ll='ls -lah' |
unalias |
Xóa alias | unalias ll |
type |
Xem một lệnh là built-in, alias hay file thực thi | type cd |
which |
Xem đường dẫn file thực thi | which python3 |
whereis |
Tìm file binary, source, man page | whereis nginx |
command -v |
Kiểm tra lệnh có tồn tại không | command -v git |
man |
Mở tài liệu hướng dẫn của lệnh | man ls |
info |
Xem tài liệu GNU dạng info | info coreutils |
help |
Xem trợ giúp cho shell built-in | help cd |
whatis |
Mô tả ngắn về lệnh | whatis tar |
apropos |
Tìm lệnh theo từ khóa trong mô tả | apropos password |
exit |
Thoát khỏi shell hiện tại | exit |
logout |
Đăng xuất shell đăng nhập | logout |
Lệnh quản lý thư mục và file
Nhóm này dùng để di chuyển trong hệ thống file, tạo thư mục, sao chép, đổi tên, xóa, tạo liên kết và xem thông tin file.
Lệnh điều hướng thư mục
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
ls |
Liệt kê file và thư mục | ls |
ls -l |
Liệt kê chi tiết | ls -l |
ls -a |
Hiện cả file ẩn | ls -a |
ls -lah |
Hiện chi tiết, file ẩn, dung lượng dễ đọc | ls -lah |
cd |
Di chuyển thư mục | cd /var/log |
cd .. |
Lùi lên thư mục cha | cd .. |
cd ~ |
Về thư mục home | cd ~ |
cd - |
Quay lại thư mục trước đó | cd - |
tree |
Hiển thị cây thư mục | tree -L 2 |
Lưu ý: tree có thể chưa được cài sẵn. Trên Ubuntu/Debian, cài bằng sudo apt install tree.
Lệnh tạo và kiểm tra file/thư mục
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
mkdir |
Tạo thư mục | mkdir project |
mkdir -p |
Tạo thư mục lồng nhau | mkdir -p app/logs/2026 |
rmdir |
Xóa thư mục rỗng | rmdir old_folder |
touch |
Tạo file rỗng hoặc cập nhật thời gian sửa file | touch index.html |
stat |
Xem metadata của file | stat index.html |
file |
Xác định loại file | file image.png |
realpath |
Lấy đường dẫn tuyệt đối | realpath ./index.html |
readlink |
Xem đích của symbolic link | readlink link_name |
basename |
Lấy tên file từ đường dẫn | basename /var/log/syslog |
dirname |
Lấy thư mục cha từ đường dẫn | dirname /var/log/syslog |
Lệnh sao chép, di chuyển, đổi tên và xóa file
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
cp |
Sao chép file | cp a.txt b.txt |
cp -r |
Sao chép thư mục | cp -r source backup |
cp -i |
Hỏi trước khi ghi đè | cp -i a.txt b.txt |
cp -v |
Hiển thị quá trình copy | cp -v a.txt backup/ |
mv |
Di chuyển hoặc đổi tên file | mv old.txt new.txt |
mv file dir/ |
Di chuyển file vào thư mục | mv report.pdf ~/Documents/ |
rm |
Xóa file | rm old.txt |
rm -i |
Hỏi trước khi xóa | rm -i old.txt |
rm -r |
Xóa thư mục và nội dung bên trong | rm -r old_folder |
rm -rf |
Xóa cưỡng bức, rất nguy hiểm | rm -rf folder_name |
ln |
Tạo hard link | ln file.txt hardlink.txt |
ln -s |
Tạo symbolic link | ln -s /var/www/html site |
install |
Copy file và set quyền trong một bước | install -m 755 script.sh /usr/local/bin/ |
rename |
Đổi tên hàng loạt, tùy distro | rename 's/.txt/.bak/' *.txt |
shred |
Ghi đè nội dung file trước khi xóa | shred -u secret.txt |
truncate |
Cắt hoặc đặt kích thước file | truncate -s 0 app.log |
split |
Chia file lớn thành nhiều phần | split -b 100M big.iso part_ |
csplit |
Chia file theo pattern | csplit file.txt '/Chapter/' '{*}' |
dd |
Copy dữ liệu cấp thấp, thường dùng tạo image | dd if=/dev/sda of=disk.img bs=4M |
Cảnh báo: dd, rm -rf, mkfs, fdisk, parted là các lệnh có thể làm mất dữ liệu. Hãy kiểm tra kỹ đường dẫn trước khi chạy.
Lệnh xem, sửa và xử lý nội dung file
Đây là nhóm lệnh rất quan trọng khi đọc log, chỉnh file cấu hình, lọc dữ liệu hoặc xử lý text.
Lệnh xem nội dung file
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
cat |
In toàn bộ nội dung file | cat config.txt |
tac |
In nội dung file từ dưới lên | tac log.txt |
more |
Xem file từng trang | more long.txt |
less |
Xem file linh hoạt hơn more |
less /var/log/syslog |
head |
Xem phần đầu file | head file.txt |
head -n 20 |
Xem 20 dòng đầu | head -n 20 file.txt |
tail |
Xem phần cuối file | tail file.txt |
tail -n 50 |
Xem 50 dòng cuối | tail -n 50 app.log |
tail -f |
Theo dõi log theo thời gian thực | tail -f /var/log/nginx/access.log |
nl |
In file kèm số dòng | nl file.txt |
wc |
Đếm dòng, từ, ký tự | wc -l file.txt |
od |
Xem file ở dạng octal/hex | od -c file.bin |
hexdump |
Xem dữ liệu dạng hex | hexdump -C file.bin |
xxd |
Tạo/xem hexdump | xxd file.bin |
strings |
Lọc chuỗi đọc được trong file binary | strings program |
Lệnh chỉnh sửa file
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
nano |
Trình soạn thảo dễ dùng cho người mới | nano notes.txt |
vi |
Trình soạn thảo phổ biến trên Unix/Linux | vi config.txt |
vim |
Bản mở rộng mạnh hơn của vi | vim app.conf |
ed |
Trình soạn thảo dòng cổ điển | ed file.txt |
Mẹo nhanh với nano:
- Lưu file:
Ctrl + O - Thoát:
Ctrl + X - Tìm kiếm:
Ctrl + W
Mẹo nhanh với vim:
- Vào chế độ nhập: nhấn
i - Lưu và thoát: gõ
:wq - Thoát không lưu: gõ
:q!
Lệnh xử lý văn bản
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
grep |
Tìm chuỗi trong file hoặc output | grep "error" app.log |
grep -i |
Tìm không phân biệt hoa thường | grep -i "error" app.log |
grep -r |
Tìm đệ quy trong thư mục | grep -r "DB_HOST" . |
grep -n |
Hiện số dòng khớp | grep -n "root" /etc/passwd |
sed |
Sửa/lọc text theo dòng | sed 's/old/new/g' file.txt |
awk |
Xử lý text theo cột/trường | awk '{print $1}' access.log |
sort |
Sắp xếp dòng | sort names.txt |
sort -n |
Sắp xếp theo số | sort -n numbers.txt |
uniq |
Loại dòng trùng liên tiếp | `sort file.txt |
cut |
Cắt cột/ký tự | cut -d: -f1 /etc/passwd |
paste |
Ghép dòng từ nhiều file | paste a.txt b.txt |
tr |
Thay đổi hoặc xóa ký tự | `echo abc |
expand |
Đổi tab thành khoảng trắng | expand file.txt |
unexpand |
Đổi khoảng trắng thành tab | unexpand file.txt |
column |
Canh cột cho dễ đọc | column -t data.tsv |
fold |
Gói dòng theo độ rộng | fold -w 80 file.txt |
fmt |
Định dạng lại đoạn văn bản | fmt notes.txt |
tee |
Ghi output ra file và vẫn hiển thị màn hình | `echo ok |
diff |
So sánh hai file | diff old.txt new.txt |
cmp |
So sánh byte giữa hai file | cmp a.bin b.bin |
comm |
So sánh hai file đã sort | comm a.txt b.txt |
Lệnh tìm kiếm file, thư mục và nội dung
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
find |
Tìm file/thư mục theo điều kiện | find . -name "*.log" |
find -type f |
Tìm file thường | find . -type f |
find -type d |
Tìm thư mục | find . -type d |
find -mtime |
Tìm theo thời gian sửa | find . -mtime -7 |
find -size |
Tìm theo kích thước | find . -size +100M |
find -exec |
Chạy lệnh trên kết quả tìm được | find . -name "*.tmp" -exec rm {} \; |
locate |
Tìm nhanh bằng database | locate nginx.conf |
updatedb |
Cập nhật database cho locate |
sudo updatedb |
xargs |
Chuyển output thành argument cho lệnh khác | `find . -name *.log |
fzf |
Tìm kiếm tương tác trong Terminal | `find . -type f |
rg |
Tìm nội dung nhanh bằng ripgrep | rg "TODO" |
ag |
Tìm nội dung bằng The Silver Searcher | ag "function" |
Lưu ý: fzf, rg, ag thường cần cài thêm.
Lệnh phân quyền và sở hữu file
Linux quản lý file bằng quyền đọc, ghi, thực thi cho owner, group và others. Nhóm lệnh này rất quan trọng khi quản trị server.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
chmod |
Đổi quyền file/thư mục | chmod 755 script.sh |
chmod +x |
Thêm quyền thực thi | chmod +x deploy.sh |
chmod -R |
Đổi quyền đệ quy | chmod -R 755 public/ |
chown |
Đổi chủ sở hữu | sudo chown user:user file.txt |
chown -R |
Đổi owner đệ quy | sudo chown -R www-data:www-data /var/www/html |
chgrp |
Đổi group sở hữu | chgrp developers app.log |
umask |
Xem/đặt quyền mặc định khi tạo file | umask |
getfacl |
Xem ACL của file | getfacl file.txt |
setfacl |
Gán ACL chi tiết | setfacl -m u:john:rwx file.txt |
lsattr |
Xem thuộc tính mở rộng | lsattr file.txt |
chattr |
Đổi thuộc tính mở rộng | sudo chattr +i file.txt |
sudo |
Chạy lệnh với quyền admin | sudo systemctl restart nginx |
su |
Chuyển user | su - root |
passwd |
Đổi mật khẩu | passwd |
groups |
Xem group của user | groups username |
newgrp |
Chuyển group hiện tại | newgrp docker |
Ví dụ quyền phổ biến:
| Quyền | Ý nghĩa thường gặp |
|---|---|
644 |
File thường: owner đọc/ghi, người khác chỉ đọc |
755 |
Script/thư mục: owner đọc/ghi/chạy, người khác đọc/chạy |
700 |
Chỉ owner có toàn quyền |
600 |
File riêng tư, chỉ owner đọc/ghi |
Lệnh quản lý tiến trình
Tiến trình là chương trình đang chạy. Khi server chậm, app treo hoặc cần dừng service, bạn sẽ dùng nhóm lệnh này.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
ps |
Xem tiến trình hiện tại | ps |
ps aux |
Xem tất cả tiến trình chi tiết | ps aux |
top |
Xem tiến trình theo thời gian thực | top |
htop |
Giao diện tiến trình dễ dùng hơn top |
htop |
pgrep |
Tìm PID theo tên tiến trình | pgrep nginx |
pidof |
Lấy PID của chương trình | pidof sshd |
kill |
Gửi signal tới tiến trình | kill 1234 |
kill -9 |
Ép dừng tiến trình | kill -9 1234 |
pkill |
Dừng tiến trình theo tên | pkill nginx |
killall |
Dừng tất cả tiến trình theo tên | killall firefox |
nice |
Chạy lệnh với độ ưu tiên CPU | nice -n 10 command |
renice |
Đổi độ ưu tiên tiến trình đang chạy | renice -n 5 -p 1234 |
jobs |
Xem job trong shell hiện tại | jobs |
bg |
Đưa job chạy nền | bg %1 |
fg |
Đưa job về foreground | fg %1 |
nohup |
Chạy lệnh không bị dừng khi thoát shell | nohup python3 app.py & |
disown |
Tách job khỏi shell | disown %1 |
sleep |
Tạm dừng một khoảng thời gian | sleep 5 |
watch |
Lặp lại lệnh theo chu kỳ | watch -n 2 free -h |
timeout |
Giới hạn thời gian chạy lệnh | timeout 10s ping google.com |
time |
Đo thời gian chạy lệnh | time ls -R /usr |
Lệnh kiểm tra ổ đĩa, RAM và hệ thống file
Nhóm lệnh này thường dùng khi server hết dung lượng, RAM cao, mount ổ đĩa, kiểm tra phân vùng hoặc xử lý lỗi filesystem.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
df |
Xem dung lượng filesystem | df -h |
du |
Xem dung lượng file/thư mục | du -sh * |
free |
Xem RAM và swap | free -h |
lsblk |
Xem block device, ổ đĩa, phân vùng | lsblk |
blkid |
Xem UUID và loại filesystem | sudo blkid |
findmnt |
Xem các mount point | findmnt |
mount |
Mount thiết bị/thư mục | sudo mount /dev/sdb1 /mnt |
umount |
Unmount thiết bị/thư mục | sudo umount /mnt |
fdisk |
Quản lý bảng phân vùng | sudo fdisk -l |
parted |
Quản lý phân vùng nâng cao | sudo parted -l |
mkfs |
Tạo filesystem mới | sudo mkfs.ext4 /dev/sdb1 |
fsck |
Kiểm tra/sửa filesystem | sudo fsck /dev/sdb1 |
sync |
Ghi dữ liệu cache xuống đĩa | sync |
swapon |
Bật swap | sudo swapon /swapfile |
swapoff |
Tắt swap | sudo swapoff /swapfile |
lsof |
Xem file đang được tiến trình mở | lsof /var/log/app.log |
fuser |
Xem tiến trình đang dùng file/port | fuser -v /mnt |
Mẹo tìm thư mục chiếm dung lượng lớn:
1
du -sh * | sort -h
Trên Linux, tar, gzip, xz, zip là các công cụ rất hay gặp khi backup, deploy hoặc tải source code.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
tar |
Đóng gói file/thư mục | tar -cf backup.tar folder/ |
tar -x |
Giải nén file tar | tar -xf backup.tar |
tar -czf |
Tạo file .tar.gz |
tar -czf backup.tar.gz folder/ |
tar -xzf |
Giải nén .tar.gz |
tar -xzf backup.tar.gz |
tar -cJf |
Tạo file .tar.xz |
tar -cJf backup.tar.xz folder/ |
gzip |
Nén file bằng gzip | gzip file.txt |
gunzip |
Giải nén gzip | gunzip file.txt.gz |
zcat |
Xem file gzip không cần giải nén | zcat app.log.gz |
bzip2 |
Nén bằng bzip2 | bzip2 file.txt |
bunzip2 |
Giải nén bzip2 | bunzip2 file.txt.bz2 |
bzcat |
Xem file bzip2 | bzcat file.txt.bz2 |
xz |
Nén bằng xz | xz file.txt |
unxz |
Giải nén xz | unxz file.txt.xz |
xzcat |
Xem file xz | xzcat file.txt.xz |
zip |
Nén file/thư mục dạng zip | zip -r site.zip site/ |
unzip |
Giải nén zip | unzip site.zip |
7z |
Nén/giải nén nhiều định dạng | 7z x archive.7z |
Lệnh mạng trong Linux
Nhóm lệnh mạng giúp bạn kiểm tra IP, route, DNS, port, kết nối server, tải file và copy dữ liệu qua mạng.
Kiểm tra IP, route và kết nối
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
ip addr |
Xem địa chỉ IP | ip addr |
ip a |
Viết tắt của ip addr |
ip a |
ip link |
Xem network interface | ip link |
ip route |
Xem bảng định tuyến | ip route |
ip neigh |
Xem ARP/neighbor table | ip neigh |
ping |
Kiểm tra host có phản hồi không | ping 8.8.8.8 |
tracepath |
Truy vết đường đi gói tin | tracepath google.com |
traceroute |
Truy vết route, thường cần cài thêm | traceroute google.com |
ss |
Xem socket, port, kết nối | ss -tulpen |
netstat |
Lệnh cũ để xem kết nối mạng | netstat -tulpen |
nmcli |
Quản lý NetworkManager bằng CLI | nmcli device status |
hostnamectl |
Xem/đổi hostname | hostnamectl |
Gợi ý: Trên Linux hiện đại, nên ưu tiên ip thay cho ifconfig và ss thay cho netstat.
DNS và kiểm tra domain
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
dig |
Truy vấn DNS chi tiết | dig example.com |
nslookup |
Truy vấn DNS đơn giản | nslookup example.com |
host |
Xem thông tin DNS ngắn gọn | host example.com |
whois |
Xem thông tin đăng ký domain/IP | whois example.com |
Tải file, gọi API và kết nối remote
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
curl |
Gọi URL/API, tải dữ liệu | curl https://example.com |
curl -I |
Xem HTTP header | curl -I https://example.com |
wget |
Tải file từ Internet | wget https://example.com/file.zip |
ssh |
Đăng nhập server từ xa | ssh user@server_ip |
scp |
Copy file qua SSH | scp file.txt user@server:/tmp/ |
sftp |
Truyền file qua SFTP | sftp user@server |
rsync |
Đồng bộ file/thư mục | rsync -av folder/ user@server:/backup/ |
nc |
Netcat, kiểm tra port/gửi dữ liệu TCP/UDP | nc -vz example.com 443 |
telnet |
Kiểm tra kết nối TCP kiểu cũ | telnet example.com 80 |
nmap |
Quét port và dịch vụ mạng | nmap example.com |
Lưu ý: Chỉ dùng nmap trên hệ thống bạn sở hữu hoặc được phép kiểm tra.
Lệnh service, systemd và log
Nhiều bản phân phối Linux hiện đại dùng systemd để quản lý service. Với server, bạn sẽ thường dùng systemctl và journalctl.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
systemctl status |
Xem trạng thái service | systemctl status nginx |
systemctl start |
Khởi động service | sudo systemctl start nginx |
systemctl stop |
Dừng service | sudo systemctl stop nginx |
systemctl restart |
Khởi động lại service | sudo systemctl restart nginx |
systemctl reload |
Reload cấu hình nếu service hỗ trợ | sudo systemctl reload nginx |
systemctl enable |
Cho service tự chạy khi boot | sudo systemctl enable nginx |
systemctl disable |
Tắt tự chạy khi boot | sudo systemctl disable nginx |
systemctl list-units |
Liệt kê unit đang hoạt động | systemctl list-units |
systemctl --failed |
Xem unit bị lỗi | systemctl --failed |
service |
Quản lý service kiểu cũ/SysV | sudo service nginx restart |
journalctl |
Xem log systemd journal | journalctl |
journalctl -u |
Xem log của service | journalctl -u nginx |
journalctl -f |
Theo dõi log realtime | journalctl -f |
journalctl -b |
Xem log từ lần boot hiện tại | journalctl -b |
dmesg |
Xem log kernel | dmesg |
systemd-analyze |
Phân tích thời gian boot | systemd-analyze blame |
crontab |
Lên lịch chạy lệnh định kỳ | crontab -e |
at |
Lên lịch chạy một lần | `echo date |
batch |
Chạy job khi tải hệ thống thấp | batch |
shutdown |
Tắt máy/hẹn giờ tắt | sudo shutdown -h now |
reboot |
Khởi động lại | sudo reboot |
poweroff |
Tắt máy | sudo poweroff |
Ví dụ xem log Nginx bằng systemd:
1
journalctl -u nginx --since "1 hour ago"
Nhóm lệnh này dùng khi tạo tài khoản, phân quyền user, thêm user vào group hoặc kiểm tra ai đang đăng nhập.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
who |
Xem user đang đăng nhập | who |
w |
Xem user đang đăng nhập và lệnh họ đang chạy | w |
users |
Liệt kê user đang đăng nhập | users |
last |
Xem lịch sử đăng nhập | last |
lastlog |
Xem lần đăng nhập gần nhất của user | lastlog |
useradd |
Tạo user mới | sudo useradd -m john |
adduser |
Tạo user kiểu thân thiện hơn trên Debian/Ubuntu | sudo adduser john |
usermod |
Chỉnh thông tin user | sudo usermod -aG docker john |
userdel |
Xóa user | sudo userdel john |
groupadd |
Tạo group | sudo groupadd developers |
groupmod |
Sửa group | sudo groupmod -n dev developers |
groupdel |
Xóa group | sudo groupdel dev |
chage |
Quản lý hạn mật khẩu | sudo chage -l john |
passwd |
Đặt/đổi mật khẩu user | sudo passwd john |
Ví dụ thêm user vào group sudo:
1
sudo usermod -aG sudo john
Mỗi bản phân phối Linux dùng package manager khác nhau. Ubuntu/Debian dùng apt, Fedora/RHEL dùng dnf hoặc yum, Arch dùng pacman, Alpine dùng apk.
Ubuntu, Debian, Linux Mint: apt, apt-get, dpkg
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
apt update |
Cập nhật danh sách package | sudo apt update |
apt upgrade |
Nâng cấp package đã cài | sudo apt upgrade |
apt full-upgrade |
Nâng cấp có thể thay đổi dependency mạnh hơn | sudo apt full-upgrade |
apt install |
Cài package | sudo apt install nginx |
apt remove |
Gỡ package, giữ file cấu hình | sudo apt remove nginx |
apt purge |
Gỡ package và file cấu hình hệ thống | sudo apt purge nginx |
apt autoremove |
Gỡ package không còn cần thiết | sudo apt autoremove |
apt search |
Tìm package | apt search nginx |
apt show |
Xem thông tin package | apt show nginx |
apt list --installed |
Liệt kê package đã cài | apt list --installed |
apt-get |
Công cụ APT truyền thống | sudo apt-get update |
dpkg -i |
Cài file .deb |
sudo dpkg -i package.deb |
dpkg -l |
Liệt kê package đã cài | dpkg -l |
dpkg -r |
Gỡ package bằng dpkg | sudo dpkg -r package_name |
Fedora, RHEL, CentOS: dnf, yum, rpm
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
dnf check-update |
Kiểm tra cập nhật | sudo dnf check-update |
dnf update |
Cập nhật package | sudo dnf update |
dnf install |
Cài package | sudo dnf install nginx |
dnf remove |
Gỡ package | sudo dnf remove nginx |
dnf search |
Tìm package | dnf search nginx |
dnf info |
Xem thông tin package | dnf info nginx |
yum |
Trình quản lý package cũ hơn, vẫn gặp trên hệ RHEL/CentOS | sudo yum install nginx |
rpm -qa |
Liệt kê package RPM đã cài | rpm -qa |
rpm -ivh |
Cài package .rpm |
sudo rpm -ivh package.rpm |
rpm -e |
Gỡ package RPM | sudo rpm -e package_name |
Arch Linux: pacman
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
pacman -Syu |
Đồng bộ repo và nâng cấp hệ thống | sudo pacman -Syu |
pacman -S |
Cài package | sudo pacman -S nginx |
pacman -R |
Gỡ package | sudo pacman -R nginx |
pacman -Rs |
Gỡ package và dependency không cần nữa | sudo pacman -Rs nginx |
pacman -Ss |
Tìm package | pacman -Ss nginx |
pacman -Qi |
Xem thông tin package đã cài | pacman -Qi nginx |
pacman -Q |
Liệt kê package đã cài | pacman -Q |
Alpine Linux: apk
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
apk update |
Cập nhật index package | sudo apk update |
apk upgrade |
Nâng cấp package | sudo apk upgrade |
apk add |
Cài package | sudo apk add nginx |
apk del |
Gỡ package | sudo apk del nginx |
apk search |
Tìm package | apk search nginx |
apk info |
Xem package đã cài/thông tin package | apk info |
Package universal: snap và flatpak
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
snap install |
Cài app dạng Snap | sudo snap install code --classic |
snap list |
Liệt kê snap đã cài | snap list |
snap remove |
Gỡ snap | sudo snap remove package_name |
flatpak install |
Cài app dạng Flatpak | flatpak install flathub org.gimp.GIMP |
flatpak list |
Liệt kê Flatpak đã cài | flatpak list |
flatpak uninstall |
Gỡ Flatpak | flatpak uninstall app_id |
Lệnh bảo mật Linux nên biết
Các lệnh bảo mật giúp bạn quản lý quyền admin, firewall, SSH key, chứng chỉ, checksum và cơ chế bảo vệ hệ thống.
| Lệnh | Công dụng | Ví dụ |
|---|---|---|
sudo |
Chạy lệnh với quyền quản trị | sudo apt update |
visudo |
Sửa file sudoers an toàn | sudo visudo |
ufw |
Firewall đơn giản trên Ubuntu | sudo ufw status |
ufw allow |
Mở port | sudo ufw allow 22/tcp |
ufw enable |
Bật firewall | sudo ufw enable |
firewall-cmd |
Quản lý firewalld trên Fedora/RHEL | sudo firewall-cmd --list-all |
iptables |
Quản lý rule firewall kiểu cũ | sudo iptables -L |
nft |
Quản lý nftables | sudo nft list ruleset |
ssh-keygen |
Tạo SSH key | ssh-keygen -t ed25519 |
ssh-copy-id |
Copy SSH public key lên server | ssh-copy-id user@server |
gpg |
Mã hóa, ký và kiểm tra chữ ký | gpg --verify file.sig file |
openssl |
Làm việc với TLS, certificate, hash | openssl version |
sha256sum |
Tạo/kiểm tra SHA-256 checksum | sha256sum file.iso |
md5sum |
Tạo/kiểm tra MD5 checksum | md5sum file.iso |
sestatus |
Xem trạng thái SELinux | sestatus |
getenforce |
Xem chế độ SELinux | getenforce |
aa-status |
Xem trạng thái AppArmor | sudo aa-status |
fail2ban-client |
Quản lý Fail2ban | sudo fail2ban-client status |
Mẹo bảo mật cơ bản:
- Không bật đăng nhập SSH bằng root nếu không cần.
- Nên dùng SSH key thay vì mật khẩu.
- Luôn kiểm tra firewall trước khi public server.
- Không cấp quyền
777bừa bãi. - Không chạy script lạ bằng
curl ... | shnếu chưa kiểm tra nội dung.
Toán tử, pipe và chuyển hướng trong Linux
Ngoài lệnh riêng lẻ, bạn cần biết cách nối lệnh để làm việc hiệu quả hơn.
| Ký hiệu | Công dụng | Ví dụ |
|---|---|---|
| ` | ` | Pipe: chuyển output lệnh trước sang input lệnh sau |
> |
Ghi output ra file, ghi đè file cũ | echo hello > file.txt |
>> |
Ghi thêm output vào cuối file | echo hello >> file.txt |
< |
Lấy input từ file | sort < names.txt |
2> |
Chuyển stderr ra file | command 2> error.log |
&> |
Chuyển stdout và stderr ra file | command &> output.log |
&& |
Chạy lệnh sau nếu lệnh trước thành công | mkdir app && cd app |
| ` | ` | |
; |
Chạy nhiều lệnh liên tiếp | date; uptime; whoami |
& |
Chạy lệnh nền | sleep 60 & |
* |
Wildcard khớp nhiều ký tự | rm *.tmp |
? |
Wildcard khớp một ký tự | ls file?.txt |
{} |
Brace expansion | mkdir -p app/{logs,tmp,cache} |
$() |
Command substitution | echo "Today is $(date)" |
~ |
Thư mục home | cd ~ |
. |
Thư mục hiện tại | find . -name "*.txt" |
.. |
Thư mục cha | cd .. |
Ví dụ lọc 10 tiến trình dùng nhiều RAM nhất:
1
ps aux --sort=-%mem | head
1
grep -i "error" app.log > errors.txt
Tạo project mới và file README**
1
2
3
4
5
mkdir -p ~/projects/demo
cd ~/projects/demo
touch README.md
echo "# Demo Project" > README.md
cat README.md
1
find /var/log -type f -size +100M
1
du -sh * | sort -h
1
tar -czf website-backup.tar.gz /var/www/html
1
tar -xzf website-backup.tar.gz
1
tail -f /var/log/nginx/access.log
1
journalctl -u nginx -f
1
ss -tulpen | grep -E ':80|:443'
1
sudo systemctl restart nginx
1
2
sudo apt update
sudo apt upgrade
- Ubuntu/Debian:
sudo apt install git - Fedora/RHEL:
sudo dnf install git - Arch Linux:
sudo pacman -S git - Alpine Linux:
sudo apk add git
Copy file từ máy local lên server
1
scp backup.tar.gz user@server_ip:/home/user/
1
rsync -av --progress ./site/ user@server_ip:/var/www/html/
1
2
chmod +x deploy.sh
./deploy.sh
.tmp
1
find . -name "*.tmp" -type f -delete
1
grep -i "error" app.log | tail -n 20
Lệnh Linux có phân biệt chữ hoa chữ thường không?
Có. Linux phân biệt chữ hoa và chữ thường. Ví dụ File.txt, file.txt và FILE.txt là ba tên file khác nhau.
Người mới nên học lệnh Linux nào trước?
Bạn nên bắt đầu với pwd, ls, cd, mkdir, touch, cp, mv, rm, cat, less, grep, find, chmod, sudo, ps, top, df, du, free, ip, ping, ssh và systemctl.
sudo là gì?
sudo cho phép chạy lệnh với quyền quản trị. Đây là lệnh mạnh, nên chỉ dùng khi bạn hiểu lệnh phía sau sẽ làm gì.
Khác nhau giữa apt update và apt upgrade là gì?
apt update cập nhật danh sách package từ repository. apt upgrade nâng cấp các package đã cài lên phiên bản mới hơn dựa trên danh sách vừa cập nhật.
Khác nhau giữa cp và mv là gì?
cp dùng để sao chép file hoặc thư mục. mv dùng để di chuyển hoặc đổi tên file/thư mục.
Khác nhau giữa find và locate là gì?
find tìm trực tiếp trong filesystem theo điều kiện nên linh hoạt nhưng có thể chậm. locate tìm bằng database đã tạo trước nên nhanh, nhưng kết quả có thể chưa cập nhật nếu database cũ.
ss và netstat khác nhau thế nào?
ss là công cụ hiện đại để xem socket và kết nối mạng. netstat là công cụ cũ thuộc bộ net-tools, vẫn gặp trên nhiều hệ thống nhưng thường được thay thế bằng ss.
chmod 755 nghĩa là gì?
chmod 755 nghĩa là owner có quyền đọc, ghi, thực thi; group và others có quyền đọc, thực thi. Quyền này thường dùng cho thư mục hoặc script cần chạy.
Có nên dùng chmod 777 không?
Không nên dùng bừa bãi. chmod 777 cho mọi người quyền đọc, ghi và thực thi, có thể gây rủi ro bảo mật. Chỉ dùng khi bạn hiểu rõ lý do.
Lệnh rm -rf có nguy hiểm không?
Có. rm -rf xóa file/thư mục đệ quy và không hỏi lại. Nếu chạy sai đường dẫn, bạn có thể mất dữ liệu nghiêm trọng.
Kết luận
Nắm vững các lệnh Linux cơ bản giúp bạn thao tác nhanh hơn, quản trị server tốt hơn và hiểu sâu hơn cách hệ điều hành Linux hoạt động. Với người mới, hãy bắt đầu từ nhóm lệnh điều hướng, quản lý file, xem log, tìm kiếm và phân quyền. Khi đã quen, bạn có thể học tiếp các lệnh về tiến trình, mạng, service, package manager và bảo mật.
Cách học hiệu quả nhất là mở Terminal và thực hành mỗi ngày. Bạn không cần học thuộc tất cả lệnh ngay lập tức, nhưng nên biết lệnh nào dùng để làm gì và biết cách tra cứu bằng man, help, whatis hoặc apropos.
