Làm rõ một chút về lý do tại sao tùy chọn tee là thích hợp hơn
Giả sử bạn có quyền thích hợp để thực thi lệnh tạo đầu ra, nếu bạn chuyển đầu ra của lệnh thành tee, bạn chỉ cần nâng cao quyền riêng tư của tee bằng sudo và tee trực tiếp để ghi (hoặc nối thêm) vào tệp đang đề cập.
trong ví dụ được đưa ra trong câu hỏi có nghĩa là:
ls -hal /root/ | sudo tee /root/test.out
cho một vài ví dụ thực tế hơn:
# kill off one source of annoying advertisements
echo 127.0.0.1 ad.doubleclick.net | sudo tee -a /etc/hosts
# configure eth4 to come up on boot, set IP and netmask (centos 6.4)
echo -e "ONBOOT=\"YES\"\nIPADDR=10.42.84.168\nPREFIX=24" | sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eth4
Trong mỗi ví dụ này, bạn đang lấy đầu ra của một lệnh không có đặc quyền và ghi vào một tệp thường chỉ có thể ghi được bằng root, đó là nguồn gốc của câu hỏi của bạn.
Đó là một ý tưởng tốt để làm theo cách này bởi vì lệnh tạo đầu ra không được thực thi với các đặc quyền nâng cao. Điều này dường như không quan trọng ở đây echo
nhưng khi lệnh nguồn là một tập lệnh mà bạn không hoàn toàn tin tưởng, thì điều đó rất quan trọng.
Lưu ý rằng bạn có thể sử dụng tùy chọn -a để phát bóng để nối thêm (thích >>
) vào tệp đích thay vì ghi đè lên (như >
).