Polecenie tee w systemie Linux jest czymś, co naprawdę warto znać, jeśli pracujesz z terminalem i potokami. Moim zdaniem to jedno z tych narzędzi, które na początku wydaje się niepozorne, a potem nagle okazuje się nieocenione w codziennej pracy. Tee pobiera dane ze standardowego wejścia i przekazuje je jednocześnie dalej do standardowego wyjścia oraz do wskazanych plików. Dzięki temu możesz np. przetwarzać dane w potoku, a przy okazji zapisać gdzieś kopię na później, co bywa przydatne przy debugowaniu albo archiwizacji wyników. Przykładowo, możesz użyć polecenia ls -l | tee lista.txt, żeby wyświetlić zawartość katalogu na ekranie i jednocześnie zapisać ją do pliku lista.txt. Z mojego doświadczenia, tee przydaje się także w automatyzacji, na przykład w skryptach backupowych czy testowych. Warto pamiętać, że tee domyślnie nadpisuje pliki, ale można dodać opcję -a, żeby dane były dopisywane. To jest zgodne z filozofią UNIXa: robić jedną rzecz dobrze i umożliwiać współpracę narzędzi poprzez strumienie. Przy pracy z dużymi systemami, gdzie ważne jest logowanie i jednoczesne monitorowanie procesów, tee po prostu ratuje sytuację. Takie podejście promuje przejrzystość i łatwość śledzenia, co w branży IT jest ogromną zaletą.
Polecenie tee bywa czasem mylone z innymi narzędziami konsolowymi ze względu na podobieństwo nazw albo skojarzenia z funkcjami pokrewnymi, np. z wyświetlaniem czy zapisem plików. W rzeczywistości jednak tee nie służy ani do przeglądania plików w formie drzewa katalogów, ani do zwykłego podglądu zawartości plików tekstowych. Do takich celów wykorzystuje się raczej narzędzia jak tree – ono pozwala wizualizować strukturę katalogów w formie drzewa, co jest przydatne przy analizie organizacji plików, ale nie ma nic wspólnego z przekierowywaniem strumieni. Z kolei cat albo less, czasem nawet more, to typowe wybory do wyświetlania zawartości pliku tekstowego – te narzędzia czytają plik i wyświetlają jego treść, nie operują natomiast na strumieniach w taki sposób, żeby jednocześnie przesyłać dane dalej i zapisywać je do kilku miejsc. Wśród typowych błędów znajduje się przekonanie, że tee zawsze zapisuje pliki do katalogu /home – to nieprawda, bo ścieżkę pliku podajesz dowolnie, zgodnie z uprawnieniami użytkownika i zamysłem polecenia. Mylenie tee z zapisem pliku do konkretnej lokalizacji wynika często z tego, że przykłady w tutorialach operują na katalogu domowym. W rzeczywistości tee jest narzędziem do manipulowania strumieniami – przekazuje dane dalej w potoku (np. do kolejnego programu) i jednocześnie zapisuje te same dane do pliku (lub wielu plików), które wskazujesz jako argumenty. Pozwala to logować wszystko, co przechodzi przez potok, nie tracąc kontroli nad bieżącą transmisją danych. Z mojego doświadczenia wielu początkujących programistów myli te kwestie, bo nie rozumie fundamentalnych zasad działania potoków i przekierowań w Linuxie. Warto więc zapamiętać: tee jest niezastąpione tam, gdzie potrzebujesz zarówno kontynuować działanie potoku, jak i uzyskać kopię przesyłanych danych.