Lệnh
cat (viết tắt của concatenate) là một trong những công cụ dòng lệnh được sử dụng phổ biến nhất trên các hệ thống Unix và Linux. Chức năng chính của nó là đọc dữ liệu từ tệp và xuất ra màn hình hoặc chuyển hướng đến một tệp khác.
1. Cú pháp và các tùy chọn cơ bản
Cú pháp tổng quát của lệnh như sau:
cat [tùy_chọn] [tệp_tin...]
Dưới đây là các tham số thường dùng để thay đổi cách hiển thị nội dung:
| Tùy chọn |
Mô tả chi tiết |
-n |
Đánh số thứ tự tất cả các dòng khi xuất dữ liệu. |
-b |
Đánh số dòng nhưng bỏ qua các dòng trống. |
-s |
Nén nhiều dòng trống liên tiếp thành một dòng duy nhất. |
-E |
Hiển thị ký tự $ tại vị trí kết thúc mỗi dòng. |
-T |
Thay thế các ký tự Tab bằng biểu tượng ^I. |
-A |
Hiển thị tất cả các ký tự ẩn (tương đương với -vET). |
2. Các thao tác đọc tệp tin
Xem nội dung một hoặc nhiều tệp
Để liệt kê nội dung của tệp
server.log ra terminal:
cat server.log
Để xem đồng thời nội dung của nhiều tệp theo thứ tự:
cat part1.txt part2.txt
Hiển thị kèm số dòng
Sử dụng tùy chọn
-n để dễ dàng theo dõi vị trí các dòng mã hoặc log:
cat -n script.sh
3. Khởi tạo và ghi đè nội dung tệp
Tạo tệp mới từ dòng lệnh
Bạn có thể tạo nhanh một tệp và nhập nội dung trực tiếp. Nhấn
Ctrl+D để kết thúc việc nhập dữ liệu:
cat > danh_sach.txt
Nguyen Van A
Tran Thi B
Ghi thêm dữ liệu vào tệp hiện có
Sử dụng toán tử
>> để nối thêm nội dung vào cuối tệp mà không làm mất dữ liệu cũ:
cat >> danh_sach.txt
Le Van C
4. Sao chép và gộp tệp tin
Sao chép nội dung
Chuyển toàn bộ dữ liệu từ tệp nguồn sang tệp đích:
cat source.txt > backup.txt
Gộp nhiều tệp thành một
Lệnh này rất hữu ích khi bạn muốn nối các tệp log hoặc các phần của một tệp văn bản lớn:
cat intro.md body.md conclusion.md > full_document.md
5. Kết hợp với các lệnh khác qua đường ống (Pipe)
Lệnh
cat thường đóng vai trò là điểm bắt đầu trong chuỗi xử lý dữ liệu:
# Tìm kiếm từ khóa "ERROR" trong tệp log
cat system.log | grep "ERROR"
# Xem 20 dòng đầu tiên của tệp
cat data.csv | head -n 20
# Phân trang nội dung tệp quá lớn
cat long_text.txt | less
6. Kỹ thuật nâng cao
Xóa sạch nội dung tệp
Một cách nhanh chóng để đưa kích thước tệp về 0 mà không cần xóa tệp:
cat /dev/null > temp_data.txt
Sử dụng HereDoc để tạo tệp cấu hình
Đây là cách phổ biến trong script để tạo nội dung đa dòng:
cat << EOF > config.yaml
version: '3'
services:
web:
image: nginx:latest
EOF
7. Những lưu ý quan trọng
- Hiệu năng: Tránh dùng
cat để đọc các tệp tin có dung lượng hàng GB vì nó sẽ đẩy toàn bộ dữ liệu ra buffer của terminal, gây treo máy. Hãy dùng less hoặc tail thay thế.
- Tệp nhị phân: Không nên dùng
cat với các tệp thực thi hoặc tệp ảnh (.png, .exe), vì nó sẽ in ra các ký tự rác làm hỏng hiển thị của terminal.
- An toàn dữ liệu: Cẩn thận khi sử dụng toán tử
> vì nó sẽ ghi đè hoàn toàn nội dung cũ mà không có cảnh báo.