Lệnh đọc từ stdin và ghi vào cả hai stdout và một hoặc nhiều tệp hơn cùng một lúc. tee
chủ yếu được sử dụng kết hợp với các lệnh khác thông qua pipeline.
Trong bài viết này, chúng ta tìm hiểu những kiến thức cơ bản về cách sử dụng lệnh tee
.
Cú pháp lệnh
Cú pháp của lệnh tee
như sau:
tee [OPTIONS] [FILE]
Sao chép
OPTIONS
:-a
(--append
) – Không ghi đè lên các tệp thay vào đó hãy nối thêm vào các tệp đã cho.-i
(--ignore-interrupts
) – Bỏ qua các tín hiệu ngắt.- Sử dụng
tee --help
để xem tất cả các tùy chọn có sẵn.
FILE_NAMES
– Một hoặc nhiều tệp. Mỗi dữ liệu đầu ra được ghi vào.
Cách sử dụng lệnh tee
Cách sử dụng cơ bản nhất của lệnh tee
là hiển thị đầu ra tiêu chuẩn ( stdout
) của một chương trình và ghi nó vào một tệp.
Trong ví dụ sau, chúng ta đang sử dụng df
lệnh để lấy thông tin về dung lượng ổ đĩa có sẵn trên hệ thống tệp. Đầu ra được chuyển tới lệnh tee
, lệnh này sẽ hiển thị đầu ra tới thiết bị đầu cuối và ghi cùng một thông tin vào tệp disk_usage.txt
.
df -h | tee disk_usage.txt
Filesystem Size Used Avail Use% Mounted on dev 7.8G 0 7.8G 0% /dev run 7.9G 1.8M 7.9G 1% /run /dev/nvme0n1p3 212G 159G 43G 79% / tmpfs 7.9G 357M 7.5G 5% /dev/shm tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup tmpfs 7.9G 15M 7.9G 1% /tmp /dev/nvme0n1p1 511M 107M 405M 21% /boot /dev/sda1 459G 165G 271G 38% /data tmpfs 1.6G 16K 1.6G 1% /run/user/120
Bạn có thể xem nội dung của disk_usage.txt
tệp bằng lệnh cat .
Ghi vào nhiều tệp
Các lệnh tee
cũng có thể viết thư cho nhiều file. Để làm như vậy, hãy chỉ định danh sách các tệp được phân tách bằng dấu cách làm đối số:
command | tee file1.out file2.out file3.out
Nối vào tệp
Theo mặc định, lệnh tee
sẽ ghi đè lên tệp được chỉ định. Sử dụng tùy chọn -a
( --append
) để nối đầu ra vào tệp :
command | tee -a file.out
Bỏ qua các đoạn ngắt
Để bỏ qua các ngắt, hãy sử dụng tùy chọn -i
( --ignore-interrupts
). Điều này hữu ích khi dừng lệnh trong khi thực hiện với CTRL+C
và muốn tee
thoát một cách duyên dáng.
command | tee -i file.out
Ẩn đầu ra
Nếu bạn không muốn tee
ghi vào stdout, bạn có thể chuyển hướng nó đến /dev/null
:
command | tee file.out >/dev/null
Sử dụng tee trong Liên kết với sudo
Giả sử bạn muốn ghi vào một tệp thuộc quyền sở hữu của root với tư cách là người dùng sudo. Lệnh sau sẽ không thành công vì chuyển hướng đầu ra không được thực hiện bởi sudo. Việc chuyển hướng được thực hiện với tư cách là người dùng không có đặc quyền.
sudo echo "newline" > /etc/file.conf
Đầu ra sẽ giống như sau:
bash: /etc/file.conf: Permission denied
Chỉ cần thêm sudo
trước lệnh tee
như hình dưới đây:
echo "newline" | sudo tee -a /etc/file.conf
tee
sẽ nhận đầu ra của lệnh echo , nâng cấp lên quyền sudo và ghi vào tệp.
Sử dụng tee
kết hợp với sudo
cho phép bạn ghi vào các tệp do người dùng khác sở hữu.
Phần kết luận
Các lệnh tee
đọc từ đầu vào tiêu chuẩn và viết nó vào đầu ra tiêu chuẩn và một quặng nhiều file.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại bình luận.