Lệnh Tail trong Linux

Tail là phần bổ sung của lệnh head. Đúng như tên gọi của nó, lệnh tail xuất ra N số dữ liệu cuối cùng của đầu vào đã cho. Theo mặc định, lệnh tail in 10 dòng cuối cùng của các file được chỉ định. Nếu có nhiều tên file được cung cấp thì tên file sẽ được đặt trước dữ liệu từ mỗi file đó.

Cú pháp

tail [OPTION]... [FILE]...

Hãy xem xét hai file có tên state.txt capital.txt, chứa tất cả tên của các tiểu bang và thủ đô  tương ứng của Ấn Độ.

$ cat state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

Không có bất kỳ tùy chọn nào, chỉ 10 dòng cuối cùng của file đã chỉ định được hiển thị.
Ví dụ:

$ tail state.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

Các tùy chọn

Các tùy chọn lệnh tail
Các tùy chọn lệnh tail

1. -n num

In các dòng ‘num’ cuối cùng thay vì 10 dòng cuối cùng. "num" là thứ bắt buộc phải được chỉ định trong lệnh, nếu không nó sẽ hiển thị lỗi. Lệnh này cũng có thể được viết không có ký tự ‘n’ nhưng dấu ‘-‘ là bắt buộc.

$ tail -n 3 state.txt
Uttar Pradesh
Uttarakhand
West Bengal
       OR
$ tail -3 state.txt
Uttar Pradesh
Uttarakhand
West Bengal

Lệnh tail cũng đi kèm với tùy chọn ‘+’ không có trong lệnh head. Với tùy chọn này, lệnh tail sẽ in dữ liệu bắt đầu từ số dòng được chỉ định của file thay vì những dòng cuối cùng trong file. Đối với lệnh: tail + n tên_file, dữ liệu sẽ bắt đầu in từ dòng số ‘n’ cho đến cuối file được chỉ định.

$ tail +25 state.txt
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

2. -c num

In các byte ‘num’ cuối cùng từ file được chỉ định. Dòng mới được tính là một ký tự duy nhất, vì vậy nếu tail in ra một dòng mới, nó sẽ được tính là một byte. Trong tùy chọn này, bắt buộc phải viết -c theo sau là num dương hoặc âm tùy thuộc vào yêu cầu. Với +num, nó hiển thị tất cả dữ liệu sau khi bỏ qua num byte từ phần bắt đầu của file được chỉ định và với -num, nó hiển thị num byte cuối cùng từ file được chỉ định.

Lưu ý: Không có dấu dương hoặc âm trước num, lệnh sẽ hiển thị num byte cuối cùng từ file được chỉ định.

With negative num
$ tail -c -6 state.txt
Bengal
        OR
$ tail -c 6 state.txt
Bengal

With positive num
$ tail -c +263 state.txt
Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand

3. -q

Nó được sử dụng nếu có nhiều hơn 1 file. Do lệnh này, tên file không được đặt trước dữ liệu từ mỗi file nữa.

Without using -q option
$ tail state.txt capital.txt
  state.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal
  capital.txt
Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
Ranchi


With using -q option
$ tail -q state.txt capital.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West BengalDispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
Ranchi
Bengaluru

4. -f

Tùy chọn này chủ yếu được quản trị viên hệ thống sử dụng để theo dõi sự phát triển của các file nhật ký được viết bởi nhiều chương trình Unix khi chúng đang chạy. Tùy chọn này hiển thị 10 dòng cuối cùng của file và sẽ cập nhật khi các dòng mới được thêm vào.

Khi các dòng mới được ghi vào nhật ký, bảng điều khiển sẽ cập nhật các dòng mới. Lời nhắc không trả lại ngay cả sau khi công việc kết thúc, vì vậy, phải sử dụng phím ngắt (interrupt key) để hủy bỏ lệnh này. Nói chung, các ứng dụng ghi thông báo lỗi vào các file nhật ký. Bạn có thể sử dụng tùy chọn -f để kiểm tra những thông báo lỗi khi chúng xuất hiện trong file nhật ký.

$ tail -f logfile

5. -v

Bằng cách sử dụng tùy chọn này, tên file luôn được đặt trước dữ liệu từ file được chỉ định.

$ tail -v state.txt
==> state.txt <==
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

6. –version

Tùy chọn này được sử dụng để hiển thị phiên bản tail hiện đang chạy trên hệ thống của bạn.

$ tail --version
tail (GNU coreutils) 8.26
Packaged by Cygwin (8.26-1)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor,
and Jim Meyering.

Các ứng dụng của lệnh tail

1. Cách sử dụng tail với pipe (|)

Lệnh tail có thể kết hợp với nhiều lệnh khác của Unix. Trong ví dụ sau, đầu ra của lệnh tail được đưa ra làm đầu vào cho lệnh sort với tùy chọn -r để sắp xếp 7 tên bang cuối cùng đến từ file state.txt theo thứ tự ngược lại.

$ tail -n 7 state.txt
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal

$ tail -n 7 state.txt | sort -r
West Bengal
Uttarakhand
Uttar Pradesh
Tripura
Telangana
Tamil Nadu
Sikkim

Nó cũng có thể được nối với một hoặc nhiều bộ lọc để xử lý bổ sung. Giống như trong ví dụ sau, chúng ta đang sử dụng lệnh cat, head, tail và đầu ra của nó được lưu trữ trong tên file list.txt bằng >.

$ cat state.txt | head -n 20 | tail -n 5  > list.txt

$ cat list.txt
Manipur
Meghalaya
Mizoram
Nagaland
Odisha

Điều gì đang xảy ra trong lệnh này, hãy thử khám phá nó. Lệnh cat đầu tiên cung cấp tất cả dữ liệu có trong file state.txt và sau đó, pipe chuyển tất cả đầu ra từ lệnh cat sang lệnh head. Lệnh head cung cấp tất cả dữ liệu từ đầu (dòng số 1) đến dòng số 20 và chuyển tất cả đầu ra từ lệnh head sang lệnh tail. Bây giờ, lệnh tail đưa ra 5 dòng cuối cùng của dữ liệu và đầu ra chuyển đến tên file list.txt thông qua toán tử chỉ thị.

2. In các dòng nằm giữa dòng M và N

Với mục đích này, bạn sẽ phải sử dụng các lệnh head, tail và pipe (|). Lệnh là: head -M file_name | tail - (M-N), vì dòng đầu tiên là M và lệnh tail cắt các dòng trong khoảng từ M đến N, bắt đầu từ cuối. Giả sử từ file state.txt, bạn phải in các dòng từ 10 đến 20.

$ head -n 20 state.txt | tail -10
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha

3. Hiển thị chính xác số dòng

tail -n [number] [file]

Sử dụng tùy chọn này cho phép bạn nhận lệnh tail để tạo đầu ra hiển thị một số dòng nhất định trong một file.

Ví dụ, giả sử bạn có một file văn bản tên example.txt với nội dung sau:

Line 1: This is the first line.
Line 2: This is the second line.
Line 3: This is the third line.
Line 4: This is the fourth line.
Line 5: This is the fifth line.
Line 6: This is the sixth line.
Line 7: This is the seventh line.
Line 8: This is the eighth line.
Line 9: This is the ninth line.
Line 10: This is the tenth line.

Nếu bạn muốn hiển thị 3 dòng cuối cùng của file này, bạn sẽ sử dụng lệnh sau:

tail -n 3 example.txt

Điều này sẽ hiển thị cho bạn 3 dòng cuối cùng của file example.txt.

Line 8: This is the eighth line.
Line 9: This is the ninth line.
Line 10: This is the tenth line.

4. Hiển thị các dòng bắt đầu từ một số dòng cụ thể

tail +[number] [file]

Lệnh có dấu + xuất dữ liệu bắt đầu từ số dòng được chỉ định.

Ví dụ, giả sử bạn có một file văn bản tên example.txt với nội dung sau:

Line 1: This is the first line.
Line 2: This is the second line.
Line 3: This is the third line.
Line 4: This is the fourth line.
Line 5: This is the fifth line.
Line 6: This is the sixth line.
Line 7: This is the seventh line.
Line 8: This is the eighth line.
Line 9: This is the ninth line.
Line 10: This is the tenth line.

Nếu muốn hiển thị nội dung bắt đầu từ dòng 5 đến cuối file, bạn có thể sử dụng lệnh sau:

tail +5 example.txt

Đầu ra sẽ là:

Line 5: This is the fifth line.
Line 6: This is the sixth line.
Line 7: This is the seventh line.
Line 8: This is the eighth line.
Line 9: This is the ninth line.
Line 10: This is the tenth line.

5. Hiển thị nhiều file

tail [file1] [file2]

Sử dụng lệnh này để hiển thị dữ liệu của nhiều file cùng một lúc.

Ví dụ 1: Xem 10 dòng cuối cùng của một file

Giả sử bạn có một file tên example.txt với nội dung sau:

Line 1: Hello
Line 2: World
Line 3: This
Line 4: is
Line 5: a
Line 6: sample
Line 7: text
Line 8: file
Line 9: for
Line 10: demonstration
Line 11: purposes
Line 12: only

Chạy lệnh:

tail example.txt

... sẽ xuất ra:

Line 3: This
Line 4: is
Line 5: a
Line 6: sample
Line 7: text
Line 8: file
Line 9: for
Line 10: demonstration
Line 11: purposes
Line 12: only

Ví dụ 2: Xem 10 dòng cuối cùng của nhiều file

Giả sử bạn có một file khác tên example2.txt với nội dung sau:

Line 1: Another
Line 2: Example
Line 3: File

Bạn có thể xem 10 dòng cuối cùng của cả example.txt và example2.txt bằng cách chạy:

tail example.txt example2.txt

Lệnh này sẽ xuất ra:

==> example.txt <==
Line 3: This
Line 4: is
Line 5: a
Line 6: sample
Line 7: text
Line 8: file
Line 9: for
Line 10: demonstration
Line 11: purposes
Line 12: only

==> example2.txt <==
Line 1: Another
Line 2: Example
Line 3: File

Ký hiệu ==> <== được sử dụng để phân tách đầu ra khỏi các file khác nhau.

6. Xuất ra một số byte nhất định

tail -c [bytes] [file]

Để hiển thị số byte cụ thể trong file văn bản, hãy sử dụng tùy chọn -c.

Ví dụ, giả sử chúng ta có một file tên sample.txt với nội dung sau:

This is the first line.
This is the second line.
This is the third line.
This is the fourth line.
This is the fifth line.

Nếu muốn hiển thị 20 byte cuối cùng của file này, chúng ta sẽ sử dụng lệnh sau:

tail -c 20 sample.txt

7. Giám sát file trong thời gian thực

tail -f [file]

Tùy chọn -f được sử dụng để theo dõi các thay đổi của file. Khi các mục nhật ký mới được thêm vào file nhật ký, nó sẽ cập nhật màn hình trong cửa sổ terminal.

Ví dụ, giả sử bạn có một file nhật ký tên application.log đang được ghi vào khi ứng dụng đang chạy. Bạn muốn theo dõi file nhật ký này để biết bất kỳ mục nhập mới nào.

Mở Terminal, điều hướng đến thư mục chứa application.log, tức là cd /path/to/directory.

Chạy lệnh tail -f:

tail -f application.log

Sau khi chạy lệnh này, bạn sẽ thấy 10 dòng cuối cùng của application.log hiển thị trong terminal. Terminal sẽ vẫn mở và mọi dòng mới được thêm vào application.log sẽ được hiển thị trong thời gian thực.

Thứ Sáu, 01/12/2023 16:55
4,54 👨 9.019
0 Bình luận
Sắp xếp theo
    ❖ Linux