Když na terminálu spouštíte základní příkazy, výstup je obvykle vytištěn na terminál, tj. standardní výstup. Ale co kdybyste mohli také uložit výstup do souboru a vytisknout jej na standardní výstup? To je to, co dělá příkaz tee. Linuxový příkaz tee čte ze stdin ( standardní vstup ) a poté zapisuje do stdout ( standardní výstup ) a také do souboru nebo více souborů.
Základní syntaxe příkazu tee
Příkaz tee má následující syntaxi.
příkaz $ | tee [ možnosti ] soubor(y)
Ukažme si nyní několik příkladů použití příkazu tee.
Základní použití příkazu tee
Předpokládejme, že chceme vytisknout paměť a vyměnit využití pomocí free a uložte výstup do souboru s názvem memory_usage.txt . Příkaz tee by byl vyvolán následovně.
$ free -h | tee memory_usage.txt
Příkaz tee čte z příkazu a výstup uloží do memory_usage.txt soubor a poté jej vytiskne na standardní výstup.
Pro potvrzení byl výstup uložen do memory_usage.txt spusťte příkaz cat podle obrázku.
$ cat memory_usage.txt
Zapište výstup do více souborů
Kromě toho můžete výstup uložit do více souborů, jak je znázorněno
příkaz $ | tee [ možnosti ] soubor1 soubor2 …
V níže uvedeném příkazu zadejte řetězec „Hey, Welcome to Linux“ je uložen ve dvou textových souborech:file1.txt a soubor2.txt
$ echo Hey, Welcome to Linux | tee file1.txt file2.txt
Připojit obsah k souboru
Obvykle příkaz tee přepíše soubor, a to není vždy žádoucí, protože může vymazat existující data, která jsou klíčová. Naštěstí můžete použít -a možnost připojit text k souboru. Pojďme to otestovat.
Nejprve napíšeme výstup uptime do stats.txt soubor podle obrázku.
Doba provozu $ | tee stats.txt
Použijte kočku příkaz k ověření.
$ cat stats.txt
Dále připojíme výstup free -h příkaz, který vytiskne naši paměť a využití swapu do souboru.
$ free -h | tee -a stats.txt
Ještě jednou ověřte obsah stats.txt soubor. Tentokrát bude soubor obsahovat výstup dvou příkazů, jak je uvedeno na obrázku níže. Je to proto, že jsme přidali výstup free -h do stats.txt a proto stávající text nebyl ovlivněn.
Potlačit výstup příkazu tee
Pokud si nepřejete mít výstup z tee příkaz vytištěný na standardní výstup, můžete jej přesměrovat na /dev/null což je speciální zařízení, které zahazuje informace, které jsou do něj přiváděny.
Vezměte si příklad níže, kde tiskneme výstup df -Th příkaz do textového souboru, ale potlačení výstupu na terminálu.
$ df -Th | tee disk_usage.txt >/dev/null
Nechte příkaz tee ignorovat přerušení
Někdy můžete chtít zastavit příkaz, který nepřetržitě běží. Když k tomu dojde, můžete zvážit, zda příkaz tee elegantně ukončit i po přerušení programu. Chcete-li to provést, použijte -i nebo –ignore-interrupts možnost uvedená v zobrazené syntaxi.
příkaz $ | tee -i název_souboru
Níže uvedený příkaz ping nepřetržitě odesílá požadavky ping na DNS společnosti Google (8.8.8.8). Příkaz jsme přerušili po 4 po sobě jdoucích požadavcích ping. Pro tričko příkaz k elegantnímu ukončení vyvolejte -i možnost.
$ ping 8.8.8.8 | tee -i ping_stats.txt
Bez -i možnost, výstup a souhrn statistiky se nevytisknou.
Použijte příkaz tee se sudo
Když upravujete soubory vlastněné uživatelem root nebo jiným přihlášeným uživatelem, jednoduché použití příkazu tee bez vyvolání příkazu sudo způsobí chybu.
V níže uvedeném příkladu vytváříme nové úložiště s názvem anydesk-stable.list pro aplikaci AnyDesk v /etc/apt/sources.list.d cesta, která je rezervou pro uživatele root.
$ echo "deb http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list
Podle očekávání jsme narazili na chybu „oprávnění odepřena“, protože nemáme oprávnění k vytvoření nebo úpravě souboru v této cestě.
Řešením je předcházet tee pomocí příkazu sudo, jak je znázorněno.
$ echo "deb http://deb.anydesk.com/ all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list
Při této příležitosti je příkaz úspěšný po umístění sudo před tee.
Získejte pomoc s příkazem tee
Chcete-li získat další možnosti příkazů a pomoc při používání příkazu tee, spusťte příkaz níže.
$ tee --help
Kromě toho prozkoumejte manuálové stránky podle obrázku
$ man tee
Chcete-li zkontrolovat verzi, spusťte:
$ tee --version
Shrnutí
To je vše o linuxovém příkazu tee. Je pozoruhodné, že příkaz čte ze standardního vstupu ( stdin ) a poté zapisuje do standardního výstupu ( stdout ) a souborů.