Při práci s terminálem v Linuxu je k dispozici mnoho nástrojů příkazového řádku, které vám usnadní život. Jedním z takových nástrojů je Tee
. V tomto stručném průvodci se na praktických příkladech naučíme, co je Tee a jak se používá příkaz Tee v Linuxu.
Úvod do příkazu Tee
Odpaliště je jednoduchý nástroj příkazového řádku, který přijímá vstup a zapisuje výstup do souboru a standardní výstup (tj. terminál). Příkaz Tee se většinou používá ve skriptech shellu, když chcete přesměrovat výstup do více souborů a dále zpracovávat výstup.
Příkaz Tee je součástí GNU coreutils
, takže je dodáván předinstalovaný se všemi distribucemi Linuxu.
Chcete-li zkontrolovat, zda je příkaz tee dostupný ve vaší distribuci Linuxu, spusťte následující příkaz:
$ which tee /usr/bin/tee
Chcete-li zkontrolovat verzi trička, můžete použít --version
vlajka.
$ tee --version tee (GNU coreutils) 8.32
Zobrazit nápovědu k příkazu tee
Pokud jste nikdy nepoužili příkaz tee, je dobrým zvykem začít sekcí nápovědy k příkazu tee.
Chcete-li se o tomto nástroji dozvědět více, můžete přejít na stránku manuálu pro příkaz tee.
$ man tee
Můžete také předat --help
příkaz argument to tee pro zobrazení manuálu nápovědy.
$ tee --help
Syntaxe příkazu Tee
Typická syntaxe příkazu Tee je uvedena níže:
tričko [MOŽNOST]… [SOUBOR]…
Přijímá příznaky a název souboru, kam bude výstup přesměrován.
Existují dva důležité příznaky, které budete většinou používat s příkazem tee.
-a
,--append
flag :Připojit k souborům.-i
,-ignore-interrupts
příznak :Ignorovat signály přerušení.
Nyní mi dovolte, abych vám ukázal několik příkladů příkazu tee v Linuxu.
Příklady příkazů Linux Tee pro začátečníky
Jak již bylo řečeno, příkaz tee přijme vstup a vytiskne výstup na terminál, stejně jako soubor, který je předán jako argument.
V níže uvedeném příkladu příkaz tee přebírá vstup z echo
a vytiskne výstup do terminálu i do hello.txt
soubor.
$ echo "Welcome to OSTechNix" | tee hello.txt Welcome to OSTechNix
Pojďme zkontrolovat obsah hello.txt
soubor:
$ cat hello.txt Welcome to OSTechNix
Použijte příkaz tee s operátorem Pipe
Příkaz Tee není jen k vytištění standardního vstupu do terminálu a také k jeho přenosu do jiného programu pro další zpracování.
Většinou se příkaz tee bude používat v kombinaci s pipe
(|) operátor ve skriptech shellu.
Podívejte se na níže uvedený příklad.
$ echo "Hello world" | tee hello.txt | rev dlrow olleH
$ cat hello.txt Hello world
Dovolte mi vysvětlit, co se stane, když spustíte výše uvedený příkaz.
echo
příkaz odešle svůj výstup"Hello World"
jako vstup dotee
příkaz přes potrubí.Tee
příkaz uloží výstup do daného souboruhello.txt
.- Namísto tisku výstupu na terminál, což je výchozí chování,
tee
příkaz pass"Hello World"
řetězec jako vstup dorev
příkaz, který vytiskne řetězec v opačném pořadí .
Zde je další příklad.
Následující příkaz vytvoří adresář s názvem "ostechnix", spočítá počet znaků v "ostechnix" a vytiskne "ostechnix" do terminálu:
$ echo "ostechnix" | tee >(xargs mkdir) >(wc -c)
Pozor: Možná budete muset použít sudo
s tee
Pokud vytváříte soubory v adresářích, ke kterým nemáte přístup jako běžný uživatel.
Předání více souborů
Příkaz Tee také přijímá více souborů jako argumenty a ukládá výstup do každého souboru.
$ echo "Welcome to OSTechNix" | tee hello1.txt hello2.txt hello3.txt Welcome to OSTechNix
Pojďme zkontrolovat obsah každého souboru:
$ cat hello1.txt
Welcome to OSTechNix
$ cat hello2.txt
Welcome to OSTechNix
$ cat hello3.txt
Welcome to OSTechNix
Přepsat versus přidat
Výchozí chování tee
příkaz je, že vyhledá, zda je soubor již dostupný, a přepíše data novým. Pokud soubor není k dispozici, vytvoří se.
Pokud chcete data místo přepsání připojit, použijte -a
nebo --append
vlajka.
$ cat hello1.txt Welcome to OSTechNix
$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt I am using PoP_OS Cosmic Desktop
$ cat hello1.txt Welcome to OSTechNix I am using PoP_OS Cosmic Desktop
Kombinace Tee s operátorem Redirection
Pokud si nepřejete tisknout výstup na terminál, ale pouze zapisovat výstup do souborů, můžete pak kombinovat operátor přesměrování s příkazem tee.
Toto je ideální případ pouze v případě, že příkaz tee přichází na řadu jako poslední. Je-li výstup T přesouván do jiného příkazu, jako je as
v prvním příkladu není potřeba používat operátor přesměrování.
$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt &> /dev/null
Signály přerušení
Příkaz Tee má možnost přerušit SIGINT pomocí -i
nebo --ignore-interrupts
vlajka.
Význam - pokud stisknete CTRL + C
ve vašem terminálu, zatímco spouštíte příkaz tee s -i
flag, příkaz tee přeruší signál a provede elegantní odchod načtením EOF z PIPE.
$ { echo Hello world;sleep 10; } | tee -i hello1.txt
Hello world
^C
$ cat hello1.txt
Hello world
Shrnutí
Tee je jednoduchý program, který nemusíte používat denně. Znalost příkazu tee se vám však bude hodit při psaní shellových skriptů. Doufám, že to pomůže.