Cách sử dụng lệnh tee Linux [8 ví dụ hữu ích]

Hầu hết các người dùng nâng cao đều thích sử dụng giao diện dòng lệnh khi tương tác với hệ thống Linux. Mặc định, tất cả các lệnh Linux hiển thị đầu ra của chúng trên luồng đầu ra chuẩn. Tuy nhiên, đôi khi chúng ta cần lưu đầu ra này vào các tệp để kiểm tra lỗi. Tất nhiên, chúng ta có thể sử dụng toán tử chuyển hướng để đạt được điều này. Tuy nhiên, một trong các hạn chế nhỏ của phương pháp này là nó chỉ lưu đầu ra vào tệp duy nhất. Để khắc phục hạn chế này, chúng ta có thể sử dụng lệnh tee Linux đọc từ luồng đầu vào chuẩn và ghi vào luồng đầu ra chuẩn và các tệp.

Trong hướng dẫn thực tế này, chúng tôi sẽ xem xét một số ví dụ về lệnh tee. Đến cuối hướng dẫn này, người dùng Linux sẽ có thể sử dụng lệnh tee để đáp ứng nhu cầu lập trình của mình.

Cú pháp lệnh tee Linux

Cú pháp của lệnh tee tương tự như các lệnh Linux khác. Ở mức cao, nó được chia thành hai nhóm - OPTIONSFILES:

$ tee [OPTIONS] [FILE1] [FILE2] [FILE3] ...

Trong cú pháp trên, cả OPTIONSFILES đều là các tham số tùy chọn.

1. Lưu đầu ra vào một tệp trong Linux

Như đã thảo luận trước đây, lệnh tee gửi đầu ra đến đầu ra chuẩn cũng như tệp. Để hiểu điều này, trước tiên, hãy sử dụng lệnh echo để hiển thị văn bản trên luồng đầu ra chuẩn:

$ echo "tecmint.com"

Bây giờ, hãy sử dụng lệnh tee để ghi đầu ra vào tệp output.txt:

$ echo "tecmint.com" | tee output.txt

Cuối cùng, xem nội dung của tệp output.txt bằng lệnh cat.

$ cat output.txt
Save Output to File in Linux

Trong đầu ra trên, chúng ta có thể thấy rằng lệnh tee gửi đầu ra vào tệp cũng như luồng đầu ra chuẩn.

2. Ghi đầu ra vào tệp trong Linux

Mặc định, lệnh tee ghi đè lên các tệp đầu ra. Tuy nhiên, chúng ta có thể tránh điều này bằng cách kích hoạt chế độ ghi thêm, ghi đầu ra vào cuối tệp:

$ echo "tecmint.com" | tee -a output.txt 
$ cat output.txt 
Append Output to File in Linux

Trong ví dụ này, chúng ta đã sử dụng tùy chọn -a để kích hoạt chế độ ghi thêm.

3. Ghi đầu ra vào nhiều tệp trong Linux

Tương tự, chúng ta có thể sử dụng lệnh tee để ghi đầu ra vào nhiều tệp như được hiển thị.

$ echo "tecmint.com" | tee file-1.txt file-2.txt file-3.txt

Trong ví dụ này, chúng ta đã cung cấp nhiều tệp làm đối số dòng lệnh. Bây giờ, hãy sử dụng lệnh head để hiển thị nội dung của các tệp:

$ head -v file-1.txt file-2.txt file-3.txt
Write Output to the Multiple Files in Linux

4. Gửi đầu ra của một lệnh đến một lệnh khác

Bên cạnh đó, chúng ta cũng có thể sử dụng lệnh tee với toán tử ống (|). Phương pháp này rất hữu ích khi chúng ta muốn lưu đầu ra cũng như chuyển tiếp nó sang lệnh khác.

$ echo "tecmint.com" | tee example.txt | wc -c
$ cat example.txt
Send Output-of Command to Another Command

Trong ví dụ này, trước tiên, chúng ta sử dụng lệnh tee để ghi đầu ra vào tệp. Tiếp theo, chúng ta sử dụng lệnh wc để đếm số ký tự.

5. Ẩn đầu ra của tệp trong Linux

Trong các ví dụ trước, chúng ta đã sử dụng lệnh tee để gửi đầu ra sang đầu ra chuẩn. Tuy nhiên, trong một số trường hợp hiếm, chúng ta muốn ẩn đầu ra. Trong những trường hợp như vậy, chúng ta có thể chuyển hướng đầu ra sang thiết bị /dev/null:

$ echo "tecmint.com" | tee output.txt > /dev/null
$ cat output.txt
Hide Output of File in Linux

6. Ghi đầu ra vào tệp được ủy quyền

Đôi khi, chúng ta cần ghi đầu ra vào tệp được ủy quyền. Tuy nhiên, chúng ta không thể đạt được điều này chỉ bằng lệnh tee. Trong những trường hợp như vậy, chúng ta có thể sử dụng sự kết hợp của các lệnh sudotee.

Trước tiên, hãy thay đổi quyền sở hữu của tệp bằng lệnh chown:

$ sudo chown root:root output.txt

Tiếp theo, hãy ghi thêm một số văn bản vào tệp output.txt bằng lệnh sau:

$ echo "tecmint.com" | sudo tee -a output.txt

Cuối cùng, hãy xác minh rằng tệp đã được cập nhật thành công.

Write Output to Privileged File

7. Chỉnh sửa tệp được ủy quyền trong Linux

Một cách tương tự, chúng ta có thể sử dụng sự kết hợp của các lệnh sudotee để chỉnh sửa tệp được ủy quyền. Để hiểu điều này, trước tiên, hãy mở một tệp được ủy quyền trong trình chỉnh sửa Vim và thêm vào một số văn bản:

$ vim output.txt

Bây giờ, hãy sử dụng lệnh Vim dưới đây để cập nhật tệp:

:w !sudo tee %

8. Bỏ qua tín hiệu gián đoạn (SIGINT)

Trong Linux, chúng ta sử dụng tổ hợp phím Ctrl+c để gửi tín hiệu SIGINT. Hành vi mặc định của tín hiệu này là chấm dứt quy trình. Tuy nhiên, chúng ta có thể sử dụng tùy chọn -i để bỏ qua tín hiệu gián đoạn:

$ echo "tecmint.com" | tee -i example.txt
$ cat example.txt
Ignore Interrupt Signal

Trong hướng dẫn này, chúng ta đã tìm hiểu về lệnh tee Linux thông qua một số ví dụ thực tế. Người dùng có thể tham khảo hướng dẫn này khi làm việc với hệ thống Linux từ giao diện dòng lệnh.