Lệnh cat trong Linux: Hướng dẫn sử dụng, ghép nối và tạo file mới

Bạn đã bao giờ cảm thấy cần xem nhanh nội dung của một file văn bản, hoặc ghép nối nhiều file cấu hình lại với nhau ngay trên cửa sổ dòng lệnh của Linux chưa? Đối với những người mới bắt đầu, việc thao tác với file trên terminal thường có vẻ phức tạp và khó khăn nếu không biết đến các công cụ phù hợp. Đôi khi, bạn chỉ muốn một cách đơn giản để kiểm tra file log, tạo một ghi chú nhanh hoặc gộp các đoạn mã mà không cần mở một trình soạn thảo văn bản nặng nề. Đây chính là lúc lệnh cat tỏa sáng. Lệnh cat là một trong những công cụ cơ bản và mạnh mẽ nhất trong kho vũ khí của người dùng Linux là gì. Nó không chỉ giúp bạn hiển thị nội dung file một cách dễ dàng mà còn có khả năng ghép nối và tạo file mới cực kỳ hiệu quả. Trong bài viết này, Bùi Mạnh Đức sẽ cùng bạn đi sâu vào tìm hiểu lệnh cat, từ những cú pháp cơ bản nhất cho đến các tham số nâng cao và những mẹo thực tế giúp bạn làm chủ công cụ này, qua đó tăng tốc quy trình làm việc trên Linux.

Giới thiệu và chức năng cơ bản của lệnh cat

Trước khi đi vào các ví dụ thực tế, chúng ta cần nắm vững những khái niệm nền tảng về lệnh cat và những gì nó có thể làm được. Hiểu rõ bản chất sẽ giúp bạn sử dụng công cụ này một cách linh hoạt và chính xác hơn.

Lệnh cat là gì?

cat là viết tắt của “concatenate” (ghép nối). Đây là một trong những lệnh được sử dụng phổ biến nhất trong các hệ điều hành dựa trên Unix như Linux. Mặc dù tên của nó gợi ý về chức năng chính là ghép nối file, nhưng cat thường được biết đến nhiều hơn với công dụng đơn giản là hiển thị nội dung của một hoặc nhiều file ra màn hình (standard output). Vì tính đơn giản và tốc độ, nó đã trở thành công cụ không thể thiếu cho bất kỳ ai làm việc thường xuyên với dòng lệnh, từ lập trình viên, quản trị viên hệ thống cho đến những người dùng thông thường. Về cơ bản, cat đọc dữ liệu từ các file theo tuần tự và ghi chúng ra đầu ra tiêu chuẩn.

Các chức năng cơ bản của lệnh cat

1. Hiển thị nội dung file trên màn hình: Đây là công dụng phổ biến nhất. Bạn chỉ cần gõ cat theo sau là tên file, và toàn bộ nội dung của file đó sẽ được in ra ngay lập tức trên cửa sổ terminal. Điều này cực kỳ tiện lợi khi bạn muốn xem nhanh một file cấu hình, một file log hoặc một đoạn mã nguồn mà không cần phải mở chúng trong một trình editor.

2. Ghép nối nhiều file: Đúng như tên gọi “concatenate”, cat cho phép bạn ghép nội dung của nhiều file lại với nhau. Bạn có thể hiển thị nội dung của chúng nối tiếp nhau trên màn hình hoặc chuyển hướng đầu ra để tạo thành một file mới duy nhất chứa tất cả nội dung đã được gộp lại.

3. Tạo file mới: Một chức năng ít người biết đến hơn nhưng không kém phần tiện dụng là cat có thể được dùng để tạo một file mới ngay từ dòng lệnh. Bằng cách chuyển hướng đầu vào từ bàn phím, bạn có thể gõ trực tiếp nội dung và lưu lại thành một file mà không cần dùng đến Bash là gì hay Linux Lite cho những tác vụ đơn giản.

Cách sử dụng lệnh cat để hiển thị nội dung file

Chức năng cơ bản và được sử dụng nhiều nhất của cat chính là xem nội dung file. Hãy cùng tìm hiểu cú pháp đơn giản nhất và một vài tham số hữu ích để tùy chỉnh cách hiển thị.

Cú pháp cơ bản hiển thị file

Để xem nội dung của một file, bạn chỉ cần sử dụng cú pháp vô cùng đơn giản: cat ten_file. Lệnh này sẽ đọc toàn bộ file và in ra màn hình terminal.

Giả sử chúng ta có một file tên là vi-du.txt với nội dung như sau:

Dong thu nhat.
Dong thu hai.

Dong thu tu.

Để xem nội dung file này, bạn chỉ cần chạy lệnh:
cat vi-du.txt

Kết quả trên màn hình sẽ hiển thị chính xác nội dung của file.

Hình minh họa

Đây là cách nhanh nhất để kiểm tra nội dung của các file văn bản nhỏ và vừa. Tuy nhiên, nếu file quá dài, nội dung sẽ trôi qua rất nhanh. Trong trường hợp đó, bạn có thể kết hợp cat với các lệnh khác như less hoặc more để xem từng trang một.

Hiển thị nội dung với tham số thường dùng

Lệnh cat trở nên mạnh mẽ hơn khi kết hợp với các tham số (options). Hai trong số các tham số phổ biến nhất dùng để hiển thị là -n-b, giúp bạn đánh số thứ tự các dòng.

Tham số -n (number): Tùy chọn này sẽ thêm số thứ tự vào đầu mỗi dòng, bao gồm cả những dòng trống.

Cú pháp: cat -n ten_file

Với file vi-du.txt ở trên, lệnh cat -n vi-du.txt sẽ cho ra kết quả:

     1  Dong thu nhat.
     2  Dong thu hai.
     3
     4  Dong thu tu.

Hình minh họa

Tham số -b (number-nonblank): Tương tự như -n, nhưng tham số này chỉ đánh số cho các dòng có nội dung, bỏ qua các dòng trống. Điều này rất hữu ích khi bạn chỉ quan tâm đến các dòng code hoặc dòng văn bản thực sự.

Cú pháp: cat -b ten_file

Áp dụng với cùng file vi-du.txt, lệnh cat -b vi-du.txt sẽ cho kết quả:

     1  Dong thu nhat.
     2  Dong thu hai.

     3  Dong thu tu.

Như bạn thấy, dòng trống thứ ba đã không được đánh số. Việc sử dụng -n-b giúp việc tham chiếu, gỡ lỗi và thảo luận về nội dung file trở nên dễ dàng và chính xác hơn rất nhiều.

Ghép nối nhiều file bằng lệnh cat

Đây chính là chức năng “concatenate” nguyên thủy của lệnh cat. Bạn có thể dễ dàng gộp nội dung từ nhiều file lại với nhau để xem trên màn hình hoặc lưu vào một file mới.

Cú pháp ghép file trực tiếp trên màn hình

Để hiển thị nội dung của nhiều file nối tiếp nhau, bạn chỉ cần liệt kê tên các file đó sau lệnh cat, cách nhau bởi dấu cách.

Cú pháp: cat file1.txt file2.txt ...

Giả sử chúng ta có hai file:

  • file1.txt chứa: Xin chao,
  • file2.txt chứa: the gioi Linux!

Khi chạy lệnh cat file1.txt file2.txt, nội dung của file2.txt sẽ được hiển thị ngay sau khi nội dung của file1.txt kết thúc.
Kết quả:

Xin chao,
the gioi Linux!

Hình minh họa

Tính năng này đặc biệt hữu ích khi bạn muốn xem các file log được chia nhỏ theo ngày hoặc các phần của một tài liệu một cách liền mạch mà không cần mở từng file riêng lẻ.

Tạo file mới từ nhiều file đã ghép

Thay vì chỉ hiển thị kết quả ra màn hình, bạn có thể lưu nội dung đã được ghép nối vào một file mới. Để làm điều này, chúng ta sử dụng toán tử chuyển hướng đầu ra > (redirection operator).

Cú pháp: cat file1.txt file2.txt > file_moi.txt

Toán tử > nói cho hệ thống biết rằng, thay vì in kết quả của lệnh cat ra màn hình, hãy ghi nó vào file được chỉ định.

Ví dụ, với hai file file1.txtfile2.txt như trên, lệnh sau sẽ tạo ra một file mới có tên là tong_hop.txt:
cat file1.txt file2.txt > tong_hop.txt

Sau khi lệnh thực thi, file tong_hop.txt sẽ được tạo ra và chứa nội dung:

Xin chao,
the gioi Linux!

Lưu ý quan trọng: Nếu file tong_hop.txt đã tồn tại từ trước, toán tử > sẽ ghi đè (overwrite) toàn bộ nội dung cũ của file đó. Hãy hết sức cẩn thận khi sử dụng toán tử này để tránh làm mất dữ liệu quan trọng. Nếu bạn chỉ muốn nối thêm nội dung vào cuối file đã có, hãy sử dụng toán tử >> (append).

Hình minh họa

để ghép nối và lưu vào file mới với lệnh cat”>

Tạo file mới từ lệnh cat

Ngoài việc đọc và ghép file, cat còn là một cách cực kỳ nhanh chóng để tạo các file văn bản đơn giản trực tiếp từ dòng lệnh mà không cần mở bất kỳ trình soạn thảo nào.

Cú pháp tạo file và nhập nội dung từ bàn phím

Để tạo một file mới, chúng ta tiếp tục sử dụng toán tử chuyển hướng >. Nhưng lần này, chúng ta không cung cấp bất kỳ file đầu vào nào cho cat.

Cú pháp: cat > ten_file.txt

Khi bạn chạy lệnh này, cat sẽ chờ đợi đầu vào từ bàn phím (standard input). Con trỏ chuột sẽ dừng lại ở một dòng trống, sẵn sàng để bạn nhập nội dung. Bạn có thể gõ một hoặc nhiều dòng văn bản, nhấn Enter để xuống dòng như bình thường.
Ví dụ, để tạo một file ghichu.txt:
cat > ghichu.txt

Sau đó bạn nhập:
Day la mot ghi chu nhanh.
Toi dang hoc cach su dung lenh cat.

Hình minh họa

để bắt đầu tạo một file mới”>

Lưu và thoát khỏi chế độ nhập nội dung

Sau khi đã nhập xong toàn bộ nội dung mong muốn, làm thế nào để báo cho cat biết rằng bạn đã hoàn tất và cần lưu file? Câu trả lời là sử dụng tổ hợp phím Ctrl + D.

Tổ hợp phím này gửi một tín hiệu “End of File” (EOF) đến cat, cho nó biết rằng không còn gì để đọc từ đầu vào nữa. Ngay sau khi bạn nhấn Ctrl + D trên một dòng mới, cat sẽ dừng lại, và nội dung bạn vừa gõ sẽ được lưu vào file ten_file.txt mà bạn đã chỉ định.

Quay lại ví dụ trên, sau khi gõ xong hai dòng, bạn nhấn Enter để xuống một dòng mới, sau đó nhấn Ctrl + D. Lệnh sẽ kết thúc, và file ghichu.txt sẽ được tạo ra với nội dung bạn đã nhập. Bạn có thể kiểm tra lại ngay bằng lệnh cat ghichu.txt. Đây là một kỹ thuật cực kỳ hữu ích để tạo các file cấu hình nhỏ, file ghi chú tạm thời, hoặc các file test một cách nhanh chóng.

Các cú pháp và tham số phổ biến của lệnh cat

Lệnh cat đi kèm với nhiều tham số (options) cho phép bạn tinh chỉnh đầu ra theo nhu-cầu. Nắm vững các tham số này sẽ giúp bạn khai thác tối đa sức mạnh của cat. Dưới đây là tổng hợp các tham số quan trọng và hữu ích nhất.

-n (–number): Đánh số thứ tự cho tất cả các dòng trong đầu ra, bao gồm cả dòng trống. Rất hữu ích khi cần tham chiếu đến một dòng cụ thể.

-b (–number-nonblank): Tương tự -n, nhưng chỉ đánh số cho các dòng không trống. Lựa chọn tuyệt vời khi bạn chỉ quan tâm đến các dòng có chứa dữ liệu hoặc mã lệnh.

-s (–squeeze-blank): Nén nhiều dòng trống liền kề thành một dòng trống duy nhất. Tham số này giúp cho đầu ra trở nên gọn gàng hơn, đặc biệt khi xem các file có nhiều khoảng trắng thừa.

-E (–show-ends): Hiển thị ký tự $ ở cuối mỗi dòng. Điều này giúp bạn dễ dàng phát hiện các khoảng trắng thừa ở cuối dòng (trailing whitespace), một yếu tố có thể gây ra lỗi trong các file cấu hình hoặc script.

-T (–show-tabs): Hiển thị các ký tự tab dưới dạng ^I. Tương tự như -E, tham số này rất hữu ích trong lập trình, giúp phân biệt rõ ràng giữa ký tự tab và một chuỗi các ký tự cách, vốn có thể ảnh hưởng đến việc thụt lề và cấu trúc của mã nguồn.

Bạn có thể kết hợp các tham số này với nhau. Ví dụ, cat -ns file.txt sẽ vừa đánh số tất cả các dòng, vừa nén các dòng trống lại.

Hình minh họa

Việc lựa chọn tham số phù hợp tùy thuộc vào mục đích của bạn. Nếu cần gỡ lỗi, -n-E là bạn đồng hành đắc lực. Nếu muốn đọc file một cách gọn gàng, -s là lựa chọn không thể bỏ qua.

Ví dụ minh họa và ứng dụng thực tế

Lý thuyết sẽ không trọn vẹn nếu thiếu đi thực hành. Lệnh cat được sử dụng hàng ngày trong công việc của các nhà phát triển và quản trị hệ thống. Dưới đây là một vài kịch bản thực tế nơi cat phát huy tác dụng.

1. Hiển thị file log để xem nhanh lỗi: Khi một ứng dụng web gặp sự cố, việc đầu tiên thường là kiểm tra file log. Thay vì mở file log có thể rất lớn bằng một trình soạn thảo, bạn có thể dùng cat để xem nhanh vài dòng cuối, hoặc kết hợp với grep để lọc ra các dòng chứa từ khóa “ERROR”.

cat /var/log/nginx/error.log | grep "critical"

Hình minh họa

2. Ghép nối file cấu hình: Giả sử bạn có một cấu hình Nginx được chia thành nhiều file nhỏ (ví dụ: security.conf, caching.conf). Bạn có thể dùng cat để gộp chúng lại thành một file nginx.conf hoàn chỉnh.

cat security.conf caching.conf > nginx.conf

3. Tạo file README đơn giản từ dòng lệnh: Khi khởi tạo một dự án mới trên GitHub, bạn cần một file README.md. cat là công cụ hoàn hảo để tạo nhanh file này với một vài dòng mô tả ban đầu.

cat > README.md

Sau đó nhập nội dung và nhấn Ctrl + D.

4. Kết hợp với các lệnh khác để tăng hiệu quả: Sức mạnh thực sự của cat nằm ở khả năng kết hợp với các lệnh khác thông qua “pipe” (|).

  • cat file_lon.txt | less: Dùng less để xem các file lớn một cách thuận tiện, có thể cuộn lên xuống.
  • cat data.csv | sort | uniq > ket_qua.txt: Đọc file CSV, sắp xếp nội dung, loại bỏ các dòng trùng lặp và lưu kết quả vào file mới.

Những ví dụ này cho thấy cat không chỉ là một lệnh độc lập mà còn là một mắt xích quan trọng trong chuỗi xử lý văn bản trên Linux.

Mẹo và lưu ý khi sử dụng lệnh cat trên dòng lệnh Linux

Để sử dụng cat một cách chuyên nghiệp và an toàn, có một vài mẹo và lưu ý bạn nên ghi nhớ. Những điều này sẽ giúp bạn tăng tốc công việc và tránh được những sai lầm không đáng có.

Mẹo tăng tốc thao tác với cat

1. Dùng alias để rút ngắn câu lệnh: Nếu bạn thường xuyên sử dụng cat với một bộ tham số nhất định, ví dụ như cat -nE, bạn có thể tạo một alias (bí danh) trong file cấu hình shell của mình (như .bashrc hoặc .zshrc).

alias cne='cat -nE'

Sau khi thiết lập, thay vì gõ lệnh dài, bạn chỉ cần gõ cne ten_file.txt.

2. Kết hợp với pipe để xử lý file lớn: Như đã đề cập, cat sẽ đọc toàn bộ file vào bộ nhớ trước khi hiển thị. Với các file có dung lượng hàng Gigabyte, điều này có thể làm treo hệ thống. Thay vào đó, hãy dùng pipe để chuyển đầu ra của cat sang các lệnh như less, more, head, hoặc tail. Cách làm này hiệu quả hơn nhiều vì các lệnh kia chỉ xử lý từng phần của file.

cat file_khong_lo.log | less

Những lưu ý tránh lỗi thường gặp

1. Cẩn thận với việc ghi đè file (>): Đây là lỗi phổ biến và nguy hiểm nhất. Toán tử > sẽ xóa sạch nội dung của file đích trước khi ghi dữ liệu mới vào. Trước khi thực thi lệnh cat ... > file_quan_trong.txt, hãy luôn tự hỏi: “Mình có chắc chắn muốn xóa nội dung cũ của file này không?”.

2. Hiểu rõ sự khác biệt giữa >>>:

  • > (ghi đè): Tạo file mới hoặc xóa nội dung file cũ và ghi nội dung mới vào.
  • >> (nối tiếp): Giữ lại nội dung cũ của file và ghi thêm nội dung mới vào cuối file. Nếu file chưa tồn tại, nó sẽ được tạo mới.

Hãy sử dụng >> khi bạn muốn thêm dữ liệu vào một file log hoặc một file tổng hợp mà không làm mất thông tin đã có.
cat new_log_entry.txt >> main_log.txt

Hình minh họa

và toán tử nối tiếp >>”>

Các lỗi phổ biến khi sử dụng lệnh cat và cách khắc phục

Trong quá trình sử dụng cat, bạn có thể gặp phải một số lỗi. Đừng lo lắng, hầu hết chúng đều có nguyên nhân rõ ràng và cách khắc phục đơn giản.

Lỗi “Permission denied” khi đọc file

Đây là lỗi bạn sẽ gặp khi cố gắng đọc một file mà bạn không có quyền truy cập.

Thông báo lỗi: cat: ten_file.txt: Permission denied

Nguyên nhân: Lỗi này xảy ra do hệ thống phân quyền của Linux. User hiện tại của bạn không có quyền đọc (read permission) đối với file hoặc thư mục chứa file đó. Điều này thường xảy ra với các file hệ thống, file log hoặc file của người dùng khác.

Cách khắc phục:

  1. Sử dụng sudo: Nếu bạn là quản trị viên (hoặc có quyền sudo), bạn có thể thực thi lệnh với quyền cao nhất. sudo cat /var/log/syslog. Hãy sử dụng sudo một cách cẩn thận.
  2. Thay đổi quyền file: Nếu đó là file của bạn hoặc bạn có quyền thay đổi nó, bạn có thể cấp quyền đọc cho user của mình bằng lệnh chmod. Ví dụ, chmod u+r ten_file.txt sẽ cấp quyền đọc cho user sở hữu file.

Hình minh họa

File không hiển thị nội dung hoặc bị lỗi mã hóa

Đôi khi, bạn cat một file và nhận được kết quả là các ký tự loằng ngoằng, không thể đọc được.

Vấn đề: Nội dung hiển thị dưới dạng mã nhị phân hoặc ký tự lạ.

Nguyên nhân:

  • File nhị phân: Bạn đang cố gắng cat một file không phải là văn bản thuần túy, ví dụ như một file ảnh (.jpg), file thực thi, hoặc file nén (.zip). Lệnh cat không được thiết kế để xử lý loại file này.
  • Lỗi mã hóa (Encoding): File văn bản có thể được lưu ở một định dạng mã hóa ký tự (ví dụ: UTF-16) mà terminal của bạn không hỗ trợ hoặc không được cấu hình để hiển thị đúng.

Cách khắc phục:

  1. Kiểm tra loại file: Dùng lệnh file ten_file để xác định xem đó có phải là file văn bản hay không.
  2. Sử dụng tham số -v: Lệnh cat -v ten_file sẽ hiển thị các ký tự không in được dưới dạng ký hiệu, giúp bạn nhận ra file có vấn đề.
  3. Chuyển đổi encoding: Nếu vấn đề là do mã hóa, bạn có thể sử dụng các công cụ như iconv để chuyển đổi file sang định dạng phổ biến như UTF-8. iconv -f OLD_ENCODING -t UTF-8 input.txt > output.txt

Best Practices khi dùng lệnh cat trong Linux

Để tận dụng tối đa cat và đảm bảo quy trình làm việc của bạn luôn hiệu quả và an toàn, hãy tuân thủ một số nguyên tắc thực hành tốt nhất sau đây.

1. Luôn kiểm tra kỹ file trước khi ghép nối: Trước khi sử dụng cat file1 file2 > file_tong_hop, hãy chắc chắn rằng file_tong_hop không phải là một file quan trọng, hoặc bạn đã sao lưu nó. Một cú pháp sai nhỏ, ví dụ như cat file1 file2 > file1, có thể xóa sạch dữ liệu gốc của bạn.

2. Sử dụng tham số phù hợp để tăng hiệu quả đọc file: Đừng chỉ dùng cat một cách trần trụi. Hãy tận dụng các tham số như -n để đánh số dòng khi cần thảo luận về code, hoặc -s để làm gọn các file log có nhiều dòng trống. Việc này giúp tiết kiệm thời gian và làm cho đầu ra dễ đọc hơn.

3. Hạn chế dùng cat với file cực lớn: cat sẽ cố gắng nạp toàn bộ nội dung file vào bộ nhớ. Nếu bạn cat một file nặng vài GB, nó có thể làm chậm hoặc treo hệ thống của bạn. Đối với các file lớn, hãy ưu tiên sử dụng less, more, head, hoặc tail. Những công cụ này được thiết kế để xử lý file lớn một cách hiệu quả bằng cách chỉ đọc từng phần cần thiết.

less large_database_dump.sql là lựa chọn khôn ngoan hơn cat large_database_dump.sql.

Hình minh họa

4. Không dùng cat thay thế cho các công cụ xử lý chuyên sâu: cat rất tuyệt vời cho việc hiển thị, ghép nối và tạo file đơn giản. Tuy nhiên, khi bạn cần thực hiện các thao tác phức tạp hơn như tìm kiếm và thay thế, trích xuất cột, hay chỉnh sửa nội dung, hãy sử dụng các công cụ chuyên dụng như sed, awk, grep. cat chỉ nên là bước đầu tiên trong chuỗi lệnh của bạn, ví dụ: cat file.txt | awk '{print $1}'.

Kết luận

Qua bài viết này, chúng ta đã cùng nhau khám phá lệnh cat từ những chức năng cơ bản nhất đến các ứng dụng thực tế và mẹo sử dụng nâng cao. cat không chỉ là một lệnh để hiển thị file, mà nó là một công cụ đa năng, đơn giản nhưng vô cùng mạnh mẽ, giúp bạn quản lý và thao tác với file văn bản một cách cực kỳ hiệu quả trên môi trường dòng lệnh Linux. Việc nắm vững các cú pháp, tham số và những lưu ý an toàn khi sử dụng cat sẽ giúp công việc tương tác với hệ thống của bạn trở nên nhanh chóng, chính xác và tránh được các lỗi không mong muốn có thể gây mất dữ liệu.

Kỹ năng làm việc trên dòng lệnh là một tài sản quý giá đối với bất kỳ ai hoạt động trong lĩnh vực công nghệ. Bằng việc thực hành thường xuyên với cat và không ngừng khám phá thêm các tham số nâng cao cũng như cách kết hợp nó với các lệnh khác, bạn đang từng bước nâng cao trình độ và sự tự tin của mình. Đừng ngần ngại, hãy bắt đầu sử dụng cat ngay hôm nay để cải thiện trải nghiệm làm việc với file trên Linux và biến những tác vụ tưởng chừng nhàm chán trở nên đơn giản hơn bao giờ hết

Đánh giá
Tác giả

Mạnh Đức

Có cao nhân từng nói rằng: "Kiến thức trên thế giới này đầy rẫy trên internet. Tôi chỉ là người lao công cần mẫn đem nó tới cho người cần mà thôi !"

Chia sẻ