Giải thích lệnh Head của Linux cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Khi bạn làm việc trên dòng lệnh của Linux, đôi khi bạn muốn xem nhanh những dòng đầu tiên của một tệp. Ví dụ, nếu tệp nhật ký liên tục được cập nhật, bạn có thể muốn xem 10 dòng đầu tiên của tệp nhật ký mỗi lần. Mặc dù luôn có tùy chọn để xem tệp trong trình soạn thảo (ví dụ: vim), nhưng có một công cụ dòng lệnh có tên là head cho phép bạn dễ dàng xem những dòng đầu tiên của tệp.

Trong bài viết này, chúng tôi sẽ giải thích những điều cơ bản về lệnh head bằng một số ví dụ dễ hiểu. Xin lưu ý rằng tất cả các bước/hướng dẫn được đề cập ở đây đã được thử nghiệm trên Ubuntu 22.04.

Lệnh head Linux​

Như đã đề cập ở phần đầu, lệnh head cho phép người dùng xem phần đầu tiên của các tệp. Cú pháp của lệnh này như sau:
Mã:
head [OPTION]... [FILE]...
Sau đây là cách trang hướng dẫn của lệnh mô tả lệnh này:
Mã:
In 10 dòng đầu tiên của mỗi FILE ra đầu ra chuẩn. Với nhiều hơn một FILE, hãy đặt trước mỗi 
một tiêu đề nêu tên tệp.
Các ví dụ kiểu Hỏi & Đáp sau đây sẽ giúp bạn hiểu rõ hơn về cách thức hoạt động của công cụ này:

Câu hỏi 1. Làm thế nào để in 10 dòng đầu tiên của một tệp trên thiết bị đầu cuối (stdout)?​

Điều này khá dễ dàng khi sử dụng head - trên thực tế, đây là hành vi mặc định của công cụ.
Mã:
head [tên tệp]
Ảnh chụp màn hình sau đây cho thấy lệnh đang hoạt động:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22219%22%3E%3C/svg%3E

Câu 2. Làm thế nào để điều chỉnh số dòng in của lệnh head?​

Mặc dù 10 là số dòng mặc định mà lệnh head in ra, bạn có thể thay đổi số này tùy theo yêu cầu của mình. Tùy chọn dòng lệnh -n cho phép bạn thực hiện điều đó.
Mã:
head -n [N] [Tên tệp]
Ví dụ, nếu bạn chỉ muốn in 5 dòng đầu tiên, bạn có thể truyền tải điều này đến công cụ theo cách sau:
Mã:
head -n 5 file1.txt

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22207%22%3E%3C/svg%3E

Câu 3. Làm thế nào để hạn chế đầu ra ở một số byte nhất định?​

Không chỉ số dòng, bạn cũng có thể hạn chế đầu ra của lệnh head ở một số byte cụ thể. Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -c.
Mã:
head -c [N] [File-name]
Ví dụ, nếu bạn muốn head chỉ hiển thị 25 byte đầu tiên, đây là cách bạn có thể thực thi lệnh:
Mã:
head -c 25 file1.txt

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22169%22%3E%3C/svg%3E


Vì vậy, bạn có thể thấy rằng công cụ chỉ hiển thị 25 byte đầu tiên trong đầu ra.

Xin lưu ý rằng [N] "có thể có hệ số nhân hậu tố: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, v.v. đối với T, P, E, Z, Y."

Câu hỏi 4. Làm thế nào để có head print filename trong đầu ra?​

Nếu vì lý do nào đó, bạn muốn lệnh head cũng in tên tệp trong đầu ra. Bạn có thể thực hiện điều đó bằng cách sử dụng tùy chọn dòng lệnh -v.
Mã:
head -v [file-name]
Đây là một ví dụ:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22300%22%3E%3C/svg%3E


Như bạn thấy, tên tệp 'file 1' đã được hiển thị trong đầu ra.

Câu hỏi 5. Làm thế nào để có NUL làm dấu phân cách dòng, thay vì xuống dòng?​

Theo mặc định, đầu ra của lệnh head được phân cách bằng dấu xuống dòng. Nhưng cũng có một tùy chọn sử dụng NUL làm dấu phân cách. Tùy chọn -z hoặc --zero-terminated cho phép bạn thực hiện việc này.
Mã:
head -z [file-name]

Kết luận​

Như hầu hết các bạn đều đồng ý, head là một lệnh đơn giản để hiểu và sử dụng, nghĩa là có ít đường cong học tập liên quan đến nó. Các tính năng (về mặt tùy chọn dòng lệnh) mà nó cung cấp cũng bị hạn chế và chúng tôi đã đề cập đến hầu hết các tính năng đó. Vì vậy, hãy thử các tùy chọn này và khi bạn hoàn tất, hãy xem trang hướng dẫn của lệnh để biết thêm thông tin.
 
Back
Bên trên