Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Lệnh tee trong Linux - Đầu ra Split Shell [Ví dụ]

tee lệnh trong Linux Shell / dòng lệnh phân tách đầu ra của ứng dụng - gửi đầu ra tới cả tệp GIỚI THIỆU (bảng điều khiển hoặc ứng dụng khác). Đây là cách sử dụng nó.

tee lệnh được đặt tên cho bộ chia chữ T được sử dụng trong hệ thống ống nước - một đường ống chuyển hướng nước từ một nguồn theo hai hướng.

Cú pháp lệnh tee

tee là một lệnh có mục đích đơn giản và cú pháp đơn giản:

tee OPTIONS FILE

Lưu ý rằng:

  • TÙY CHỌN là danh sách các tùy chọn từ bảng bên dưới
  • TẬP TIN là đường dẫn đến tệp bạn muốn lưu đầu ra
  • Đầu vào cần được chuyển hướng hoặc chuyển hướng đến tee - nếu không, nó không liên quan gì đến
    • Điều này được thực hiện bằng cách chuyển hướng đầu vào / đầu ra tiêu chuẩn - xem bên dưới để biết các ví dụ
  • tee sẽ xuất cả dữ liệu được cung cấp cho nó thành FILE được chỉ định cũng như STDOUT (đầu ra tiêu chuẩn)
    • Theo mặc định, điều này sẽ được xuất ra bảng điều khiển, nhưng nó cũng có thể được chuyển hướng đến các ứng dụng khác

Tùy chọn

Dưới đây là các tùy chọn được sử dụng phổ biến nhất cho tee lệnh:

-a, –append Nối vào FILE đã cho, không ghi đè
-i, –ignore-ngắt Bỏ qua các tín hiệu ngắt

Để có thêm tùy chọn, bao gồm cả cách chẩn đoán lỗi, bạn có thể xem hướng dẫn sử dụng bằng cách chạy:

man tee

tee Ví dụ về lệnh

Dưới đây là một số ví dụ đơn giản về cách tee có thể được sử dụng.

Tất cả các ví dụ này đều sử dụng echo lệnh này chỉ xuất ra văn bản được cung cấp cho nó.

Xem và lưu đầu ra từ một lệnh vào một tệp mới

Đầu ra của echo lệnh sẽ được chuyển đến tee, sẽ lưu nó vào một tệp cũng như xuất ra bảng điều khiển:

echo "hello!" | tee hello.txt

Nếu tệp hello.txt tồn tại, nó sẽ bị ghi đè.

Xem và lưu Kết quả từ Lệnh vào Tệp Hiện có

Ví dụ này thực hiện tương tự như trên, nhưng nó sẽ nối vào cuối tệp hiện có hơn là ghi đè lên:

echo "hello again!" | tee -a hello.txt

Lưu hoặc nối đầu ra thành nhiều tệp

Nhiều tệp có thể được chỉ định, phân tách bằng dấu cách:

echo "hello several files!" | tee hello1.txt hello2.txt hello3.txt

Chuyển hướng / Ống tee Đầu ra

Đầu ra tiêu chuẩn của tee có thể được chuyển hướng và chuyển hướng. Ví dụ dưới đây sẽ lưu đầu ra của echo thành hello.txt. The đầu ra sau đó sẽ được chuyển đến grep thay vì xuất ra bảng điều khiển:

echo "hello!" | tee hello.txt | grep hello

Ví dụ:vì lợi ích của nó, lệnh grep (được sử dụng để tìm kiếm đầu vào văn bản) chỉ cần tìm kiếm đầu ra từ tee cho từ “xin chào”.

Bỏ qua ngắt

Bỏ qua các ngắt (ví dụ:nhấn CTRL + C để thoát lệnh) có thể dẫn đến đầu ra sạch hơn từ tee :

echo "hello!" | tee -i hello.txt

Sử dụng tee Với sudo

The sudo lệnh cho phép bạn thực thi các lệnh với tư cách là người dùng root mà không cần đăng nhập với tư cách root và được sử dụng phổ biến.

Trong đoạn mã sau - sudo không cho phép bạn chuyển hướng đầu ra của các lệnh, dưới dạng sudo bản thân lệnh không thực hiện chuyển hướng như nó xuất hiện trước biểu tượng chuyển hướng (> ):

sudo echo "hello!" > /root/hello.txt

… Điều này sẽ không thành công với lỗi quyền vì / root thư mục yêu cầu đặc quyền root, nhưng sudo lệnh chỉ áp dụng các đặc quyền này cho echo lệnh - không phải chuyển hướng đến sau đó.

Một mẹo để giải quyết vấn đề này là sử dụng tee lệnh:

echo "hello!" | sudo tee /root/hello.txt

Điều này sẽ hoạt động vì đầu ra của echo lệnh được chuyển tới tee , được chạy với các đặc quyền quản trị qua sudo - và tee lưu đầu ra.