Úvod
Když uživatel provede příkaz v interaktivním prostředí Linuxu, výstup se zobrazí v textovém terminálu. Existují však způsoby, jak toto chování změnit pomocí dalších příkazů shellu zapojených do potrubí.
V tomto tutoriálu se naučíte, jak používat příkaz tee v Linuxu ke správě výstupu příkazu.
Předpoklady
- Systém se systémem Linux
- Přístup k příkazovému řádku nebo terminálu
- Oprávnění sudo
Co dělá tee Command v Linuxu?
tee příkaz čte standardní vstup (stdin) a zapisuje jej jak na standardní výstup (stdout), tak na jeden nebo více souborů. tee je obvykle součástí kanálu a může mu předcházet nebo následovat libovolný počet příkazů.
Příkazy tee v Linuxu s příklady
tee příkaz se používá samostatně nebo s dalšími možnostmi. V následujících částech jsou uvedeny dostupné možnosti a příklady použití příkazů.
Základní použití
Základní syntaxe pro tee příkaz je:
[command] | tee [options] [filename]
Níže uvedený příklad ukazuje použití tee k vytvoření souboru, který ukládá informace o síťovém rozhraní a zároveň poskytuje stejný výstup v terminálu:
Příkaz cat potvrzuje, že tee úspěšně zapsal výstup ifconfig do souboru example.txt :
Pokud soubor použitý pro příkaz již existuje, tee přepíše předchozí obsah souboru.
Přidat k danému souboru
Přepsání obsahu souboru je výchozí chování tee příkaz. Použijte argument -a (nebo --append ), chcete-li přidat výstup příkazu na konec souboru.
[command] | tee -a [filename]
Použijte například echo příkaz k připojení řádku textu k souboru:
Úspěšné přidání potvrďte pomocí cat příkaz:
Zápis do více souborů
Použijte tee následovaný libovolným počtem souborů pro zápis stejného výstupu do každého z nich:
[command] | tee [options] [filename1] [filename2]...
Níže uvedený příklad ukazuje zápis výstupu echo příkaz do dvou souborů:
ls příkaz ukazuje, že tee úspěšně vytvořené soubory example1.txt a example2.txt .
Skrýt výstup
Chcete-li říct tee pro uložení výstupu příkazu do souboru a přeskočení výstupu z terminálu použijte následující syntaxi:
[command] | tee [options] [filename] >/dev/null
V níže uvedeném příkladu tee vytvoří soubor obsahující data síťového rozhraní, přičemž přeskočí standardní výstup:
Přesměrovat výstup jednoho příkazu na druhý
tee nemusí být posledním příkazem v potrubí. Použijte jej k předání výstupu jinému příkazu:
[command] | tee [options] [filename] | [command]
V následujícím příkladu tee ukládá výstup ls do example.txt a předá obsah tohoto souboru příkazu grep, který najde a zobrazí všechny výskyty slova „example“:
Ignorovat přerušení
Chcete-li povolit tee pro správné ukončení i po přerušení předchozího příkazu přidejte argument -i (nebo --ignore-interrupts ):
[command] | tee -i [filename]
Další příklad ukazuje tee zápis výstupu z příkazu ping a úspěšné dokončení akce i po ping je přerušeno pomocí Ctrl+C :
Používání tee se sudem
Chcete-li povolit tee chcete-li zapisovat do souboru vlastněného rootem nebo do souboru, který patří jinému uživateli, umístěte příkaz sudo přímo před tee .
[command] | sudo tee [options] [filename]
Níže uvedený příklad ukazuje neúspěšný pokus o zápis do sudoex.txt vlastněného rootem . Když sudo je přidán příkaz, operace se dokončí:
Použití tee v editoru Vim
Pokud otevřete a upravíte soubor vlastněný root ve Vimu bez použití sudo při pokusu o uložení změn dojde k chybě:
Chcete-li tuto chybu přepsat, zadejte do Vim následující:
:w !sudo tee %
Po zadání sudo heslo, Vim zobrazí varování, ale zapíše změny do souboru.
Diagnostika chyb při zápisu do jiných kanálů
Chcete-li poučit tee k vytištění chybové zprávy, když proces selže, použijte -p argument:
[command] | tee -p [filename]
Výchozí akce tee -p je ukončit a vytisknout chybovou zprávu ihned po zjištění chyby zápisu do roury. Chcete-li změnit chování příkazu při chybě zápisu, použijte --output-error argument, za nímž následuje režim určující chování:
[command] | tee --output-error=[mode] [filename] Existují čtyři možné režimy:
warn– diagnostikuje chyby zápisu do libovolného výstupu.warn-nopipe– diagnostikuje chyby zápisu na jakýkoli výstup mimo potrubí.exit– ukončí se při chybovém zápisu na jakýkoli výstup.exit-nopipe– ukončí se při chybovém zápisu na jakýkoli výstup bez potrubí.
Použijte příkaz tee se skriptem Bash
tee příkaz se často nachází v bash skriptech. Zvažte následující příklad:
Výše uvedený skript vytiskne zprávu „Hello World“ a uloží výstup do souboru protokolu. Spuštěním skriptu se vytvoří soubor protokolu v tmp složka. Protokol obsahuje výstup skriptu:
Sledování souborů protokolu
Zápis výstupu skriptu do souboru protokolu se obvykle provádí pomocí > operátor:
./testbash.sh > testbash.log Výše uvedený příkaz vytvoří soubor protokolu, ale nezapíše nic na standardní výstup.
Použijte tee vytvořit soubor protokolu a zobrazit výstup v terminálu:
./testbash.sh | tee testbash.log Viz Nápověda a informace o verzi
Podívejte se na aktuální verzi tee příkaz zadáním:
tee --version
Pokyny týkající se tee syntaxi příkazu a dostupné argumenty, použijte argument nápovědy příkazu:
tee --help