Lệnh strings
trong Linux được dùng để trích xuất các chuỗi văn bản có thể đọc được từ các tệp nhị phân. Đây là công cụ hữu ích khi bạn muốn kiểm tra nhanh nội dung ẩn bên trong file thực thi, file log hoặc các file không phải văn bản. Trong bài viết này, mình sẽ hướng dẫn chi tiết cách sử dụng lệnh strings
Linux và các tùy chọn đi kèm để bạn tận dụng tối đa công cụ này.
Những điểm chính
- Tìm hiểu lệnh strings Linux: Hiểu được chức năng của lệnh strings trong việc trích xuất chuỗi văn bản từ file nhị phân.
- Cách sử dụng lệnh strings Linux: Nắm rõ cách chạy lệnh strings và các tùy chọn cơ bản để khai thác hiệu quả.
- Thiết lập độ dài chuỗi tối thiểu: Biết cách giới hạn độ dài chuỗi để lọc ra kết quả phù hợp với nhu cầu.
- Xem kết quả lệnh strings dễ dàng hơn với less: Tận dụng less để đọc và tìm kiếm chuỗi trong kết quả một cách thuận tiện.
- Xem chuỗi văn bản trong file object bằng lệnh strings: Áp dụng lệnh strings để kiểm tra nội dung trong các file object và file nhị phân khác.
- Hiển thị vị trí của chuỗi trong file: Hiểu cách xác định vị trí (offset) của chuỗi trong file giúp phân tích chính xác hơn.
- Bao gồm cả khoảng trắng trong chuỗi hiển thị: Biết cách cấu hình để chuỗi in ra giữ nguyên khoảng trắng cần thiết.
- Dùng strings với dữ liệu khác: Nắm được việc sử dụng strings không chỉ với file mà còn với các nguồn dữ liệu đầu vào khác.
- Tìm chuỗi trong nhiều file cùng lúc: Biết cách xử lý và tìm kiếm đồng thời trong nhiều file để tiết kiệm thời gian.
- Biết thêm Vietnix – Nhà cung cấp dịch vụ lưu trữ tốc độ cao.
- Câu hỏi thường gặp: Giải đáp những thắc mắc phổ biến liên quan đến lệnh strings và cách dùng hiệu quả.
Tìm hiểu lệnh strings Linux
Trong hệ thống Linux, các file nhị phân như file chương trình thường chứa rất nhiều dữ liệu mà con người không thể đọc được trực tiếp. Nếu bạn dùng các lệnh thông thường như cat
hay less
để mở những file này, rất dễ gặp tình trạng bị treo hoặc hiển thị rất khó hiểu do có nhiều ký tự không thể in ra màn hình – gọi là ký tự không in được (non-printable characters).

Phần lớn dữ liệu trong file nhị phân không phải là văn bản, mà là các giá trị ở dạng nhị phân không thể hiện qua các ký tự hoặc ký hiệu chuẩn mà bạn thường thấy như chữ cái, số, dấu câu hay khoảng trắng (các ký tự có thể in được). Điều này khiến việc xem hoặc tìm kiếm các chuỗi văn bản trong file nhị phân trở nên rất khó khăn.
Lệnh strings
ra đời để giải quyết vấn đề này. Nó giúp trích xuất những chuỗi ký tự có thể in được (printable characters) từ file nhị phân, loại bỏ các ký tự không in được, từ đó bạn có thể dễ dàng xem và xử lý các chuỗi văn bản đó bằng các lệnh khác mà không gặp rắc rối với dữ liệu nhị phân phức tạp.
Cách sử dụng lệnh strings Linux
Lệnh strings
rất đơn giản để sử dụng, bạn chỉ cần cung cấp tên file mà muốn tìm kiếm các chuỗi văn bản có thể đọc được ngay trên dòng lệnh. Giả sử, bạn có một file thực thi nhị phân tên là abc. Để dùng lệnh strings
, bạn chỉ cần mở terminal và gõ lệnh:
strings abc
Sau đó, bạn nhấn Enter, lệnh sẽ tự động trích xuất tất cả các chuỗi có thể đọc được từ file abc và hiển thị chúng ngay trên cửa sổ terminal. Đây là cách nhanh và hiệu quả để xem các chuỗi ẩn trong file nhị phân hoặc các loại file không phải văn bản.
Thiết lập độ dài chuỗi tối thiểu
Theo mặc định, lệnh strings
sẽ tìm kiếm các chuỗi có độ dài từ 4 ký tự trở lên. Nếu muốn tìm các chuỗi dài hơn hoặc ngắn hơn, bạn có thể sử dụng tùy chọn -n
để đặt độ dài chuỗi tối thiểu theo ý muốn. Tuy nhiên, bạn cần lưu ý rằng khi đặt độ dài tối thiểu quá thấp, kết quả trả về có thể chứa nhiều chuỗi “rác” – những chuỗi không có ý nghĩa thực sự, chỉ là các ký tự ngẫu nhiên xuất hiện do giá trị nhị phân trùng với ký tự có thể in được.
Ví dụ, nếu bạn đặt độ dài tối thiểu là 2 ký tự bằng cách chạy lệnh strings cho file có tên là jibber:
strings -n 2 jibber
Thì kết quả sẽ bao gồm cả những chuỗi chỉ có 2 ký tự. Đây là lý do vì sao đôi khi bạn sẽ thấy nhiều chuỗi ngắn hơn bình thường, trong đó khoảng trắng cũng được tính là một ký tự có thể in được. Việc thiết lập độ dài chuỗi tối thiểu giúp bạn kiểm soát chính xác hơn kết quả trích xuất, tránh phải xử lý quá nhiều dữ liệu không cần thiết.

Xem kết quả lệnh strings dễ dàng hơn với less
Kết quả đầu ra của lệnh strings
thường rất dài, nên để tiện theo dõi và tìm kiếm, người dùng thường kết hợp strings
với lệnh less
bằng cách sử dụng pipe (|
). Cách làm này giúp bạn cuộn xem nội dung một cách dễ dàng trong cửa sổ terminal mà không bị tràn màn hình. Ví dụ, khi chạy lệnh:
strings jibber | less
Kết quả sẽ được truyền thẳng vào less
và bạn sẽ thấy phần đầu danh sách chuỗi hiển thị đầu tiên:

Từ đó, bạn có thể dùng các phím điều hướng như lên/xuống hoặc tìm kiếm từ khóa bên trong less
để nhanh chóng tìm ra đoạn chuỗi văn bản cần thiết. Cách này rất hữu ích khi xử lý các file lớn hoặc khi muốn xem chi tiết mà không bỏ sót bất kỳ chuỗi nào do giới hạn màn hình hiển thị thông thường.
Xem chuỗi văn bản trong file object bằng lệnh strings
Trong quá trình phát triển phần mềm, các file mã nguồn thường được biên dịch thành các file object với phần mở rộng .o
. Những file này chứa mã máy trung gian, sau đó sẽ được liên kết với các thư viện để tạo ra file thực thi hoàn chỉnh. Khi bạn có một file object như jibber.o
, lệnh strings
sẽ giúp bạn trích xuất các chuỗi văn bản có thể đọc được bên trong file này. Ví dụ, bạn có thể dùng lệnh:
strings jibber.o | less
Để xem các chuỗi trong file với giao diện dễ quan sát hơn bằng less
, trong kết quả, những chuỗi dài hơn 8 ký tự thường sẽ được ngắt dòng tại cột thứ 8 và ở cột thứ 9 có thể xuất hiện ký tự “H” báo hiệu chuỗi bị ngắt.
Khi duyệt qua output của lệnh, bạn sẽ thấy một số chuỗi văn bản quen thuộc, ví dụ như các câu lệnh SQL, xuất hiện trong file object. Tuy nhiên, định dạng này không được áp dụng đồng nhất trong toàn bộ file.

So sánh với file thực thi hoàn chỉnh, các chuỗi trong file object thường có sự khác biệt rõ rệt về cấu trúc và cách trình bày. Việc dùng strings
giúp bạn có cái nhìn sâu hơn về cấu trúc bên trong file object, hỗ trợ kiểm tra và phân tích mã nguồn khi cần thiết.

Hiển thị vị trí của chuỗi trong file
Các chương trình được biên dịch thường có nhiều khu vực khác nhau bên trong để lưu trữ dữ liệu văn bản. Mặc định, lệnh strings
sẽ tìm kiếm chuỗi trong toàn bộ file, tương tự như khi bạn dùng tùy chọn -a
(all). Tuy nhiên, nếu bạn chỉ muốn strings
tìm trong các vùng dữ liệu đã được khởi tạo và nạp vào bộ nhớ, có thể sử dụng tùy chọn -d
(data). Ví dụ:
strings -d jibber | less
Lệnh trên sẽ chỉ tìm chuỗi trong các vùng dữ liệu đã được tải của file jibber
, sau đó dùng less
để xem kết quả dễ dàng hơn. Trừ khi bạn có lý do đặc biệt, tốt nhất bạn nên để strings
tìm kiếm trên toàn bộ file để không bỏ sót chuỗi nào quan trọng.
Hiển thị vị trí (offset) của chuỗi trong file
Lệnh strings
cho phép bạn in ra vị trí (offset) của mỗi chuỗi trong file, tính từ đầu file đến vị trí chuỗi đó. Để làm được điều này, bạn sử dụng tùy chọn -o
. Ví dụ:
strings -o parse_phrases | less
Kết quả sẽ hiển thị các chuỗi cùng với vị trí của chúng, trong đó offset mặc định được hiển thị theo hệ bát phân (octal). Nếu bạn muốn hiển thị offset ở hệ số khác, như hệ thập phân (decimal) hoặc hệ thập lục phân (hexadecimal), bạn có thể dùng tùy chọn -t
kèm theo một ký tự để chỉ định hệ số:
d
cho decimal (thập phân).x
cho hexadecimal (thập lục phân).o
cho octal (bát phân, tương đương-o
).
Ví dụ, bạn muốn hiển thị offset ở hệ thập phân:
strings -t d parse_phrases | less
Hoặc hiển thị ở hệ thập lục phân:
strings -t x parse_phrases | less
Bao gồm cả khoảng trắng trong chuỗi hiển thị
Thông thường, lệnh strings
sẽ coi các ký tự tab và dấu cách (space) là một phần của chuỗi văn bản được tìm thấy. Tuy nhiên, các ký tự khoảng trắng khác như xuống dòng (newline) hoặc trả về đầu dòng (carriage return) thì không được xem là một phần của chuỗi.
Nếu bạn muốn lệnh strings
coi tất cả các ký tự khoảng trắng, bao gồm cả newline và carriage return – là thành phần của chuỗi, bạn có thể sử dụng tùy chọn -w
(whitespace). Khi đó, mọi ký tự trắng trong chuỗi đều được giữ nguyên và hiển thị đầy đủ. Ví dụ, khi bạn chạy lệnh:
strings -w add_data | less
Bạn sẽ thấy trong kết quả có cả các dòng trống xuất hiện. Điều này do các ký tự carriage return và newline ở cuối dòng thứ hai vẫn được giữ nguyên và hiển thị (dù chúng là các ký tự không nhìn thấy). Việc này giúp bạn kiểm tra chính xác hơn chuỗi dữ liệu trong file, đặc biệt khi khoảng trắng hay xuống dòng có ý nghĩa trong nội dung cần trích xuất.

Dùng strings với dữ liệu khác
Lệnh strings
không chỉ giới hạn sử dụng với các file trên ổ cứng mà còn có thể áp dụng với bất kỳ nguồn dữ liệu nào phát ra chuỗi byte. Một ví dụ thú vị là bạn có thể dùng strings
để đọc nội dung từ bộ nhớ RAM của máy tính.
Để làm điều này, bạn sẽ truy cập vào file đặc biệt /dev/mem
, chứa ảnh bộ nhớ chính (RAM) hiện tại của hệ thống. Vì lý do bảo mật, việc truy cập file này cần quyền sudo
. Câu lệnh mẫu như sau:
sudo strings /dev/mem | less
Kết quả trả về không phải toàn bộ nội dung RAM mà chỉ là những chuỗi ký tự có thể đọc được mà strings
trích xuất được. Việc sử dụng less
giúp bạn xem và tìm kiếm thông tin trong lượng dữ liệu này dễ dàng hơn. Qua ví dụ này, bạn có thể thấy strings
rất linh hoạt và có thể dùng để phân tích dữ liệu không chỉ từ file mà còn từ nhiều nguồn khác nhau trong hệ thống.
Tìm chuỗi trong nhiều file cùng lúc
Khi cần tìm chuỗi trong nhiều file cùng lúc, bạn có thể sử dụng ký tự đại diện (wildcards) để chọn nhóm file muốn tìm kiếm. Trong đó, dấu *
đại diện cho nhiều ký tự còn dấu ?
đại diện cho một ký tự duy nhất. Ngoài ra, bạn cũng có thể liệt kê nhiều tên file trên dòng lệnh để tìm kiếm cùng lúc.
Ví dụ, bạn dùng wildcard để tìm chuỗi trong tất cả các file thực thi trong thư mục /bin
. Vì kết quả trả về sẽ gồm nhiều file, nên bạn dùng tùy chọn -f
để in tên file ở đầu mỗi dòng, giúp xác định rõ chuỗi tìm được thuộc file nào. Lệnh ví dụ như sau:
strings -f /bin/* | grep Copyright
Lệnh này sẽ trích xuất tất cả chuỗi trong các file ở /bin
, sau đó lọc ra những dòng có chứa từ “Copyright”. Kết quả sẽ hiển thị các câu bản quyền kèm theo tên file tương ứng, giúp bạn dễ dàng xem thông tin bản quyền của từng file trong thư mục.

Lệnh strings
trong Linux là một công cụ đơn giản nhưng cực kỳ hữu ích, giúp bạn trích xuất các chuỗi ký tự có thể đọc được từ những file nhị phân hoặc dữ liệu không phải dạng văn bản. Đây là lệnh làm tốt một nhiệm vụ rất cụ thể và khi được kết hợp với các lệnh khác như grep
, less
hay find
, strings
sẽ phát huy sức mạnh tối đa trong việc phân tích và xử lý dữ liệu.
strings
là một phần trong hệ sinh thái phong phú của các lệnh Linux, vốn bao gồm rất nhiều công cụ phục vụ cho các mục đích quản lý file, tiến trình, mạng và hơn thế nữa. Việc hiểu và thành thạo strings
cùng các lệnh phổ biến khác sẽ giúp bạn tận dụng tối đa sức mạnh của hệ điều hành Linux, đặc biệt khi làm việc với dữ liệu phức tạp hay hệ thống nhị phân.
Vietnix – Nhà cung cấp dịch vụ lưu trữ tốc độ cao
Vietnix là nhà cung cấp dịch vụ lưu trữ tốc độ cao với giải pháp thuê VPS chất lượng. Đặc biệt, dịch vụ VPS Linux với hạ tầng máy chủ 100% ổ cứng SSD giúp đảm bảo tốc độ truy cập nhanh và ổn định, cùng giao diện quản trị trực quan dễ sử dụng. Khách hàng có toàn quyền tùy chỉnh hệ thống, kết hợp sao lưu tự động hàng tuần bảo vệ dữ liệu an toàn. Vietnix cam kết mang đến VPS hiệu quả, bảo mật và tối ưu chi phí, phù hợp cho mọi nhu cầu vận hành. Liên hệ ngay để được tư vấn chi tiết!
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Câu hỏi thường gặp
Có giới hạn nào về định dạng file hay loại file khi sử dụng lệnh strings không?
Lệnh strings
hoạt động tốt nhất trên file nhị phân chứa chuỗi ký tự ASCII hoặc Unicode rõ ràng. Nó không hiệu quả với file đã mã hóa, nén hoặc định dạng chuyên biệt không chứa chuỗi văn bản thẳng. Về cơ bản, không có giới hạn định dạng cứng nhắc, nhưng kết quả phụ thuộc vào dữ liệu có chứa chuỗi ký tự đọc được hay không.
Có thể dùng strings để phân tích các file log bị mã hóa hoặc nén không?
strings
chỉ dùng hiệu quả với file nhị phân chưa nén hoặc chưa mã hóa. Với file log bị nén hoặc mã hóa, cần giải nén hoặc giải mã trước rồi mới dùng strings
để trích xuất chuỗi.
Lời kết
Lệnh strings
là công cụ đơn giản nhưng cực kỳ hữu ích trong Linux, giúp bạn dễ dàng trích xuất các chuỗi văn bản từ file nhị phân hoặc file không phải dạng text. Qua bài viết, bạn đã hiểu rõ cách sử dụng strings
, từ thiết lập độ dài chuỗi, lọc kết quả đến áp dụng với nhiều loại file khác nhau. Việc nắm vững lệnh này không chỉ hỗ trợ phân tích dữ liệu hiệu quả mà còn mở ra nhiều cơ hội khi kết hợp với các lệnh Linux khác. Hãy thực hành thường xuyên để tận dụng tối đa sức mạnh của strings
trong công việc và dự án của bạn.