Cat trong Linux viết tắt của concatenation (nối things lại với nhau) và là một trong những lệnh Linux hữu ích và đa năng nhất. Mặc dù không dễ thương như con mèo thật, lệnh cat Linux có thể hỗ trợ nhiều thao tác dùng string, file, và output.
Lệnh cat có ba mục đích chính liên quan đến file văn bản:
- Tạo (Create)
- Đọc/Hiển thị (Read/Display)
- Cập nhật/Sửa đổi (Update/Modify)
Chúng ta sẽ đi qua từng mục đích để chỉ các lệnh và tùy chọn liên quan.
Bắt đầu
Để bắt đầu, hãy tạo vài file tên foo.txt và spam.txt.
Hãy tạo foo.txt bằng lệnh cat > foo.txt từ dòng lệnh Linux.
Cảnh báo: Nếu đã có file tên foo.txt, lệnh cat dùng toán tử > SẼ ghi đè nó.
Từ đây prompt sẽ hiển thị dòng mới cho phép nhập text. Ví dụ này dùng:
FILE 1
foo
bar
baz
Để quay lại dòng lệnh và tạo file text, dùng CTRL + D.
Bây giờ tạo spam.txt với cat > spam.txt và nhập:
FILE 2
spam
ham
eggs
Nếu muốn append (thêm) text vào file, dùng cat >> FILENAME và nhập text muốn dùng.
Lưu ý toán tử >> dùng để append, khác với toán tử >.
Thay vì mở trình soạn thảo văn bản, chúng ta tạo được file text nhanh, đơn giản từ dòng lệnh, tiết kiệm thời gian và công sức.
Lời rút ra: dùng cat > FILENAME để tạo hoặc ghi đè file. Ngoài ra, dùng cat >> FILENAME để append vào file đã có. Sau khi gõ text xong, dùng CTRL + D để thoát editor, quay lại dòng lệnh, và tạo file.
Đọc file (Reading Rainbow)
Bây giờ đã tạo xong, hãy xem chúng ta tạo được gì.
Chú ý lệnh sau không có toán tử > hay >>, chỉ có cat và tên file.
Lệnh cat foo.txt hiển thị:
FILE 1
foo
bar
baz
Vậy cat foo.txt cho phép đọc file, nhưng xem thêm có gì khác.
Giả sử muốn biết file đang làm việc có bao nhiêu dòng. Tùy chọn -n rất hữu ích.
Với lệnh cat -n foo.txt ta thấy độ dài file:
1 FILE 1
2 foo
3 bar
4 baz
Với -n ta biết số dòng file đang làm việc. Hữu ích khi lặp qua file độ dài cố định.
Nối file (ConCATenating files)
Ổn, ta thấy cat tạo và hiển thị file, nhưng nối (kết hợp) file thì sao?
Ví dụ này dùng file foo.txt và spam.txt. Nếu muốn xem nội dung cả hai file cùng lúc. Dùng lệnh cat lại, lần này cat foo.txt spam.txt.
cat foo.txt spam.txt cho kết quả:
FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs
Lưu ý lệnh trên chỉ HIỂN THỊ hai file. Lúc này chưa nối chúng thành file mới.
Để nối file thành file mới, dùng cat foo.txt spam.txt > fooSpam.txt cho kết quả vào file mới fooSpam.txt.
Dùng cat fooSpam.txt xuất ra terminal:
FILE 1
foo
bar
baz
FILE 2
spam
ham
eggs
Lệnh này cũng hữu ích khi muốn nối hơn hai file thành một file.
Lời rút ra: xem nhiều file với cat FILENAME1 FILENAME2.
Hơn nữa, nối nhiều file thành một file với lệnh cat FILENAME1 FILENAME2 > FILENAME3.
Các điều thú vị khác với Cat(s)
Giả sử làm việc với file và liên tục gặp lỗi trước cuối file – trông như file có nhiều dòng hơn dự kiến.
Để điều tra file sâu hơn và có thể giải quyết vấn đề, dùng tùy chọn -A. Tùy chọn -A sẽ hiển thị kết thúc dòng bằng $, ký tự tab bằng ^I, và các ký tự không in được khác.
Nếu xem file text không in được với cat nonPrintExample.txt có thể ra:
Đó là ổn nhưng có thể không kể hết câu chuyện về ký tự hoặc string gây vấn đề.
Trong khi cat -A nonPrintExample.txt cho output hữu ích hơn:
^I^I$ $ ^L$ $ ^G^H^H^H^Y^I^N^O^P^@$ ^@^@^[g^[f^[d^[g^[6^[5^[4^[6^[=$ $ $ ^X$
Ở đây, ta có biểu diễn rõ ràng hơn về chuyện gì xảy ra giữa tab, line feed, return, và các ký tự khác.
Lời rút ra: cat -A FILENAME cho chi tiết sâu hơn về file đang làm việc.
Bài viết này cung cấp tổng quan tốt về lệnh cat, những gì nó làm được, và chức năng của nó.