Baik. Jika saya ingin mengarahkan output suatu program ke file, saya akan melakukan sesuatu seperti ini
prog > file
Jika saya ingin mengarahkan stdout dan stderr ke file itu, maka saya akan melakukannya
prog > file 2>&1
Ini semua baik dan bagus jika Anda ingin output masuk ke file. Tetapi bagaimana jika Anda ingin output untuk pergi ke file dan masih pergi ke stdout / stderr? Jadi, output disimpan dalam file, tetapi Anda masih bisa melihatnya di konsol saat program sedang berjalan. Apakah ada cara untuk melakukan itu? Dan jika demikian, bagaimana?
shell
io-redirection
Jonathan M Davis
sumber
sumber
stdout
adalah file-deskriptor 1, danfoo > some_file
berarti deskriptor file tulis saja yang dibukasome_file
adalah foo's stdout. stdout selalu pergi ke stdout.Jawaban:
tee
ada untuk tujuan ini; dibutuhkan argumen nama file dan menulis data yang dibaca dari stdin ke stdout dan file:sumber
prog |& tee file
.prog |& tee /dev/tty > file
, yang dapat berguna di tengah-tengah jalur pipa, misalnyafoo |& tee /dev/tty | sed 's/.*\r//' > foo.log
untuk melihat pembaruan progres baris-status pada terminal Anda, tetapi memfilternya dari file log. Atau gunakan untuk men-debug pipa yang sedang diretas bersama dengan membiarkan Anda melihat data pada saat itu.