Các lệnh xử lý tệp tin
touch file # Tạo tệp trống
rm -rf tên_thư_mục # Xóa thư mục không rỗng mà không xác nhận (-r: đệ quy, -f: buộc)
dos2unix # Chuyển định dạng văn bản từ Windows sang Linux
unix2dos # Chuyển định dạng văn bản từ Linux sang Windows
enca tên_tệp # Kiểm tra mã hóa ký tự; cài đặt bằng yum install -y enca
md5sum # Hiển thị giá trị MD5
ln tệp_gốc tệp_mục_tiêu # Tạo liên kết cứng
ln -s tệp_gốc tệp_mục_tiêu # Tạo liên kết mềm
readlink -f /data # Xem đường dẫn thực sự của một liên kết
cat file | nl | less # Xem nội dung có số dòng và hỗ trợ cuộn trang (nhấn q để thoát)
head # Xem phần đầu tệp
head -c 10m # Trích xuất 10MB dữ liệu từ đầu tệp
split -C 10M # Cắt tệp thành các phần nhỏ 10MB
tail -f file # Theo dõi nhật ký theo thời gian thực
file # Kiểm tra loại tệp
umask # Điều chỉnh quyền mặc định
uniq # Loại bỏ các dòng trùng lặp
uniq -c # Đếm số lần xuất hiện của từng dòng trùng
uniq -u # Chỉ hiển thị các dòng không trùng
paste a b # Gộp hai tệp với tab làm dấu phân cách
paste -d'+' a b # Gộp hai tệp với dấu '+' làm dấu phân cách
paste -s a # Gộp nhiều dòng thành một dòng dùng tab
chattr +i /etc/passwd # Đặt thuộc tính chống thay đổi
more # Trình xem nội dung theo từng trang xuống dưới
locate chuỗi # Tìm kiếm tệp
wc -l file # Đếm số dòng trong tệp
cp filename{,.bak} # Sao lưu nhanh một tệp
\cp a b # Sao chép mà không hỏi xác nhận (bỏ qua alias cp -i)
rev # Đảo ngược thứ tự các ký tự trong dòng
comm -12 2 3 # So sánh các dòng giữa hai tệp
iconv -f gbk -t utf8 gốc.txt > mới.txt # Chuyển đổi mã hóa ký tự
rename mẫu_cũ mẫu_mới tệp # Đổi tên hàng loạt, hỗ trợ biểu thức chính quy
watch -d -n 1 'df; ls -FlAt /đường_dẫn' # Theo dõi thay đổi mới nhất trong thư mục
cp -v /dev/dvd /rhel4.6.iso # Tạo bản sao hình ảnh đĩa
diff suzu.c suzu2.c > sz.patch # Tạo bản vá
patch suzu.c < sz.patch # Áp dụng bản vá
Sắp xếp với lệnh sort
-t ký_tự # Chỉ định ký tự phân cách trường khi sắp xếp
-n # Sắp xếp theo giá trị số
-r # Sắp xếp theo thứ tự nghịch đảo
-f # Bỏ qua phân biệt chữ hoa/thường khi sắp xếp
-d # Chỉ xét chữ cái, chữ số và khoảng trắng, bỏ qua các ký tự khác
-c # Kiểm tra tệp đã được sắp xếp chưa
-b # Bỏ qua khoảng trắng ở đầu mỗi dòng
-M # Sắp xếp theo tên tháng rút gọn (Jan, Feb,...)
-k trường # Chỉ định trường dùng để sắp xếp
-m # Hợp nhất nhiều tệp đã được sắp xếp
+start-end # Sắp xếp theo khoảng trường chỉ định
-o tệp # Lưu kết quả sắp xếp vào tệp
sort -n # Sắp xếp tăng dần theo số
sort -nr # Sắp xếp giảm dần theo số
sort -u # Lọc các dòng trùng
sort -m a.txt c.txt # Hợp nhất nội dung hai tệp
sort -n -t' ' -k 2 -k 3 a.txt # Sắp xếp theo trường 2, nếu trùng thì dùng trường 3
sort -n -t':' -k 3r a.txt # Dùng dấu : làm phân cách, sắp xếp trường 3 theo thứ tự giảm dần
sort -k 1.3 a.txt # Bắt đầu sắp xếp từ ký tự thứ 3 trở đi
sort -t" " -k 2n -u a.txt # Sắp xếp theo trường 2, xóa dòng trùng nếu có
Tìm kiếm với lệnh find
# Linux không có khái niệm "thời gian tạo"
# Access: Thời gian sử dụng gần nhất
# Modify: Thời gian sửa nội dung
# Change: Thời gian thay đổi trạng thái (quyền, chủ sở hữu)
# Thời gian tính theo khoảng 24 giờ
# -and: Phù hợp cả hai điều kiện
# -or: Phù hợp ít nhất một điều kiện
find /etc -name http # Tìm theo tên tệp
find . -type f # Tìm tệp theo loại
find / -perm # Tìm theo quyền truy cập
find / -user # Tìm theo chủ sở hữu
find / -group # Tìm theo nhóm sở hữu
find / -atime -n # Tìm tệp được truy cập trong n ngày gần đây
find / -atime +n # Tìm tệp được truy cập trước n ngày
find / -mtime -n # Tìm tệp nội dung thay đổi trong n ngày gần đây
find / -mtime +n # Tìm tệp nội dung thay đổi trước n ngày
find / -ctime +n # Tìm tệp trạng thái thay đổi trước n ngày
find / -ctime -n # Tìm tệp trạng thái thay đổi trong n ngày gần đây
find / -size +1000000c -print # Tìm tệp lớn hơn 1MB
find /etc -name "passwd*" -exec grep "xuesong" {} \; # Tìm tệp rồi truyền cho lệnh grep
find . -name 't*' -exec basename {} \; # Tìm tệp, chỉ lấy tên không lấy đường dẫn
find . -type f -name "err*" -exec rename err ERR {} \; # Đổi tên hàng loạt
find đường_dẫn -name *tên1* -or -name *tên2* # Tìm theo một trong các từ khóa
Trình soạn thảo Vim
gconf-editor # Công cụ cấu hình
/etc/vimrc # Đường dẫn tệp cấu hình
vim +24 file # Mở tệp tại dòng 24
vim file1 file2 # Mở nhiều tệp cùng lúc
vim -O2 file1 file2 # Chia màn hình dọc
vim -on file1 file2 # Chia màn hình ngang
sp tên_tệp # Chia cửa sổ theo chiều dọc
vsp tên_tệp # Chia cửa sổ theo chiều ngang
Ctrl+W [tác_vụ] # Điều khiển giữa các cửa sổ (c: đóng, =: đồng đều kích thước, +: tăng kích thước, h/j/k/l: di chuyển)
:n # Chuyển sang tệp tiếp theo
:2n # Chuyển sang tệp thứ hai
:N # Quay lại tệp trước đó
:rew # Về tệp đầu tiên
:set nu # Bật hiển thị số dòng
:set nonu # Tắt hiển thị số dòng
200G # Nhảy đến dòng 200
:nohl # Bỏ đánh dấu tìm kiếm
:set autoindent # Bật thụt lề tự động
:set ff # Xem định dạng tệp
:set binary # Chuyển sang định dạng Unix
Ctrl+U # Lật lên một trang
Ctrl+D # Lật xuống một trang
%s/từ1/từ2/g # Thay thế toàn bộ
X # Mã hóa tài liệu
Nén và giải nén
tar zxvpf gz.tar.gz -C /đường_dẫn # Giải nén tệp gz vào thư mục chỉ định
tar zcvpf /đường_dẫn/gz.tar.gz * # Nén thành gz (dùng đường dẫn tương đối tốt hơn)
tar zcf /đường_dẫn/gz.tar.gz * # Nén thành gz, không thông báo lỗi
tar ztvpf gz.tar.gz # Xem danh sách tệp trong gz
tar xvf 1.tar -C /thư_mục # Giải nén tệp tar
tar -cvf 1.tar * # Nén thành tar
tar tvf 1.tar # Xem danh sách tệp trong tar
tar -rvf 1.tar tên_tệp # Thêm tệp vào tar đã có
tar --exclude=/home/dmtsai -zcvf myfile.tar.gz /home/* /etc # Nén nhưng loại trừ thư mục chỉ định
tar -N "2005/06/01" -zcvf home.tar.gz /home # Chỉ nén những tệp trong /home mới hơn ngày 2005/06/01
tar -zcvfh home.tar.gz /home # Nén cả thư mục liên kết
zgrep từ_khóa 1.gz # Tìm trong tệp nén gz
bzip2 -dv 1.tar.bz2 # Giải nén bzip2
bzip2 -v 1.tar # Nén bằng bzip2
bzcat # Xem nội dung tệp bzip2
gzip A # Nén trực tiếp (tệp gốc bị xóa)
gunzip A.gz # Giải nén trực tiếp (tệp gốc bị xóa)
gzip -dv 1.tar.gz # Giải nén gzip thành tar
gzip -v 1.tar # Nén tar thành gz
unzip zip.zip # Giải nén zip
zip zip.zip * # Nén thành zip
rar a rar.rar *.jpg # Nén thành rar
unrar x rar.rar # Giải nén rar
7z a 7z.7z * # Nén bằng 7z
7z e 7z.7z # Giải nén 7z
Quản lý gói RPM
rpm -ivh lynx # Cài đặt gói rpm
rpm -e lynx # Gỡ cài đặt
rpm -e lynx --nodeps # Gỡ cài đặt bất chấp phụ thuộc
rpm -qa # Liệt kê tất cả gói đã cài
rpm -qa | grep lynx # Kiểm tra gói đã cài chưa
rpm -ql # Hiển thị đường dẫn các tệp trong gói
rpm -Uvh # Cập nhật gói
rpm --test lynx # Kiểm thử cài đặt
rpm -qc # Hiển thị tệp cấu hình của gói
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # Nhập khóa chữ ký rpm
Quản lý gói YUM
yum list # Liệt kê tất cả gói có sẵn
yum install tên_gói # Cài đặt gói và phụ thuộc
yum -y update # Cập nhật tất cả gói, hệ thống và kernel
yum -y update tên_gói # Cập nhật gói cụ thể
yum -y upgrade # Cập nhật phần mềm nhưng giữ nguyên phiên bản hệ thống
yum search mail # Tìm kiếm gói
yum grouplist # Danh sách nhóm gói
yum -y groupinstall "Virtualization" # Cài đặt nhóm gói
Thiết lập nguồn YUM tùy chỉnh
# Tìm gói tại: http://download.fedoraproject.org/pub/epel
wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm
Cài đặt từ mã nguồn
./configure --help # Xem tất cả tùy chọn biên dịch
./configure --prefix=/usr/local/ # Thiết lập đường dẫn cài đặt
make # Biên dịch
make install # Cài đặt
make clean # Dọn dẹp kết quả biên dịch
Biên dịch chương trình
- Perl: perl Makefile.PL; make; make test; make install
- Python: python file.py
- C: gcc -g hello.c -o hello
Quản lý tiến trình
ps -eaf # Xem tất cả tiến trình
kill -9 PID # Buộc dừng tiến trình theo PID
kill -15 PID # Yêu cầu dừng an toàn (phải có xử lý tín hiệu bên trong)
cmd & # Chạy lệnh nền
nohup cmd & # Chạy nền, không bị ảnh hưởng khi shell đóng
ctrl+z # Tạm dừng và đưa lệnh ra nền
jobs # Xem danh sách tác vụ nền
bg 2 # Tiếp tục chạy tác vụ nền đang tạm dừng
fg 2 # Đưa tác vụ nền về chế độ tiền cảnh
pstree # Hiển thị cây tiến trình
vmstat 1 9 # Báo cáo hiệu năng hệ thống mỗi giây, 9 lần
sar # Xem trạng thái CPU,...
lsof file # Hiển thị tất cả tiến trình mở tệp
lsof -i:32768 # Xem tiến trình đang dùng cổng 32768
renice +1 180 # Giảm độ ưu tiên của tiến trình 180 thêm 1 đơn vị
ps aux |grep -v USER | sort -nk +4 | tail # Hiển thị 10 tiến trình tiêu thụ RAM nhiều nhất
Phân tích mạng
- rz/sz: Tải lên/tải xuống tệp nhỏ qua SSH
- ifconfig eth0 down/up: Vô hiệu hóa/kích hoạt card mạng
- mii-tool em1: Kiểm tra cáp mạng có kết nối không
- traceroute: Đo số bước nhảy tới đích
- nslookup/dig: Tra cứu DNS
- curl -I: Xem header HTTP
- tcpdump: Bắt gói tin
- lynx: Duyệt web dạng văn bản
- wget: Tải tệp hoặc cả website
- rsync: Đồng bộ thư mục qua SSH
- mtr: Kết hợp ping và trace
Quản lý dịch vụ
- /etc/init.d/sendmail start/stop/status: Khởi động/dừng/xem trạng thái dịch vụ
- chkconfig tên_dịch_vụ on/off: Thiết lập khởi động cùng hệ thống
- chkconfig --list: Xem trạng thái khởi động của tất cả dịch vụ
SSH và bảo mật
- ssh user@host: Đăng nhập từ xa
- scp: Sao chép tệp qua SSH
- ssh-keygen: Tạo cặp khóa
- ssh-copy-id: Sao chép khóa công cộng
- sshfs: Gắn kết thư mục từ xa qua SSH
- iptables: Tường lửa, quản lý NAT, chuyển tiếp cổng
MySQL cơ bản
- mysql -h host -u user -p: Đăng nhập MySQL
- show databases/tables: Liệt kê cơ sở dữ liệu/bảng
- select/update/delete: Các thao tác truy vấn, cập nhật, xóa
- mysqldump: Sao lưu cơ sở dữ liệu
- grant/revoke: Cấp/thu hồi quyền
Một số mẹo hữu ích
- dialog: Tạo menu tương tác đẹp mắt
- expect: Tự động hóa các thao tác tương tác như nhập mật khẩu
- seq: Sinh dãy số, thường dùng trong vòng lặp
- tr: Dịch chuyển, xóa ký tự
- awk/sed: Xử lý văn bản mạnh mẽ