GNU/Linux >> Znalost Linux >  >> Linux

8 Linux Tee Command s příklady

Linuxový příkaz tee se používá pro řetězení a přesměrování úloh, výstup a/nebo chyby můžete přesměrovat do souboru a na terminálu se nezobrazí. Podobně při použití řetězení lze výstup jednoho příkazu zadat jako vstup pro druhý příkaz a dále pro třetí příkaz atd., ale jakmile výstup přesměrujete do souboru, nemůžete jej zřetězit s jinými příkazy.

Linux tee lze použít k dosažení obou těchto výsledků společně, tj. uložit výsledek do souboru a zřetězení stejného výstupu do jiného příkazu.

V tomto tutoriálu probereme, jak používat Linux tee s několika příklady.

Syntaxe příkazu Tee

Příkaz tee v podstatě čte ze standardního vstupu a zapisuje na standardní výstup a soubory. Následuje syntaxe příkazu:

$ command | tee [OPTION]... [FILE]...

Následující příklady by nám měly poskytnout lepší představu o tom, jak příkaz funguje.

1) Jak zapisovat na standardní výstup a soubor

Chcete-li zapisovat na standardní výstup a soubor, použijte tee za svislou čarou a zadejte soubor.

$ sudo ls /home/smart | tee folders_of_smart.txt

Nyní můžeme přejít na folders_of_smart.txt a zobrazit obsah souboru zadáním příkazu níže.

$ sudo nano folders_of_smart.txt
  Output:
  folders_of_smart.txt
  foo.txt
  output.txt
  rootlisting.txt

2) Jak zapisovat do souboru a připojovat výstup

Pro připojení výstupu k existujícímu souboru použijeme -a možnost.

$ sudo echo 'Movies' | tee -a folders_of_smart.txt

Nyní můžeme přejít na folders_of_smart.txt a zobrazit obsah souboru zadáním příkazu níže.

$ sudo nano folders_of_smart.txt
  Output:
  folders_of_smart.txt
  foo.txt
  output.txt
  rootlisting.txt
  Movies

3) Jak zapisovat do více souborů

Chcete-li zapisovat do více souborů, stačí uvést jejich názvy v příkazovém řádku.

$ sudo ping facebook.com | tee output1.txt output2.txt output3.txt

Nyní můžeme přejít na output1.txt , output2.txt a zobrazit obsah souboru zadáním příkazu níže.

$ sudo nano output1.txt
$ sudo nano output2.txt
  Output:
  PING facebook.com(edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de)) 5$
  64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$
  64 bytes from edge-star-mini6-shv-02-dfw5.facebook.com (2a03:2880:f134:183:face:b00c:0:25de): icmp_$

4) Jak přesměrovat výstup jednoho příkazu na jiný

Výstup můžeme také předat jako vstup dalším příkazům. Například následující příkaz neuvede všechny názvy složek v folders_of_smart.txt ale seznam přes grep ^o příkaz složku začínající písmenem o.

$ sudo ls /home/smart | tee folders_of_smart.txt | grep ^o
  output:
  output1.txt
  output2.txt
  output3.txt
  output.txt

Dalším příkladem je seznam /etc adresářů a poté je výstup uložen do souboru s názvem stage1.txt , Tento výstup je filtrován příkazem grep pro řádky začínající písmenem i. Tento filtrovaný výstup je uložen v souboru stage2.txt .

Nakonec je filtrovaný výstup zpětně tříděn pomocí sort -r příkaz. Tento konečný výstup se zobrazí na terminálu.

$ ls /etc | tee stage1.txt | grep ^i | tee stage2.txt | sort -r
  output:
  issue.net
  issue
  iscsi
  iproute2
  inputrc
  initramfs-tools
  init.d
  init

5) Jak sledovat soubory protokolu a zapisovat do souboru

Můžeme analyzovat HTTP2 provoz procházející přes apache2 server pomocí tee příkaz, Živé protokoly lze streamovat na standardní výstup a také zapisovat do souboru pro pozdější analýzu.

$ sudo tail -f /var/log/apache2/access.log | grep --line-buffered "HTTP/2.0" | tee -a http2.log

6) Jak zapisovat do privilegovaného souboru pomocí tee

Když chceme zapisovat do souboru vlastněného root jako folder_of_root.txt , použijeme sudo před tee příkaz jako v příkladu níže.

$ sudo echo 'Documents' | sudo tee -a folder_of_root.txt

Budeme požádáni o heslo uživatele root, zadejte heslo uživatele root a změny se uloží do folder_of_root.txt .

7) Jak používat příkaz tee se skriptem Python

Můžeme použít tee příkaz se skriptem python pro uložení výstupu do souboru a zobrazení výstupu na obrazovce, Nejprve napíšeme skript python pro výpočet plochy kruhu, jak je uvedeno níže, a uložíme jej do area.py soubor.

    # -*- coding: utf-8 -*-
    """This script calculate the area of circle"""
    from math import pi as pi
    from math import ceil as ceil

    radius = 2.5

    area = pi * radius**2

    print('The area of circle is', ceil(area))

Změníme hodnotu poloměru a výstup připojíme do area.txt .

$ python area.py | tee -a area.txt
    Output
    ('The area of circle is for radius 2', 13.0)
    ('The area of circle is for radius 2.5', 20.0)
    ('The area of circle is for radius 3', 29.0)
    ('The area of circle is for radius 3.5', 39.0)

8) Jak používat příkaz tee se skriptem Bash

Můžeme použít tee příkaz se skriptem bash pro uložení výstupu do souboru a zobrazení výstupu na obrazovce, Nejprve napíšeme skript bash pro zobrazení výstupu těchto příkazů pwd , ls a $HOME jak je uvedeno níže a uložte jej do bash.txt soubor.

    #!/bin/bash
    echo "`pwd`";
    echo "`ls`";
    echo "$HOME";
$ ./bash.txt | tee smart.txt
    Output
    /media/disk
    bash.txt
    flask.pdf
    smart.py
    smart.txt
    VirtualBox-5.2-5.2.14_123301_el6-1.x86_64.rpm
    /home/smart

Příkaz tee je velmi úžasný nástroj, můžeme číst standardní vstup a zapisovat jej jak do standardního výstupu, tak do jednoho nebo více souborů.

Přečtěte si také:

  • Jak používat Linux Tr Command s příklady

Linux
  1. Linux Tee Command s příklady

  2. JQ Command v Linuxu s příklady

  3. Příklady příkazů dd v Linuxu

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. Příklady příkazů tee v Linuxu

  1. Jak používat Linux Cat Command (s příklady)

  2. Echo Command v Linuxu (s příklady)

  3. man Command v Linuxu s příklady