Lệnh cat (viết tắt của *concatenate*) là một trong những công cụ cơ bản và mạnh mẽ nhất trong môi trường dòng lệnh Linux, dùng để đọc, ghi, nối và hiển thị nội dung tệp tin. Cú pháp tổng quát:
cat [tùy_chọn] [tên_tệp...]
Khi không cung cấp tên tệp hoặc sử dụng ký hiệu -, cat sẽ đọc dữ liệu từ đầu vào chuẩn (stdin). Lưu ý: Với tệp lớn, đầu ra có thể cuộn nhanh khiến người dùng khó theo dõi — do đó thường kết hợp với các công cụ như less, more, hoặc chuyển hướng sang tệp để phân tích sau.
Các tùy chọn phổ biến
-n: Đánh số tất cả các dòng xuất ra (kể cả dòng trống)-b: Chỉ đánh số các dòng không rỗng-E: Hiển thị ký tự$ở cuối mỗi dòng — hữu ích để phát hiện khoảng trắng thừa hoặc dòng trống-T: Thay thế ký tự tab bằng chuỗi^I-s: Rút gọn nhiều dòng trống liên tiếp thành một dòng duy nhất-A: Tương đương-vET, hiển thị tất cả ký tự không in được dưới dạng ký hiệu kiểm soát
Một số ví dụ minh họa
Tạo tệp mới bằng cách nhập trực tiếp qua stdin:
$ cat > mot_dong.txt << 'EOF'
Dòng đầu tiên
EOF
$ cat mot_dong.txt
Dòng đầu tiên
Nối nhiều tệp thành một:
$ echo "Nội dung A" > a.txt
$ echo "Nội dung B" > b.txt
$ cat a.txt b.txt > ab.txt
$ cat ab.txt
Nội dung A
Nội dung B
Đánh số dòng — phân biệt giữa -n và -b:
$ cat > co_khoang_trang.txt << 'EOF'
Dòng 1
Dòng 2
Dòng 3
EOF
$ cat -n co_khoang_trang.txt
1 Dòng 1
2
3 Dòng 2
4
5
6 Dòng 3
$ cat -b co_khoang_trang.txt
1 Dòng 1
2 Dòng 2
3 Dòng 3
Loại bỏ dòng trống dư thừa:
$ cat -s co_khoang_trang.txt
Dòng 1
Dòng 2
Dòng 3
Hiển thị ký tự kết thúc dòng rõ ràng:
$ cat -E co_khoang_trang.txt
Dòng 1$
$
Dòng 2$
$
$
Dòng 3$
Sử dụng cat để ghi nội dung động (ví dụ: giá trị biến shell):
$ cat > duong_dan.txt << "EOF"
THU_MUC=$(pwd)
EOF
$ cat duong_dan.txt
THU_MUC=/home/user
Lưu ý rằng lệnh tac — tên cat viết ngược — thực hiện chức năng đảo ngược thứ tự dòng trong tệp:
$ tac ab.txt
Nội dung B
Nội dung A
Cuối cùng, để nhập nội dung tương tác và kết thúc bằng tín hiệu dừng (không phải EOF), bạn có thể dùng tổ hợp phím Ctrl+D (EOF) hoặc Ctrl+C để hủy — tùy vào ngữ cảnh xử lý tín hiệu của shell.