$ program [arguments...] 2>&1 | tee outfile
2>&1
stderr ve stdout akışlarını atar.
tee outfile
aldığı akışı alıp ekrana ve "outfile" dosyasına yazar.
Muhtemelen çoğu insan budur. Muhtemel durum, bazı programların veya senaryoların uzun süre çok çalışıp çok fazla çıktı üretmesidir. Kullanıcı ilerleme için periyodik olarak kontrol etmek ister, aynı zamanda çıktı bir dosyaya yazılmasını ister.
Sorun (özellikle stdout ve stderr akışlarını karıştırırken) program tarafından akan akışlara güvenilmesidir. Örneğin, Stdout'a tüm yazma edilir ise değil kızardı, ama stderr'e tüm yazıyor olan kızardı, sonra da çıkış dosyasında ve ekrandaki kronolojik sırayla dışarı bitireceğiz.
Program ilerleme durumunu bildirmek için her birkaç dakikada bir yalnızca 1 veya 2 satır çıkarıyorsa kötüdür. Böyle bir durumda, çıktı program tarafından temizlenmezse, kullanıcı saatlerce ekranda herhangi bir çıktı görmez, çünkü hiçbiri saatlerce borudan itilmez.
Güncelleme: Paketin bir unbuffer
parçası olan program , expect
arabelleğe alma sorununu çözecektir. Bu, stdout ve stderr'in ekrana ve dosyaya hemen yazmasına ve birleştirilip yönlendirildiklerinde senkronize kalmasına neden olur tee
. Örneğin:
$ unbuffer program [arguments...] 2>&1 | tee outfile