Příkaz tee čte ze standardního vstupu a zapisuje jak na standardní výstup, tak do souborů.
Výsledkem je, že uvidíte výstup svého příkazu a zároveň jej uložíte do souboru.
Jinými slovy, máte jeden vstup, který je nasměrován na dva výstupy.
To vše dává větší smysl, pokud jste obeznámeni s konceptem přesměrování v Linuxu.
Příkaz je pojmenován podle T konektoru používaného v elektroenergetice, instalatérství a dalších průmyslových odvětvích. Říká se jim tee, protože připomínají písmeno „T“.
Nyní, když rozumíte účelu příkazu tee, pojďme se podívat, jak příkaz tee používat v Linuxu.
Příklady příkazů Tee
Příkaz tee má jednoduchou syntaxi:
tee [OPTION] [FILE]
Pamatujte, že tee čte ze standardního vstupu, takže jej téměř vždy použijete při konjugaci s jiným příkazem.
Dovolte mi ukázat vám několik příkladů.
1. Zobrazte výstup příkazu a uložte jej do souboru
Vezměme si základní případ, kdy chcete spočítat počet řádků v souboru. Chcete vidět, kolik řádků je v souboru, a uložit toto číslo do jiného souboru.
[email protected]:~$ wc -l agatha.txt | tee count.txt
20 agatha.txt
Počet souborů neexistuje, takže se vytvoří nový soubor s názvem count. Pokud vidíte obsah počtu souborů, uvidíte stejný výstup, jaký jste viděli na displeji.
[email protected]:~$ cat count.txt
20 agatha.txt
Poznámka:Ve výchozím nastavení příkaz tee přepíše obsah souboru. Pokud chcete, můžete s ním použít volbu append -a:
wc -l agatha.txt | tee -a count.txt
2. Zobrazit výstup příkazu a uložit jej do více souborů
Pokud chcete uložit výstup příkazu do více souborů, můžete to udělat také pomocí příkazu tee. Stačí zadat soubory.
[email protected]:$ wc -l agatha.txt | tee count1.txt count2.txt
20 agatha.txt
Můžete ověřit, že stejný výstup byl uložen ve dvou zmíněných souborech.
[email protected]:~$ cat count1.txt count2.txt
20 agatha.txt
20 agatha.txt
Doufám, že jste věděli, že v Linuxu můžete vidět více souborů společně s příkazem cat.
3. Analyzujte výstup příkazu na jiný příkaz a zároveň jej ukládejte do souboru
Nemusíte vždy vidět výstup příkazu. Protože se jedná o standardní výstup, můžete jej převést na jiný příkaz.
Vezměte si například příkaz níže.
[email protected]:~$ ls -l | tee count.txt | wc -l
7
Zde se stane, že výstup příkazu ‚ls -l‘ je přesměrován do příkazu tee. Nyní příkaz tee ukládá výstup ‚ls -l‘ do souboru count.txt, ale místo zobrazení tohoto výstupu je přesměrován do příkazu ‚wc -l‘, který počítá počet řádků.
Výstup, který vidíte v tomto případě, je výstup příkazu „wc -l“. Výstup příkazu ‚ls -l‘ je uložen v souboru count.txt.
[email protected]:~$ cat count.txt
total 20
-r--r--r-- 1 abhishek abhishek 456 Dec 11 21:29 agatha.txt
-rw-r--r-- 1 abhishek abhishek 0 Jan 10 16:03 count.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 17 11:39 file1.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 17 09:59 file2.txt
-rw-r--r-- 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
drwxr-xr-x 3 abhishek abhishek 4096 Jan 4 20:10 target
Závěr
Použití povelu tee je opravdu na vaší fantazii a vaší situaci. Připadá mi to užitečné, když musím analyzovat zdlouhavý výstup, jako je soubor protokolu. Vidět to v reálném čase a uložit do souboru pro budoucí použití trochu pomáhá a šetří mi čas.
Doufám, že se vám líbily příklady příkazů tee, které jsem zde uvedl. Pokud vás napadá nějaký opravdu úžasný způsob použití tohoto příkazu, podělte se o něj s námi ostatními v sekci komentářů.