Klarifikasi sedikit tentang mengapa opsi tee lebih disukai
Dengan asumsi Anda memiliki izin yang sesuai untuk mengeksekusi perintah yang menciptakan output, jika Anda mengirimkan output dari perintah Anda ke tee, Anda hanya perlu meninggikan hak istimewa tee dengan sudo dan tee langsung untuk menulis (atau menambahkan) ke file yang dimaksud.
dalam contoh yang diberikan dalam pertanyaan yang berarti:
ls -hal /root/ | sudo tee /root/test.out
untuk beberapa contoh yang lebih praktis:
# 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
Dalam setiap contoh ini, Anda mengambil output dari perintah yang tidak diistimewakan dan menulis ke file yang biasanya hanya dapat ditulis oleh root, yang merupakan asal dari pertanyaan Anda.
Ini adalah ide yang baik untuk melakukannya dengan cara ini karena perintah yang menghasilkan output tidak dieksekusi dengan privilege yang ditinggikan. Tampaknya tidak masalah di sini, echo
tetapi ketika perintah sumber adalah sebuah skrip yang tidak Anda percayai sepenuhnya, itu penting.
Catatan Anda dapat menggunakan opsi -a untuk tee untuk menambahkan append (suka >>
) ke file target daripada menimpanya (seperti >
).