8 ví dụ về lệnh tee trên CentOS / Ubuntu / Debian / Fedora
Hầu hết người dùng nâng cao 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ị kết quả trên luồng đầu ra tiêu chuẩn. Tuy nhiên, đôi khi chúng ta cần lưu kết quả này vào các tệp tin để gỡ lỗi. Bạn có thể sử dụng toán tử redirection để đạt được điều này. Tuy nhiên, một trong những hạn chế nhỏ của phương pháp này là nó chỉ lưu kết quả vào tệp tin duy nhất. Để khắc phục hạn chế này, bạn có thể sử dụng lệnh tee để đọc từ luồng đầu vào tiêu chuẩn và ghi vào luồng đầu ra tiêu chuẩn và tệp tin. Trong hướng dẫn thực hành này, bạn sẽ xem được các ví dụ cơ bản về lệnh tee trong Linux.
Cú pháp cơ bản của lệnh tee trong Linux
Cú pháp của lệnh tee tương tự như các lệnh Linux khác. Tại mức cao nhất, nó được chia thành hai nhóm - OPTIONS và FILES:
$ tee [OPTIONS] [FILE1] [FILE2] [FILE3] …
Trong cú pháp trên, cả OPTIONS và FILES đều là các tham số tùy chọn.
8 ví dụ hữu ích để ứng dụng lệnh tee trong Linux
Lưu đầu ra vào một tệp
Lệnh tee gửi đầu ra đến luồng đầu ra tiêu chuẩn cũng như tệp tin. Để 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 tiêu chuẩn:
$ echo "tecmint.com"
Hãy sử dụng lệnh tee để ghi đầu ra vào tệp tin output.txt:
$ echo "tecmint.com" | tee output.txt
Hãy xem nội dung của tệp tin output.txt bằng lệnh cat:
$ cat output.txt
Lưu đầu ra vào tệp trong Linux
Trong đầu ra trên, chúng ta có thể thấy rằng lệnh tee gửi đầu ra đến tệp tin cũng như luồng đầu ra tiêu chuẩn.
Gắn kết đầu ra vào một tệp tin
Ở chế độ mặc định, lệnh tee trong Linux ghi đè lên tệp tin đầu ra. Tuy nhiên, chúng ta có thể tránh việc này bằng cách bật chế độ gắn kết (append mode), cho phép ghi đầu ra vào cuối tệp tin đã có.
Để bật chế độ gắn kết, chúng ta sử dụng tùy chọn -a sau tên tệp tin:
$ echo "tecmint.com" | tee -a output.txt $ cat output.txt
Gắn kết đầu ra vào tệp tin
Ghi đầu ra vào nhiều tệp tin cùng một lúc
Tương tự, chúng ta có thể sử dụng lệnh tee để ghi đầu ra vào nhiều tệp tin như được hiển thị dưới đây:
$ 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 tin như đố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 tin:
$ head -v file-1.txt file-2.txt file-3.txt
Viết đầu ra cho nhiều tệp trong Linux
Chuyển đầu ra của một lệnh sang lệnh khác
Ngoài ra, chúng ta cũng có thể sử dụng lệnh tee trong Linux kết hợp với toán tử pipe (|). Phương pháp này hữu ích khi chúng ta muốn lưu trữ đầu ra và đồng thời chuyển tiếp nó cho một lệnh khác.
Dưới đây là một ví dụ:
$ echo "tecmint.com" | tee example.txt | wc -c $ cat example.txt
Chuyển đầu ra của một lệnh sang lệnh khác
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 tin. Tiếp theo, chúng ta sử dụng lệnh wc để đếm số ký tự.
Ẩn đầu ra của tệp
Trong các ví dụ trước đó, chúng ta đã sử dụng lệnh tee để gửi đầu ra đến đầu ra chuẩn (standard output). Tuy nhiên, trong một số trường hợp hiếm, chúng ta muốn loại bỏ đầu ra. Trong những trường hợp như vậy, chúng ta có thể chuyển hướng đầu ra đến thiết bị /dev/null:
$ echo "tecmint.com" | tee output.txt > /dev/null $ cat output.txt
Ẩn đầu ra của tệp tin trong Linux
Ghi đầu ra vào tệp tin với quyền đặc biệt
Đôi khi, chúng ta cần ghi đầu ra vào tệp tin có quyền đặc biệt. Tuy nhiên, chúng ta không thể đạt được điều này chỉ bằng cách sử dụng lệnh tee trong Linux. Trong những tình huống như vậy, chúng ta có thể sử dụng kết hợp của các lệnh sudo và tee.
Đầu tiên, hãy thay đổi quyền sở hữu của tệp tin bằng lệnh chown:
$ sudo chown root:root output.txt
Tiếp theo, hãy thêm một số văn bản vào tệp tin 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 tin đã được cập nhật thành công bằng cách sử dụng lệnh cat.
Ghi đầu ra vào tệp tin với quyền đặc biệt
Chỉnh sửa tệp đặc quyền
Tương tự, chúng ta có thể sử dụng kết hợp của các lệnh sudo và tee để chỉnh sửa tệp tin có quyền hạn. Để hiểu điều này, trước tiên hãy mở một tệp tin có quyền hạn trong trình soạn thảo Vim và thêm một số văn bản vào nó:
$ vim output.txt
Bây giờ, hãy sử dụng lệnh Vim bên dưới để cập nhật tệp:
:w !sudo tee %
Bỏ qua tín hiệu ngắt (SIGINT)
Trong Linux, chúng ta sử dụng tổ hợp phím Ctrl+C để gửi tín hiệu SIGINT, tín hiệu này thường được sử dụng để gián đoạn và kết thúc một quá trình. Theo mặc định, tín hiệu này khiến quá trình kết thúc. 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
Bỏ qua tín hiệu ngắt trong Linux
Lệnh tee trong Linux và những ứng dụng thực tế ở các ví dụ trên sẽ giúp bạn rất nhiều trong các thao tác hằng ngày, đặc biệt là cho người mới bắt đầu.
Mọi người cũng tìm kiếm: tee linux, lệnh tee trong linux, tee in linux, linux tee, sudo tee, | tee linux